Kommentare fest inline im Lesemodus (Slide-in-Panel ablösen) #133

Closed
opened 2026-07-19 00:18:34 +02:00 by fable-5 · 1 comment
Collaborator

Ziel

Kommentare werden derzeit nicht im Lesefluss angezeigt, sondern nur über ein ein-/ausblendbares Slide-in-Panel (Icon in der Kopfleiste). Sie sollen im Lesemodus fest inline erscheinen — unterhalb der Backlinks und oberhalb des lokalen Graphen. Anzeige und Eingabe erfolgen an dieser Stelle. Das Slide-in-Panel und sein Kopfleisten-Toggle entfallen.

Reihenfolge im Lesemodus: Artikel → Backlinks → Kommentare → Lokaler Graph.

Bestand (wiederverwenden, nicht neu bauen)

  • Vollständige Kommentar-UI: apps/web/src/comments/CommentsPanel.tsx (Threads, Reply-Composer, Edit/Delete, Resolve) + apps/web/src/comments/use-comments.ts (useComments, unreadCount, markCommentsSeen).
  • Backend komplett: apps/api/src/comments/*, Shared-Typen packages/shared/src/comments.ts (PageCommentsView), MCP add_comment.

Umsetzung

  1. Neue Inline-Sektion apps/web/src/comments/CommentsSection.tsx, die die Darstellungs-/Composer-Logik aus CommentsPanel.tsx wiederverwendet (Panel-Chrome/Slide-in weglassen). Gemeinsame Teile ggf. aus CommentsPanel herauslösen statt duplizieren.
  2. In apps/web/src/pages/PageEditorPage.tsx die Sektion zwischen der BacklinksPanel-Zeile (~L555) und der LocalGraphPanel-Zeile (~L556) als weiteres mode === 'view'-Geschwisterelement einhängen.
  3. Slide-in entfernen: CommentsPanel-Mount in PageEditorPage (~L277-279), showComments-State/Deep-Link-Logik sowie das Comments-Icon in apps/web/src/pages/PageActions.tsx ausbauen. Deep-Link ?comments=1 (aus Benachrichtigungen) weiterhin unterstützen → zur Inline-Sektion scrollen statt Panel öffnen; markCommentsSeen beim Sichtbarwerden.
  4. Öffentliche Ansicht (anonym, read-only): In apps/web/src/pages/PublicPageView.tsx vorhandene Kommentare nur lesend anzeigen. GET /pages/:id/comments verlangt @RequiresPagePermission('read') → für öffentliche Teiche einen anonymen @Public-Lese-Endpoint ergänzen (apps/api/src/public/…, Slug-basiert wie /api/v1/public/:pond/:page/…), der PageCommentsView liefert. Kein anonymes Schreiben.
  5. CSS: Sektions-Styling in apps/web/src/styles/base.css (Abstände analog Backlinks/Graph).
  6. e2e apps/web/e2e/comments.spec.ts anpassen (Panel-Selektoren → Inline-Sektion) + Public-Read-Sichtbarkeit ergänzen.

Akzeptanzkriterien

  • Lesemodus zeigt Kommentare fest inline in der Reihenfolge Backlinks → Kommentare → Graph.
  • Eingeben / Antworten / Resolve funktioniert an dieser Stelle.
  • Kopfleisten-Icon und Slide-in-Panel sind entfernt.
  • ?comments=1 scrollt zur Inline-Sektion.
  • Anonyme /public/…-Ansicht zeigt vorhandene Kommentare read-only, erlaubt kein Schreiben.
  • pnpm lint + betroffene CI-Packs grün.
## Ziel Kommentare werden derzeit **nicht** im Lesefluss angezeigt, sondern nur über ein ein-/ausblendbares Slide-in-Panel (Icon in der Kopfleiste). Sie sollen im **Lesemodus fest inline** erscheinen — **unterhalb der Backlinks und oberhalb des lokalen Graphen**. Anzeige **und** Eingabe erfolgen an dieser Stelle. Das Slide-in-Panel und sein Kopfleisten-Toggle entfallen. Reihenfolge im Lesemodus: **Artikel → Backlinks → Kommentare → Lokaler Graph**. ## Bestand (wiederverwenden, nicht neu bauen) - Vollständige Kommentar-UI: `apps/web/src/comments/CommentsPanel.tsx` (Threads, Reply-Composer, Edit/Delete, Resolve) + `apps/web/src/comments/use-comments.ts` (`useComments`, `unreadCount`, `markCommentsSeen`). - Backend komplett: `apps/api/src/comments/*`, Shared-Typen `packages/shared/src/comments.ts` (`PageCommentsView`), MCP `add_comment`. ## Umsetzung 1. Neue Inline-Sektion `apps/web/src/comments/CommentsSection.tsx`, die die Darstellungs-/Composer-Logik aus `CommentsPanel.tsx` wiederverwendet (Panel-Chrome/Slide-in weglassen). Gemeinsame Teile ggf. aus `CommentsPanel` herauslösen statt duplizieren. 2. In `apps/web/src/pages/PageEditorPage.tsx` die Sektion **zwischen** der `BacklinksPanel`-Zeile (~L555) und der `LocalGraphPanel`-Zeile (~L556) als weiteres `mode === 'view'`-Geschwisterelement einhängen. 3. Slide-in entfernen: `CommentsPanel`-Mount in `PageEditorPage` (~L277-279), `showComments`-State/Deep-Link-Logik sowie das Comments-Icon in `apps/web/src/pages/PageActions.tsx` ausbauen. Deep-Link `?comments=1` (aus Benachrichtigungen) weiterhin unterstützen → zur Inline-Sektion **scrollen** statt Panel öffnen; `markCommentsSeen` beim Sichtbarwerden. 4. **Öffentliche Ansicht (anonym, read-only):** In `apps/web/src/pages/PublicPageView.tsx` vorhandene Kommentare **nur lesend** anzeigen. `GET /pages/:id/comments` verlangt `@RequiresPagePermission('read')` → für öffentliche Teiche einen anonymen `@Public`-Lese-Endpoint ergänzen (`apps/api/src/public/…`, Slug-basiert wie `/api/v1/public/:pond/:page/…`), der `PageCommentsView` liefert. **Kein anonymes Schreiben.** 5. CSS: Sektions-Styling in `apps/web/src/styles/base.css` (Abstände analog Backlinks/Graph). 6. e2e `apps/web/e2e/comments.spec.ts` anpassen (Panel-Selektoren → Inline-Sektion) + Public-Read-Sichtbarkeit ergänzen. ## Akzeptanzkriterien - [ ] Lesemodus zeigt Kommentare fest inline in der Reihenfolge Backlinks → **Kommentare** → Graph. - [ ] Eingeben / Antworten / Resolve funktioniert an dieser Stelle. - [ ] Kopfleisten-Icon und Slide-in-Panel sind entfernt. - [ ] `?comments=1` scrollt zur Inline-Sektion. - [ ] Anonyme `/public/…`-Ansicht zeigt vorhandene Kommentare read-only, erlaubt kein Schreiben. - [ ] `pnpm lint` + betroffene CI-Packs grün.
fable-5 added this to the M17 — Lesemodus-Ausbau milestone 2026-07-19 00:18:34 +02:00
Author
Collaborator

Umgesetzt in f014a61 (+ Test-Typfix a84e988): Kommentare erscheinen fest inline im Lesemodus zwischen Backlinks und lokalem Graph — Anzeige und Eingabe. CommentsPanelCommentsSection (+ Read-only-Variante PublicComments), Slide-in-Panel, Kopfleisten-Toggle und Unread-Badge entfernt; Schreibrecht wird per onWriteAccess aus dem inneren PageEditor hochgereicht; ?comments=1 scrollt zur Sektion. Neuer anonymer Endpoint GET /public/:pond/:page/comments (@Public, read-only, 404-Semantik wie content).

Verifiziert: DB-Tests (public + comments) grün; live auf Test/Int in angemeldeter (Composer) und öffentlicher Ansicht (read-only). Deployt bis 60be198, von Stefan abgenommen.

Umgesetzt in `f014a61` (+ Test-Typfix `a84e988`): Kommentare erscheinen fest inline im Lesemodus zwischen Backlinks und lokalem Graph — Anzeige und Eingabe. `CommentsPanel` → `CommentsSection` (+ Read-only-Variante `PublicComments`), Slide-in-Panel, Kopfleisten-Toggle und Unread-Badge entfernt; Schreibrecht wird per `onWriteAccess` aus dem inneren PageEditor hochgereicht; `?comments=1` scrollt zur Sektion. Neuer anonymer Endpoint `GET /public/:pond/:page/comments` (@Public, read-only, 404-Semantik wie content). Verifiziert: DB-Tests (public + comments) grün; live auf Test/Int in angemeldeter (Composer) und öffentlicher Ansicht (read-only). Deployt bis `60be198`, von Stefan abgenommen.
Sign in to join this conversation.
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stwaidele/dorfteich#133
No description provided.