Kommentare erscheinen jetzt fest im Lesefluss zwischen Backlinks und
lokalem Graph statt in einem ein-/ausblendbaren Panel. Der
Kopfleisten-Toggle (Icon + Unread-Badge) entfällt.
Frontend:
- CommentsPanel → CommentsSection (Inline-Sektion, ohne Panel-Chrome/
Close-Knopf; markiert beim Sichtbarwerden als gelesen). Neue
Read-only-Variante PublicComments für die anonyme öffentliche Ansicht.
- Umzug auf die äußere Ebene in PageEditorPage (view-Modus, zwischen
BacklinksPanel und LocalGraphPanel). Das Schreibrecht (collab rw) wird
per onWriteAccess aus dem inneren PageEditor hochgereicht, damit die
äußere Ebene den Composer bei commentPolicy=editors korrekt zeigt/
verbirgt.
- Deep-Link ?comments=1 scrollt jetzt zur Inline-Sektion statt ein Panel
zu öffnen. Resolve/Unresolve-Knöpfe zusätzlich an mayComment gekoppelt
(früher nur an isRoot) — Leser sehen keine 403-Knöpfe mehr; Read-only
blendet alle Aktions-Controls aus.
- CSS comments-panel* → comments-section*; tote Unread-Badge-Regeln raus.
Backend:
- GET /public/:pondSlug/:pageSlug/comments (@Public), read-only. Nutzt den
vorhandenen resolve()-Pfad (erzwingt ggf. anonymen Lesezugriff → nicht
öffentliche Seiten 404en) und CommentsService.list. PublicModule
importiert CommentsModule.
Tests: public.e2e.db.test.ts um anonymen Kommentar-Lesezugriff + 404-Fälle
ergänzt (grün gegen frische Test-DB); comments.spec.ts auf die Inline-UI
umgestellt. typecheck/lint/i18n:check grün.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155v2aT8AG1kZDQEZiCLBWC
The previous commit's automated edit silently missed the beforeAll block;
the pack still lowered the seeded additional_ponds override to 10, which
CI's accumulated fixture ponds exceed. The pack now relies on the seeded
headroom and reports the create-pond response on failure.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EwZ4jR4KFAPvpjWevfUGX1
The seed already grants fixture users additional_ponds headroom (100);
overriding it down to 10 made pond creation fail in CI, where the
earlier packs' ponds count against the limit. The pack now relies on
the seeded override and reports the create-pond response on failure.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EwZ4jR4KFAPvpjWevfUGX1
The shared fixture pond accumulates grants from earlier packs in the
same CI job, so "fixture-editor is only a reader" did not hold there and
the policy test failed in CI while passing locally. A Site Admin now
lifts fixture-user's additional-pond quota for the run, the pack
provisions a fresh pond and page, and tears both down afterwards; the
policy PATCH is also asserted.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EwZ4jR4KFAPvpjWevfUGX1
New comments panel on the page (toggle next to attachments, unread badge
counting comments newer than the last localStorage-recorded visit):
threaded display with relative times and author names, a Markdown
composer with hints, edit/delete for authors, resolve moving threads
into a collapsed resolved <details> section with reopen, and a
permission-aware composer — hidden with a hint when the pond's policy
bars the viewer (readers always see the discussion). The pond settings
page gains the "who may comment" select. Fixes PondsService.update
silently dropping commentPolicy from the settings merge (found by the
new two-user Playwright pack; the DB test now exercises the real pond
PATCH). New comments i18n namespace (de+en); the pack runs as its own
CI step.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EwZ4jR4KFAPvpjWevfUGX1