All checks were successful
CI / Semgrep Security Scan (pull_request) Successful in 21s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m2s
nightly / deploy-staging (push) Successful in 2m2s
CI / Unit & Component Tests (push) Successful in 3m58s
CI / OCR Service Tests (push) Successful in 20s
CI / Backend Unit Tests (push) Successful in 3m50s
CI / fail2ban Regex (push) Successful in 44s
CI / Unit & Component Tests (pull_request) Successful in 3m29s
CI / Semgrep Security Scan (push) Successful in 21s
CI / OCR Service Tests (pull_request) Successful in 21s
CI / Backend Unit Tests (pull_request) Successful in 3m43s
CI / Compose Bucket Idempotency (push) Successful in 59s
CI / fail2ban Regex (pull_request) Successful in 45s
- Restore JavaDoc on DocumentSearchResult.of() and .paged() factory methods - Remove redundant null guards on @Builder.Default collections in toListItem() - Map DocumentListItem fields explicitly in DocumentMultiSelect before cast - Add DocumentListItem required fields to docFactory in spec Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
document (frontend)
UI for the archive's core concept: viewing, uploading, editing, searching, bulk-selecting, and transcribing documents.
What this domain owns
Components: DocumentRow, DocumentThumbnail, DocumentTopBar, DocumentViewer, DocumentMetadataDrawer, DocumentEditLayout, DocumentStatusChip, UploadZone, BulkSelectionBar, BulkDropZone.
Utilities: search.ts (search-param helpers), filename.ts (filename formatting), documentStatusLabel.ts (i18n label mapping), validateFile.ts (upload validation), groupDocuments.ts (list grouping).
Sub-folders: annotation/, transcription/, viewer/.
What this domain does NOT own
- Person typeahead —
person/PersonTypeahead.svelte(cross-domain import, allowed by ESLint rule) - Tag input —
tag/TagInput.svelte(cross-domain import, allowed) - Shared discussion —
shared/discussion/(comment/mention editor)
Key components
| Component | Route used in | Notes |
|---|---|---|
DocumentRow.svelte |
/ (search results), admin queues |
Compact document card with thumbnail |
DocumentViewer.svelte |
/documents/[id] |
PDF/image inline viewer |
DocumentEditLayout.svelte |
/documents/[id]/edit |
Full edit form with sticky save bar |
UploadZone.svelte |
/documents/new, bulk upload |
Drag-and-drop file drop area |
BulkSelectionBar.svelte |
/documents bulk mode |
Multi-select action bar |
Cross-domain imports
person/PersonTypeahead.svelte— sender / receiver selectiontag/TagInput.svelte— tag chip inputocr/OcrProgress.svelte— job status indicator in the document headershared/primitives/BackButton.svelte,shared/discussion/— shared UI
Backend counterpart
backend/src/main/java/org/raddatz/familienarchiv/document/README.md