Files
familienarchiv/frontend/src/lib/document
Marcel 9030a7d031 test(confirm-service): normalise vi.mock spelling and remove duplicate-id mocks
Five test files mocked $lib/shared/services/confirm.svelte under BOTH
spellings (.svelte and .svelte.js) within the same file; two more mocked
only the .svelte.js form. Both resolve to the same module URL but register
two distinct Playwright route handlers in @vitest/browser-playwright. The
cleanup logic only removes one, leaving an orphan that fires when the next
session loads the module — crashing the run with
"[birpc] rpc is closed, cannot call resolveManualMock".

This is the exact trigger fixed upstream by vitest PR #10267 (issue #9957).
Normalise every confirm.svelte mock to the no-extension form, matching
production imports and the source file basename (confirm.svelte.ts).

After this commit: 8 confirm.svelte mocks across 8 spec files, all under
one canonical ID. A meta-test (next commit) prevents the duplicate-id
pattern from reappearing.

Refs: #553 · vitest-dev/vitest#9957 · vitest-dev/vitest#10267

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 08:03:43 +02:00
..

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 selection
  • tag/TagInput.svelte — tag chip input
  • ocr/OcrProgress.svelte — job status indicator in the document header
  • shared/primitives/BackButton.svelte, shared/discussion/ — shared UI

Backend counterpart

backend/src/main/java/org/raddatz/familienarchiv/document/README.md