Threading: Antworten (reply_to) + Focus-View

- entry: reply_to/reply_count/last_activity; reply_count bubbelt bis Root
- Hauptfeed nur Roots nach last_activity, Profil-Feed inkl. Antworten
- GET /entry/{pid}/thread (Ahnen+Antworten), GET /e/{pid} Focus-Seite
- Frontend: Antworten-Link im Feed, entry.html/entry.js Focus-Seite
- notes/migrations.md: ALTER TABLE fuer Prod

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-03 12:21:55 +02:00
parent 844bbb44e7
commit ba085eff4e
8 changed files with 377 additions and 37 deletions
+4
View File
@@ -40,6 +40,9 @@ function renderEntry(e) {
media = `<img src="/${e.filepath}" alt="" loading="lazy">`;
}
const replyLabel =
e.reply_count === 1 ? "1 Antwort" : `${e.reply_count} Antworten`;
el.innerHTML = `
<div class="muted"><a href="/u/${user}">${escapeHtml(e.username)}</a> · ${when}</div>
<div class="content">${linkify(e.content)}</div>
@@ -49,6 +52,7 @@ function renderEntry(e) {
<span class="muted"> / </span>
<button class="ghost" data-mode="right">Rechts</button>
</div>
<div class="muted"><a href="/e/${e.pid}">${replyLabel}</a></div>
`;
setupVoting(el, e.pid);
return el;