Commit Graph

  • 9b5547757a fix(security): cap PersonController size param at 50 to prevent resource exhaustion Marcel 2026-05-07 22:18:04 +02:00
  • 92587b050e feat(stats): add totalStories to StatsDTO via GeschichteService.countPublished() Marcel 2026-05-07 22:16:34 +02:00
  • 2be2087a95 feat(dashboard): wire reader layout to +page.svelte Marcel 2026-05-07 21:40:23 +02:00
  • 4d9234244e feat(dashboard): add reader dashboard components Marcel 2026-05-07 21:39:35 +02:00
  • 9b82621770 feat(i18n): add reader dashboard message keys (de/en/es) Marcel 2026-05-07 19:06:53 +02:00
  • a58e796ffa feat(dashboard): add isReader flag + reader branch to page load Marcel 2026-05-07 19:04:04 +02:00
  • 6a46a1e3eb chore(api): update generated types — add UPDATED_AT sort and persons size/sort params Marcel 2026-05-07 18:39:47 +02:00
  • 5b645f6374 feat(person): add findTopByDocumentCount endpoint for reader dashboard Marcel 2026-05-07 18:37:33 +02:00
  • d76ee5fa31 fix(security): restrict DRAFT list to author — prevent cross-user draft leak Marcel 2026-05-07 18:33:08 +02:00
  • 5146aeb568 feat(document): add DocumentSort.UPDATED_AT for reader dashboard feed Marcel 2026-05-07 18:25:24 +02:00
  • 9fd1f3cde2 refactor(documents): extract timeline drag state into rune class (#385) Marcel 2026-05-08 11:50:34 +02:00
  • 5cd6ecc624 refactor(documents): split getDensity into resolve/load/aggregate (#385) Marcel 2026-05-08 11:44:37 +02:00
  • 86de118d63 refactor(documents): bundle density filters into a record (#385) Marcel 2026-05-08 11:42:38 +02:00
  • 00f35ab675 docs(documents): link density TODO to follow-up #481 (#385) Marcel 2026-05-08 11:39:47 +02:00
  • c0a1f04df5 chore(documents): density endpoint produces=application/json (#385) Marcel 2026-05-08 11:38:29 +02:00
  • 7f99c64d45 docs(layout): note light-mode --timeline-bar-idle contrast ratio (#385) Marcel 2026-05-08 11:34:03 +02:00
  • 18aaf1f3e8 style(documents): gate timeline bar hover under (hover: hover) (#385) Marcel 2026-05-08 11:32:31 +02:00
  • dd0a77a5a2 feat(documents): focus-visible ring on timeline controls (#385) Marcel 2026-05-08 11:30:25 +02:00
  • f68d16ef58 docs(documents): explain monthBoundaryTo day-zero idiom (#385) Marcel 2026-05-08 11:28:58 +02:00
  • 301cfffd1a docs(c4): align density breakpoint with code (≥1024px) (#385) Marcel 2026-05-08 11:07:16 +02:00
  • bf501b7d62 docs(documents): mark clipBucketsToRange as @internal (#385) Marcel 2026-05-08 11:05:46 +02:00
  • 5d749b2415 refactor(documents): move timeline CSS vars to layout.css (#385) Marcel 2026-05-08 11:05:06 +02:00
  • 1d6016cb19 fix(documents): pluralise timeline bar aria-label by count (#385) Marcel 2026-05-08 11:03:19 +02:00
  • 48da819a54 feat(documents): focus-visible ring on timeline bar buttons (#385) Marcel 2026-05-08 11:00:15 +02:00
  • 153752a901 fix(documents): bump timeline control buttons to 44x44 (#385) Marcel 2026-05-08 10:58:59 +02:00
  • 3b6b117c75 fix(documents): cleanup timeline drag listeners on unmount (#385) Marcel 2026-05-08 10:56:58 +02:00
  • 2e9ce8e1da fix(documents): surface timeline density fetch failures via console.warn (#385) Marcel 2026-05-08 10:55:04 +02:00
  • c9be6cc165 test(documents): @Transactional rollback in DocumentDensityIntegrationTest (#385) Marcel 2026-05-08 10:53:48 +02:00
  • ffe617dba8 docs(documents): note nullable minDate/maxDate on DocumentDensityResult (#385) Marcel 2026-05-08 10:52:03 +02:00
  • 47841b9110 refactor(documents): YearMonth.from(d).toString() for density key (#385) Marcel 2026-05-08 10:51:21 +02:00
  • 360db1ae33 chore(documents): drop V61 timeline density index migration (#385) Marcel 2026-05-08 10:49:24 +02:00
  • e5739d7f8e refactor(documents): extract TimelineControls (#385) Marcel 2026-05-08 10:07:45 +02:00
  • 219d9a816e refactor(documents): extract Y-axis and X-axis components (#385) Marcel 2026-05-08 10:06:46 +02:00
  • 00682bac4f refactor(documents): extract TimelineBars from density filter (#385) Marcel 2026-05-08 10:04:38 +02:00
  • 77d282bbeb refactor(documents): split triggerSearch by zoom semantics (#385) Marcel 2026-05-08 10:02:02 +02:00
  • 52827ccc87 feat(documents): hide timeline density widget below lg (#385) Marcel 2026-05-08 10:00:47 +02:00
  • 61d1c1793b fix(documents): bump dark-mode timeline bar contrast to 3.33:1 (#385) Marcel 2026-05-08 09:59:29 +02:00
  • c06987da95 style(documents): respect prefers-reduced-motion on timeline bars (#385) Marcel 2026-05-08 09:57:14 +02:00
  • 5028082da4 feat(documents): aria-live drag preview for screen readers (#385) Marcel 2026-05-08 09:56:20 +02:00
  • ea106e9414 style(documents): timeline axis text to 12px / h-4 (#385) Marcel 2026-05-08 09:54:43 +02:00
  • dfdcacdb85 feat(documents): localise timeline bar aria-label (#385) Marcel 2026-05-08 09:53:18 +02:00
  • c9fb677499 chore(i18n): remove dead timeline keys (#385) Marcel 2026-05-08 09:48:10 +02:00
  • 6aceafda8e docs(documents): TODO for SQL aggregation at 50k rows (#385) Marcel 2026-05-08 09:20:49 +02:00
  • 5d92f5a32b refactor(documents): rework timeline UX after live testing (#385) Marcel 2026-05-08 08:54:48 +02:00
  • a6123e1867 feat(documents): zoom-in tool for the timeline (#385) Marcel 2026-05-07 23:23:38 +02:00
  • bd81ff81f9 feat(documents): drag-to-select-range on the timeline (#385) Marcel 2026-05-07 23:16:48 +02:00
  • 76023a99ed feat(documents): timeline density refetches when other filters change (#385) Marcel 2026-05-07 23:10:12 +02:00
  • e92e9e452e feat(documents): make density endpoint filter-reactive (#385) Marcel 2026-05-07 23:06:47 +02:00
  • 59a2faa145 fix(documents): collapse timeline to year bars when range > 240 months (#385) Marcel 2026-05-07 22:54:02 +02:00
  • 8e29f428d7 fix(documents): merge +page.server data into +page.ts return (#385) Marcel 2026-05-07 22:29:24 +02:00
  • e8fb8150b7 docs(c4): document timeline density widget across backend+frontend (#385) Marcel 2026-05-07 22:17:29 +02:00
  • 6786c0112d feat(documents): wire TimelineDensityFilter into /documents/+page (#385) Marcel 2026-05-07 22:16:05 +02:00
  • d43d73f231 feat(documents): add TimelineDensityFilter component (#385) Marcel 2026-05-07 22:13:58 +02:00
  • ad82f2e1e2 feat(documents): add fetchDensity helper and /documents/+page.ts (#385) Marcel 2026-05-07 22:06:57 +02:00
  • 5fdcc95c3d feat(documents): add timeline helpers (boundary + gap-fill) (#385) Marcel 2026-05-07 22:04:21 +02:00
  • 142459b916 feat(i18n): add timeline density widget keys (#385) Marcel 2026-05-07 22:02:15 +02:00
  • b31979c4f0 chore(frontend): regenerate API types after density endpoint (#385) Marcel 2026-05-07 22:00:58 +02:00
  • 1060be7def feat(documents): add GET /api/documents/density endpoint (#385) Marcel 2026-05-07 21:52:36 +02:00
  • fbf4725e97 feat(documents): add DocumentService.getDensity (#385) Marcel 2026-05-07 21:50:05 +02:00
  • c90b42d045 feat(documents): add density and date-range repository queries (#385) Marcel 2026-05-07 21:47:59 +02:00
  • e61e3797d1 feat(documents): add DocumentDensityResult and MonthBucket records (#385) Marcel 2026-05-07 21:43:34 +02:00
  • ce0c013f0f feat(documents): add document_date index for density aggregation (#385) Marcel 2026-05-07 21:39:32 +02:00
  • baa0a9811c chore: merge main into branch; resolve ChronikRow conflict Marcel 2026-05-07 20:05:12 +02:00
  • 9ef3c82398 fix(review): address review blockers from PR #475 Marcel 2026-05-07 19:54:56 +02:00
  • 708fd9d63e refactor(comment): promote CommentData to top-level record in comment package Marcel 2026-05-07 19:47:27 +02:00
  • abe8ab8668 refactor(comment): remove dead findAnnotationIdsByIds; fix aria-label i18n; rename misleading test Marcel 2026-05-07 19:05:46 +02:00
  • e3a3f209f9 feat(chronik): render commentPreview in ChronikRow; add aria-label for screen readers Marcel 2026-05-07 18:53:26 +02:00
  • e877847b7e feat(dashboard): add commentPreview to ActivityFeedItemDTO; wire via findDataByIds() Marcel 2026-05-07 17:55:02 +02:00
  • 7c25d08506 feat(comment): add findDataByIds() — batch-fetch annotationId + plain-text preview in one query Marcel 2026-05-07 17:49:40 +02:00
  • c10e8e8a3a fix(tests): replace flaky waitFor with synchronous dispatchEvent in edit-page delete spec Marcel 2026-05-07 13:37:13 +02:00
  • 0c765d8112 fix(tests): fix 13 pre-existing vitest-browser spec failures Marcel 2026-05-07 13:15:54 +02:00
  • cdb54c7545 fix(tests): fix 2 more pre-existing vitest-browser spec failures Marcel 2026-05-07 12:22:06 +02:00
  • 6ab7abb9df fix(tests): fix 3 pre-existing vitest-browser spec failures Marcel 2026-05-07 11:27:24 +02:00
  • d28c455991 cleanup(legibility): repo hygiene — untrack artifacts, update gitignore Marcel 2026-05-07 09:27:09 +02:00
  • 0fa90d58cb cleanup(legibility): convert TODOs to issue refs; justify naming violators Marcel 2026-05-07 09:25:55 +02:00
  • 172bafe202 docs(personas): add concrete doc-update trigger tables to Felix and Markus Marcel 2026-05-07 09:00:58 +02:00
  • ba0bfc6a7e docs(db): add Database section to c4-diagrams.md Marcel 2026-05-06 23:44:41 +02:00
  • d4b5c14a26 docs(db): add full ORM diagram (db-orm.puml) Marcel 2026-05-06 23:44:00 +02:00
  • e209d4877d docs(db): add relationship diagram (db-relationships.puml) Marcel 2026-05-06 23:42:46 +02:00
  • 66c1998d2f docs(c4): add VS Code PlantUML server config and diagram index Marcel 2026-05-06 21:38:05 +02:00
  • 62bef1d267 docs(c4): add L3 frontend 3c/3d and sequence diagrams Marcel 2026-05-06 21:35:58 +02:00
  • c3d4762ca0 docs(c4): add L3 frontend 3a middleware/auth and 3b document workflows Marcel 2026-05-06 21:33:30 +02:00
  • 421d7ffd37 docs(c4): add L3 backend 3e persons, 3f OCR, 3g supporting domains Marcel 2026-05-06 21:30:39 +02:00
  • dbf19037fe docs(c4): add L3 backend 3c transcription and 3d users/groups Marcel 2026-05-06 21:28:02 +02:00
  • 9387fcc17b docs(c4): add L3 backend 3a security and 3b document management Marcel 2026-05-06 21:25:53 +02:00
  • 264db4e1c9 docs(c4): add L1 context and L2 containers as C4-PlantUML files Marcel 2026-05-06 21:23:26 +02:00
  • 12f0e21b21 fix(c4): flatten decimal sub-diagram numbering; note invite gate at L1 Marcel 2026-05-06 19:58:26 +02:00
  • 3e33021129 docs(c4): add cross-diagram stub convention note to header Marcel 2026-05-06 12:54:43 +02:00
  • 32396c6253 fix(c4): stammbaum — remove D3 library detail from component description Marcel 2026-05-06 12:54:07 +02:00
  • 11b4206fe2 fix(c4): sequence diagram — username → email in auth flow Marcel 2026-05-06 12:53:32 +02:00
  • eede9f93a7 fix(c4): loginPage — username → email in component description Marcel 2026-05-06 12:52:55 +02:00
  • 260bb8e164 fix(c4): correct docBulkEdit endpoint /batch → /bulk Marcel 2026-05-06 12:52:09 +02:00
  • 9b82d8e7dd docs(c4): add Email Service to L1 and L2 — NotificationService and PasswordResetService send SMTP Marcel 2026-05-06 12:18:42 +02:00
  • ab6117c87e docs(c4): fix 3e DashboardService — add documentSvc and transcriptionSvc cross-domain stubs Marcel 2026-05-06 12:17:50 +02:00
  • b1f9f1603c docs(c4): add OcrJobRepository intermediary in 3d — route ocrAsync through repo, not bare db Marcel 2026-05-06 12:16:54 +02:00
  • f2a901eabf docs(c4): fix 3a secFilter description — BCrypt validation is in DaoAuthenticationProvider Marcel 2026-05-06 12:16:07 +02:00
  • d6ca0f12c9 docs(c4): fix 3d frontend — add User actor for /hilfe/transkription Marcel 2026-05-06 11:28:03 +02:00
  • 537bfb79f0 docs(c4): fix 3a — remove AOP @Around from secFilter→permAspect rel label Marcel 2026-05-06 11:27:13 +02:00
  • f74b586f29 docs(c4): fix 3b frontend — correct docBulkEdit endpoint to /bulk Marcel 2026-05-06 11:26:33 +02:00
  • eb464b351a docs(c4): fix 3c.2 — add PersonRelationshipRepository, route through repo Marcel 2026-05-06 11:25:57 +02:00