• Joined on 2026-03-17
98be732b05 test(admin-tags): pin merge/delete previews to the direct count (#698)
aa9d4aafaa test(tag): add subtreeDocumentCount to admin tree fixtures (#698)
1fd8c2b2d2 feat(themen): show the subtree rollup count on reader surfaces (#698)
e8377b579e feat(themen): key reader tag visibility on the subtree rollup (#698)
4e8962a06d docs(tag): document the dual document counts on the tag tree (#698)
Compare 7 commits »
marcel commented on issue marcel/familienarchiv#698 2026-05-31 12:28:19 +02:00
As a reader browsing topics I want each theme box to count documents across its whole sub-topic tree so I can judge a topic's depth at a glance

Implemented

Built on a worktree branch (worktree-feat+issue-698-themen-subtree-count) following Option B — a new subtreeDocumentCount field, reader surfaces read the rollup, admin…

marcel commented on issue marcel/familienarchiv#697 2026-05-31 12:24:23 +02:00
feat(transcription): let read-only users read transcriptions (read tab only, no edit)

Implemented in PR #700 (branch feat/issue-697-readers-read-transcriptions), TDD throughout — red test → minimum green → atomic commit.

Resolved-decision alignment: hasTranscription =…

marcel created pull request marcel/familienarchiv#700 2026-05-31 12:23:57 +02:00
feat(transcription): let read-only users read transcriptions (read tab only, no edit) (#697)
bee309e40c test(e2e): read-only user reads a transcription, no edit affordances (#697)
cef05abaaa feat(ui): confine read-only users to the transcription read view (#697)
c5d62bef71 feat(ui): show read-only transcription header without an edit tab (#697)
d1b24c905f i18n(transcription): add reader read-label and panel title strings (#697)
4e218dc2b8 chore(api): regenerate Document type with hasTranscription (#697)
Compare 9 commits »
marcel created branch feat/issue-697-readers-read-transcriptions in marcel/familienarchiv 2026-05-31 12:23:38 +02:00
marcel deleted branch feat/issue-696-hide-write-controls from marcel/familienarchiv 2026-05-31 11:31:36 +02:00
marcel merged pull request marcel/familienarchiv#699 2026-05-31 11:31:35 +02:00
fix(ui): hide write/edit controls from READ_ALL (read-only) users (#696)
marcel closed issue marcel/familienarchiv#696 2026-05-31 11:31:35 +02:00
fix(ui): hide write/edit controls from READ_ALL (read-only) users
marcel pushed to main at marcel/familienarchiv 2026-05-31 11:31:35 +02:00
944370dcfd refactor(layout): extract canUpload derived for the upload-button gate (#696)
5edefdd082 test(document): document READ_ALL -> 403 on document write endpoints (#696)
97274beba0 test(layout): lock upload-button gate against ANNOTATE_ALL-only users (#696)
c3652f5b57 fix(ui): hide header upload button from non-writers (#696)
Compare 4 commits »
marcel commented on issue marcel/familienarchiv#696 2026-05-31 11:28:38 +02:00
fix(ui): hide write/edit controls from READ_ALL (read-only) users

🗳️ Decision Queue — Action Required

1 decision needs your input — and it is a follow-up, not a blocker for #696. The upload-button fix can ship as-is.

Product / UX

  • **Do…
marcel commented on issue marcel/familienarchiv#696 2026-05-31 11:28:25 +02:00
fix(ui): hide write/edit controls from READ_ALL (read-only) users

📋 Elicit — Requirements Engineer & Business Analyst

Observations

  • Strong issue hygiene. The acceptance criteria are in testable Given-When-Then Gherkin, scope boundaries are explicit…
marcel commented on issue marcel/familienarchiv#696 2026-05-31 11:28:13 +02:00
fix(ui): hide write/edit controls from READ_ALL (read-only) users

⚙️ Tobias Wendt — DevOps & Platform Engineer

Observations

  • Zero infrastructure surface. No Docker service, no env var, no Caddy rule, no CI workflow change. A {#if} gate plus tests —…
marcel commented on issue marcel/familienarchiv#696 2026-05-31 11:28:08 +02:00
fix(ui): hide write/edit controls from READ_ALL (read-only) users

🎨 Leonie Voss — UX Designer & Accessibility Strategist

Observations

  • This is a genuine UX defect, not just a security tidy-up. A reader clicking "Hochladen" and getting silently bounced…
marcel commented on issue marcel/familienarchiv#696 2026-05-31 11:27:56 +02:00
fix(ui): hide write/edit controls from READ_ALL (read-only) users

🧪 Sara Holt — QA Engineer & Test Strategist

Observations

  • Test placement on the pyramid is correct. UI visibility → component test (layout.svelte.spec.ts, vitest-browser-svelte…
marcel commented on issue marcel/familienarchiv#696 2026-05-31 11:27:44 +02:00
fix(ui): hide write/edit controls from READ_ALL (read-only) users

🛡️ Nora "NullX" Steiner — Application Security Engineer

Observations

  • This issue gets the threat model right, and says so explicitly: **hiding the button is not the control — the…
marcel commented on issue marcel/familienarchiv#696 2026-05-31 11:27:32 +02:00
fix(ui): hide write/edit controls from READ_ALL (read-only) users

👨‍💻 Felix Brandt — Senior Fullstack Developer

Observations

  • Clean implementation. The gate became {#if canUpload} backed by `const canUpload = $derived(Boolean(data?.user &&…
marcel commented on issue marcel/familienarchiv#696 2026-05-31 11:27:24 +02:00
fix(ui): hide write/edit controls from READ_ALL (read-only) users

🏛️ Markus Keller — Application Architect

Observations

  • The layering is exactly right: the issue states up front that backend authz (@RequirePermission(WRITE_ALL) + server-side route…
marcel pushed to feat/issue-696-hide-write-controls at marcel/familienarchiv 2026-05-31 11:22:44 +02:00
944370dcfd refactor(layout): extract canUpload derived for the upload-button gate (#696)
marcel commented on pull request marcel/familienarchiv#699 2026-05-31 11:16:10 +02:00
fix(ui): hide write/edit controls from READ_ALL (read-only) users (#696)

📋 Elicit — Requirements Engineer & Business Analyst

Verdict: ⚠️ Approved with one traceability concern

The change is well-scoped and the implementation matches the stated intent. My…