-
b6466fcd95
fix(admin): wire delete-user button via enhance callback instead of requestSubmit()
Marcel
2026-04-19 18:07:06 +02:00
-
e1d51728d9
refactor(audit): move AuditLogQueryService, AuditLogQueryRepository, and shared DTOs to audit package
Marcel
2026-04-19 22:43:30 +02:00
-
55ce696428
fix(dashboard): fix ContributorStack each-block key and add accessible avatar labels
Marcel
2026-04-19 22:28:00 +02:00
-
12d92c78ea
fix(layout): replace hardcoded 'Hochladen' with m.upload_action() + aria-label
Marcel
2026-04-19 22:23:32 +02:00
-
d9157b99dd
test(dashboard): fix stale resume mock — use totalBlocks instead of page/pages
Marcel
2026-04-19 22:19:50 +02:00
-
3ede42503a
fix(dashboard): i18n, a11y, security, and type-safety fixes from PR review
Marcel
2026-04-19 21:43:16 +02:00
-
117044aad9
docs(spec): add /documents page design spec with mobile breakpoints
Marcel
2026-04-19 21:39:56 +02:00
-
eac025dec1
feat(dashboard): show block count instead of page numbers in resume strip
Marcel
2026-04-19 21:32:13 +02:00
-
5147973379
refactor(dashboard): remove page field from DashboardResumeDTO; rename pages to totalBlocks
Marcel
2026-04-19 21:27:07 +02:00
-
3589e8659e
fix(dashboard): bulk-load document titles in getActivity to avoid N+1
Marcel
2026-04-19 21:24:39 +02:00
-
bc762246e5
fix(dashboard): null-safe name join in toActorDTO
Marcel
2026-04-19 21:21:20 +02:00
-
7f6380452f
fix(dashboard): include ANNOTATION_CREATED in hero resume query
Marcel
2026-04-19 19:40:48 +02:00
-
267380f714
fix(audit): submit afterCommit write to executor to avoid transaction sync conflict
Marcel
2026-04-19 19:39:59 +02:00
-
7506f8743a
fix(dashboard): defensive null guard in ContributorStack; fix spec makeDoc factories
Marcel
2026-04-19 19:22:52 +02:00
-
520cca58b8
feat(dashboard): show contributor pill stack on each mission control queue item
Marcel
2026-04-19 19:10:16 +02:00
-
4bd1ebfd1e
feat(dashboard): add ContributorStack component for mission control pill stacks
Marcel
2026-04-19 19:06:46 +02:00
-
647a82b085
chore(types): regenerate API types with contributor fields on TranscriptionQueueItemDTO
Marcel
2026-04-19 19:03:39 +02:00
-
a3a9ad0471
test(dashboard): add empty-queue guard and boundary tests for contributor cap
Marcel
2026-04-19 18:54:06 +02:00
-
812053cd6b
feat(dashboard): add contributors to TranscriptionQueueItemDTO with 5-cap and hasMore flag
Marcel
2026-04-19 18:44:26 +02:00
-
20cac8f6d9
feat(dashboard): expose findContributorsPerDocument in AuditLogQueryService
Marcel
2026-04-19 18:30:40 +02:00
-
935a8b16d2
fix(dashboard): use LEFT JOIN users in findContributorsPerDocument for deleted-user resilience
Marcel
2026-04-19 18:25:00 +02:00
-
24b203ac80
feat(dashboard): add findContributorsPerDocument query and ContributorRow projection
Marcel
2026-04-19 18:18:26 +02:00
-
5a98edac86
feat(dashboard): complete frontend redesign for Issue #271
Marcel
2026-04-19 17:44:08 +02:00
-
d34e8986af
feat(i18n): add dashboard i18n keys (de/en/es)
Marcel
2026-04-19 17:13:57 +02:00
-
06c75af96b
chore(types): regenerate API types with dashboard endpoints
Marcel
2026-04-19 17:10:50 +02:00
-
ddd811c634
feat(dashboard): remove deprecated /incomplete and /recent-activity endpoints
Marcel
2026-04-19 17:05:14 +02:00
-
250a00ff3c
fix(migration): correct app_users → users table references in V46/V47
Marcel
2026-04-19 16:58:04 +02:00
-
56a44bcef9
refactor(security): extract requireUserId to SecurityUtils
Marcel
2026-04-19 16:39:41 +02:00
-
b3ae379be7
fix(audit): add blockId to TEXT_SAVED audit payload
Marcel
2026-04-19 16:36:02 +02:00
-
74febd37f6
feat(user): add deterministic avatar color to AppUser
Marcel
2026-04-19 16:33:27 +02:00
-
da2ece986a
fix(documents): WCAG text-size and API error pattern fixes
Marcel
2026-04-20 01:17:04 +02:00
-
f2bed92176
fix(review): cycle 3 — a11y, CSS injection, domain boundary
Marcel
2026-04-20 01:03:06 +02:00
-
7f23e88b69
fix(documents): address review cycle 2 — a11y, CSS injection, debounce tests
Marcel
2026-04-20 00:40:48 +02:00
-
b2ea9e74fe
fix(a11y): add sr-only h1 to documents page for screen reader landmark
Marcel
2026-04-20 00:25:16 +02:00
-
dc349947ef
fix(a11y): add aria-hidden to decorative SVG and use text-xs for WCAG 12px minimum
Marcel
2026-04-20 00:24:36 +02:00
-
80e10e1755
fix(docs): stop tag click propagation to prevent parent anchor navigation
Marcel
2026-04-20 00:23:48 +02:00
-
3707d34c62
test(docs): add DocumentRow unit tests — title, snippet, tags, sender, progress ring
Marcel
2026-04-20 00:23:08 +02:00
-
10833fbe6b
feat(frontend): add /documents page with search, filter, and year-card list
Marcel
2026-04-20 00:06:25 +02:00
-
4ba4e67bc5
feat(frontend): add /documents page.server.ts — search load function with all filter params
Marcel
2026-04-19 23:55:37 +02:00
-
65bc859918
refactor(frontend): rewrite DocumentList as year-card orchestrator using DocumentSearchItem[]
Marcel
2026-04-19 23:53:37 +02:00
-
648aa2a742
feat(frontend): add DocumentRow component with two-column layout, highlights, progress, contributors
Marcel
2026-04-19 23:44:31 +02:00
-
ae0e3b271d
feat(frontend): add ProgressRing component — SVG progress arc with percentage label
Marcel
2026-04-19 23:34:30 +02:00
-
6e888d9958
feat(frontend): simplify homepage to pure dashboard — remove search/filter dual-mode
Marcel
2026-04-19 23:31:57 +02:00
-
eeca30e7a6
feat(frontend): add --header-height, bump initials to text-[10px], update nav to /documents
Marcel
2026-04-19 23:24:46 +02:00
-
05d434fed3
chore(frontend): regenerate API types with DocumentSearchItem and updated DocumentSearchResult
Marcel
2026-04-19 23:23:08 +02:00
-
71c02626f4
feat(migration): V48 add composite index on transcription_blocks(document_id, reviewed)
Marcel
2026-04-19 23:19:24 +02:00
-
8df0c3a1ef
feat(service): assemble DocumentSearchItem in DocumentService with completion and contributors
Marcel
2026-04-19 23:18:35 +02:00
-
ab3a026feb
feat(dto): add DocumentSearchItem record and refactor DocumentSearchResult to items-based shape
Marcel
2026-04-19 23:17:53 +02:00
-
16614d1bfb
feat(audit): add findRecentContributorsForDocuments query (max 4, recency order)
Marcel
2026-04-19 23:05:49 +02:00
-
f197eb9752
feat(repository): add bulk completion stats query to TranscriptionBlockRepository
Marcel
2026-04-19 23:00:20 +02:00
-
-
-
70a2bbfaad
refactor(audit): move AuditLogQueryService, AuditLogQueryRepository, and shared DTOs to audit package
Marcel
2026-04-19 22:43:30 +02:00
-
5246638014
fix(dashboard): fix ContributorStack each-block key and add accessible avatar labels
Marcel
2026-04-19 22:28:00 +02:00
-
d6e5d3d1e8
fix(layout): replace hardcoded 'Hochladen' with m.upload_action() + aria-label
Marcel
2026-04-19 22:23:32 +02:00
-
94823f85c8
test(dashboard): fix stale resume mock — use totalBlocks instead of page/pages
Marcel
2026-04-19 22:19:50 +02:00
-
6494b13147
docs(spec): add /documents page design spec with mobile breakpoints
Marcel
2026-04-19 21:44:45 +02:00
-
2bb08b6877
fix(dashboard): i18n, a11y, security, and type-safety fixes from PR review
Marcel
2026-04-19 21:43:16 +02:00
-
148710f2ed
docs(spec): add /documents page design spec with mobile breakpoints
Marcel
2026-04-19 21:39:56 +02:00
-
18e321b1e6
feat(dashboard): show block count instead of page numbers in resume strip
Marcel
2026-04-19 21:32:13 +02:00
-
3aec856bac
refactor(dashboard): remove page field from DashboardResumeDTO; rename pages to totalBlocks
Marcel
2026-04-19 21:27:07 +02:00
-
3f773cd9c3
fix(dashboard): bulk-load document titles in getActivity to avoid N+1
Marcel
2026-04-19 21:24:39 +02:00
-
09a8081e35
fix(dashboard): null-safe name join in toActorDTO
Marcel
2026-04-19 21:21:20 +02:00
-
d19116fd05
fix(dashboard): include ANNOTATION_CREATED in hero resume query
Marcel
2026-04-19 19:40:48 +02:00
-
bae07c8171
fix(audit): submit afterCommit write to executor to avoid transaction sync conflict
Marcel
2026-04-19 19:39:59 +02:00
-
64c5b40eae
fix(dashboard): defensive null guard in ContributorStack; fix spec makeDoc factories
Marcel
2026-04-19 19:22:52 +02:00
-
0c65d5d748
feat(dashboard): show contributor pill stack on each mission control queue item
Marcel
2026-04-19 19:10:16 +02:00
-
031f6ea29a
feat(dashboard): add ContributorStack component for mission control pill stacks
Marcel
2026-04-19 19:06:46 +02:00
-
43f19ebe87
chore(types): regenerate API types with contributor fields on TranscriptionQueueItemDTO
Marcel
2026-04-19 19:03:39 +02:00
-
77a4cbd188
test(dashboard): add empty-queue guard and boundary tests for contributor cap
Marcel
2026-04-19 18:54:06 +02:00
-
9407cb9dc4
feat(dashboard): add contributors to TranscriptionQueueItemDTO with 5-cap and hasMore flag
Marcel
2026-04-19 18:44:26 +02:00
-
80c952cd6c
feat(dashboard): expose findContributorsPerDocument in AuditLogQueryService
Marcel
2026-04-19 18:30:40 +02:00
-
615392216c
fix(dashboard): use LEFT JOIN users in findContributorsPerDocument for deleted-user resilience
Marcel
2026-04-19 18:25:00 +02:00
-
37203e96ab
feat(dashboard): add findContributorsPerDocument query and ContributorRow projection
Marcel
2026-04-19 18:18:26 +02:00
-
10dbce1c70
feat(dashboard): complete frontend redesign for Issue #271
Marcel
2026-04-19 17:44:08 +02:00
-
99247ed58d
feat(i18n): add dashboard i18n keys (de/en/es)
Marcel
2026-04-19 17:13:57 +02:00
-
714f00ef9d
chore(types): regenerate API types with dashboard endpoints
Marcel
2026-04-19 17:10:50 +02:00
-
9e0b72bc10
feat(dashboard): remove deprecated /incomplete and /recent-activity endpoints
Marcel
2026-04-19 17:05:14 +02:00
-
c678432d25
fix(migration): correct app_users → users table references in V46/V47
Marcel
2026-04-19 16:58:04 +02:00
-
19832dc1e0
refactor(security): extract requireUserId to SecurityUtils
Marcel
2026-04-19 16:39:41 +02:00
-
b3013c42c0
fix(audit): add blockId to TEXT_SAVED audit payload
Marcel
2026-04-19 16:36:02 +02:00
-
cb02dc84f6
feat(user): add deterministic avatar color to AppUser
Marcel
2026-04-19 16:33:27 +02:00
-
-
428c63a2f2
feat(audit): add COMMENT_ADDED and MENTION_CREATED audit events
Marcel
2026-04-19 15:43:51 +02:00
-
5a3b5ff3c7
fix(audit): address review cycle 1 feedback
Marcel
2026-04-19 14:07:20 +02:00
-
2deaaf167e
feat(audit): instrument DocumentService for METADATA_UPDATED, STATUS_CHANGED, FILE_UPLOADED
Marcel
2026-04-19 13:40:49 +02:00
-
9887968236
feat(audit): instrument TranscriptionService for TEXT_SAVED and BLOCK_REVIEWED
Marcel
2026-04-19 13:24:22 +02:00
-
793b863096
feat(audit): add audit_log infrastructure and instrument AnnotationService
Marcel
2026-04-19 13:17:54 +02:00
-
692c2c0629
feat(register): show invite-only error when no code param is present
Marcel
2026-04-19 12:29:34 +02:00
-
d07f7debf8
feat(register): redesign register page to match spec
Marcel
2026-04-19 12:27:03 +02:00
-
1926e8e6e5
chore: untrack accidentally committed test screenshots
Marcel
2026-04-19 10:57:54 +02:00
-
18a93f5b38
Merge pull request 'feat: invite-based self-service registration' (#273) from feat/issue-269-invite-registration into main
marcel
2026-04-19 09:34:32 +02:00
-
-
88012a1193
fix(invite): address review cycle 2 feedback
Marcel
2026-04-19 09:30:57 +02:00
-
9fc4993fca
fix(invite-ui): accessibility, i18n, and load function tests
Marcel
2026-04-19 09:10:42 +02:00
-
f8f5ea634e
refactor(invite): move user creation into UserService, add generateCode limit
Marcel
2026-04-19 09:03:29 +02:00
-
103d454e14
fix(rate-limit): only trust X-Forwarded-For from known reverse proxies
Marcel
2026-04-19 01:20:11 +02:00
-
daea748a20
feat(frontend): invite-based registration UI
Marcel
2026-04-19 01:01:19 +02:00
-
61fa35df67
feat(invites): implement invite-based self-service registration backend
Marcel
2026-04-19 00:42:43 +02:00
-
b4004fce56
chore: ignore .worktrees/ directory
Marcel
2026-04-19 00:17:32 +02:00
-
-
e1ddd66704
fix(auth): add @Email validation and @Valid to enforce email format on user creation
Marcel
2026-04-18 21:52:11 +02:00
-
d816e94a90
feat(auth): migrate frontend from username to email-only authentication
Marcel
2026-04-18 21:34:46 +02:00
-
5e01db1c74
feat(auth): remove username field, migrate identity to email
Marcel
2026-04-18 20:49:15 +02:00
-
c4444a07d1
feat(users): reject blank email in updateProfile and adminUpdateUser
Marcel
2026-04-18 20:35:03 +02:00