-
1a8ed97d5e
Merge branch 'worktree-agent-a2939317'
Hartmut
2026-04-09 14:44:51 +02:00
-
-
b2c8d98b25
refactor(api): reorganise allocation router into allocation/ subdirectory
Hartmut
2026-04-09 14:44:17 +02:00
-
-
75167d6129
fix(merge): resolve post-merge type errors from batch-1 agents
Hartmut
2026-04-09 14:38:32 +02:00
-
0fcb481350
Merge branch 'worktree-agent-a90e1bc2'
Hartmut
2026-04-09 14:19:18 +02:00
-
-
b573a1d554
Merge branch 'worktree-agent-a74dc5bc'
Hartmut
2026-04-09 14:18:50 +02:00
-
-
a2613f6e93
Merge branch 'worktree-agent-a0063a64'
Hartmut
2026-04-09 14:18:47 +02:00
-
-
96679f5fec
Merge branch 'worktree-agent-acdb74a3'
Hartmut
2026-04-09 14:18:27 +02:00
-
-
b9fd7fdb03
perf(staffing): replace day-by-day capacity loop with range arithmetic
Hartmut
2026-04-09 14:17:26 +02:00
-
-
-
fbca017eaa
test(application): add unit tests for demand fill logic and capacity vacation overlap
Hartmut
2026-04-09 14:15:00 +02:00
-
-
9a42615a21
fix(api): add Zod bounds on financial fields, type vacation router, type scenarioData
Hartmut
2026-04-09 14:08:16 +02:00
-
-
aebe5bc57d
fix(db): add SetNull cascade on Assignment→DemandRequirement + composite indexes
Hartmut
2026-04-09 14:03:11 +02:00
-
-
f3cb75bfc7
feat(mobile): add mobile summary view for 320-428px viewports (Sprint 4c)
Hartmut
2026-04-09 13:37:08 +02:00
-
ab4ec91e02
feat(digest): add weekly capacity digest email cron
Hartmut
2026-04-09 13:33:12 +02:00
-
607af1a857
feat(bench): add Resource Bench Board page
Hartmut
2026-04-09 13:30:44 +02:00
-
1df208dbcc
feat(timeline): add pulse animation for in-flight drag mutations
Hartmut
2026-04-09 13:28:46 +02:00
-
7a5e98e2e9
perf(timeline): add horizontal virtualization for allocation bars
Hartmut
2026-04-09 13:26:38 +02:00
-
e75d966b8d
feat(timeline): add inline allocation editor on double-click
Hartmut
2026-04-09 13:24:43 +02:00
-
fa54ef4cbd
feat(timeline): add keyboard navigation with shortcut overlay
Hartmut
2026-04-09 13:20:32 +02:00
-
05f6eba5d8
refactor(staffing): decompose 735-line StaffingPanel into focused components
Hartmut
2026-04-09 13:17:55 +02:00
-
594ae4f10b
feat(allocations): add Excel export button to allocations toolbar
Hartmut
2026-04-09 13:14:58 +02:00
-
7435fdc125
feat(timeline): Sprint 2b — AI staffing suggestions in DemandPopover
Hartmut
2026-04-09 13:11:36 +02:00
-
16ce6db07e
feat(allocations): Sprint 2a — bulk date shift via BatchActionBar
Hartmut
2026-04-09 13:10:06 +02:00
-
6831e199c6
feat(ux): Sprint 1 — quick wins: EmptyState, DateRangePresets, debounce, save feedback, scenarios nav
Hartmut
2026-04-09 13:08:19 +02:00
-
a16c41e739
fix(dashboard): show skeleton instead of default layout until hydration completes
Hartmut
2026-04-09 10:20:50 +02:00
-
24435a1824
test(allocation): add conflict check tests for checkConflicts query
Hartmut
2026-04-09 10:20:37 +02:00
-
3e8df09cd8
feat(web): overbooking and vacation conflict warnings in AllocationModal
Hartmut
2026-04-09 10:15:37 +02:00
-
61e52e9995
feat(api,application): add checkConflicts query and soften overbooking block
Hartmut
2026-04-09 10:13:18 +02:00
-
b944a17572
feat(db,shared): add overbookingAcknowledged field and conflict check types
Hartmut
2026-04-09 10:11:02 +02:00
-
60d267fa0a
feat(api): add SSE subscriber isolation, token pruning and E2E rate-limit guard
Hartmut
2026-04-09 08:35:39 +02:00
-
472d87c829
feat(web): add error boundaries, loading skeletons, render fixes and tree-shaking
Hartmut
2026-04-09 08:35:28 +02:00
-
1204c186ef
perf(api): eliminate N+1 queries, add query guards and missing indexes
Hartmut
2026-04-09 08:35:13 +02:00
-
1d6d75ecf6
fix(api): wrap critical mutations in transactions and fix TOCTOU race conditions
Hartmut
2026-04-09 08:34:59 +02:00
-
b103e79e92
feat(ux): prevent wizard close on backdrop click
Hartmut
2026-04-07 16:09:22 +02:00
-
4accee95a4
refactor(dispo): clean up validate UI in NewImportModal
Hartmut
2026-04-07 16:06:58 +02:00
-
444fa70a19
fix(ui): remove !important amber-50 dark override from globals.css
Hartmut
2026-04-06 10:39:34 +02:00
-
f89da5d93b
fix(ui): use amber-950/30 for pending approvals dark background (not gray-800)
Hartmut
2026-04-06 10:34:49 +02:00
-
813b21d1a0
fix(ui): add dark mode styles to amber warning boxes app-wide
Hartmut
2026-04-06 10:28:35 +02:00
-
d2caba8d7c
fix(test): use relative dates in insights summary test
Hartmut
2026-04-06 09:40:14 +02:00
-
8f464f2150
feat(dispo): add dry-run Validate button to New Import modal
Hartmut
2026-04-06 09:32:23 +02:00
-
bdb55f23d3
fix(insights): suppress AI credentials warning during loading state
Hartmut
2026-04-06 09:05:00 +02:00
-
a9ad1ed8b6
feat(G-08): chapter field uses live datalist from resource.chapters
Hartmut
2026-04-06 08:10:36 +02:00
-
4a49ec4f05
fix(sanity): resolve 15 gaps from sanity check audit (G-01 through G-15)
Hartmut
2026-04-06 00:11:12 +02:00
-
fba65387fe
feat(resources): add hard-delete action to resource list (per-row and batch)
Hartmut
2026-04-03 23:18:30 +02:00
-
f5e41f7efe
fix(ux): improve empty-state messaging for tickets #49 and #57
Hartmut
2026-04-03 17:51:14 +02:00
-
bc0bb5bdb8
test: add coverage for gitlooper ticket sweep
Hartmut
2026-04-03 17:33:27 +02:00
-
9241f22993
fix(ux): resolve tickets #58 #60 — wizard review labels and assignment CTA clarity
Hartmut
2026-04-03 16:17:16 +02:00
-
2da29c8191
fix(ux): resolve tickets #59 #66 #67 — project feedback and demand summary
Hartmut
2026-04-03 16:05:29 +02:00
-
b7bb6d05af
fix(nav): redirect /blueprints to /admin/blueprints (#52)
Hartmut
2026-04-03 15:46:38 +02:00
-
65db330a4d
fix(ux): resolve tickets #55 #56 — resource modal stability and success feedback
Hartmut
2026-04-03 15:43:12 +02:00
-
0d0707264d
feat(admin): hard-delete resources (admin-only)
Hartmut
2026-04-03 15:23:30 +02:00
-
3979d342c8
fix(ux): resolve tickets #51 #53 #54 from gitlooper sweep
Hartmut
2026-04-03 12:27:43 +02:00
-
aef4c61dcc
test(e2e): add nav-smoke spec covering all 35 sidebar routes (#50)
Hartmut
2026-04-03 12:11:37 +02:00
-
5a8dc6c166
fix: resolve 3 UX bugs from gitlooper ticket sweep (#45 #47 #48)
Hartmut
2026-04-03 11:25:42 +02:00
-
339ae47540
docs: learning — Auth.js v5 Edge split + session expiry redirect pattern
Hartmut
2026-04-03 10:42:31 +02:00
-
bf8577dbaf
feat(auth): proactive session expiry redirect across all delivery paths
Hartmut
2026-04-03 10:42:10 +02:00
-
ed4d4e4640
test(api): fill router auth and security coverage gaps
Hartmut
2026-04-02 23:31:26 +02:00
-
1d02afddfd
ci(e2e): add Playwright smoke tests to deploy-test workflow
Hartmut
2026-04-02 23:25:12 +02:00
-
0f7d70cac8
docs(learnings): record Gitea API token location and usage patterns
Hartmut
2026-04-02 23:07:33 +02:00
-
8c9ba5363c
docs: mark P1 timeline/SSE/scenario work complete in plan and roadmap
Hartmut
2026-04-02 21:34:15 +02:00
-
e3c585a403
test(scenario): add unit regression coverage for all four scenario modules
Hartmut
2026-04-02 21:30:46 +02:00
-
1ec56aac13
docs: expand .env.example with full documented variable reference
Hartmut
2026-04-02 21:28:51 +02:00
-
e7e525df49
fix(timeline): clear multi-select on drag start and lock in SSE edge-case coverage
Hartmut
2026-04-02 21:16:10 +02:00
-
8d9e26872b
fix(timeline): stabilize popovers on internal scroll + expand test coverage
Hartmut
2026-04-02 20:49:08 +02:00
-
d4641e27aa
feat: first-run setup wizard, CLI seed script, and installation docs
Hartmut
2026-04-02 20:45:15 +02:00
-
41eb722369
feat: user invite flow, deactivate/delete, favicon, dashboard loading fix, admin full-width
Hartmut
2026-04-02 20:19:26 +02:00
-
dc5bbdc47d
feat: centralize app base URL — no localhost fallback in production
Hartmut
2026-04-02 14:19:19 +02:00
-
7c0110df91
fix(e2e): make email E2E tests green end-to-end
Hartmut
2026-04-02 13:53:47 +02:00
-
fceceeee4b
feat: SMTP full ENV override, password reset flow, and E2E email testing
Hartmut
2026-04-02 08:55:39 +02:00
-
e5ecea81c5
fix(auth): resolve MFA post-activation login failures — tickets #38 #40 #41
Hartmut
2026-04-02 00:20:47 +02:00
-
435c871e1f
security: implement tickets #28-#35 + architecture decision #30
Hartmut
2026-04-01 23:25:06 +02:00
-
f8550110eb
security: fix 4 OWASP quick-wins from audit round 2
Hartmut
2026-04-01 22:57:51 +02:00
-
745be7ee8b
fix(dashboard): scope localStorage key by userId to prevent cross-user layout bleed (#27)
Hartmut
2026-04-01 22:44:41 +02:00
-
-
d3bfa8ca98
test(mfa): full MFA test coverage — unit + E2E
Hartmut
2026-04-01 22:30:36 +02:00
-
bfdf0a82da
security/platform: close audit findings #19–#26
Hartmut
2026-04-01 22:14:20 +02:00
-
4901bc878b
fix(e2e): complete E2E_TEST_MODE isolation for session registry + rate limits
Hartmut
2026-04-01 20:57:14 +02:00
-
8429bd86d4
test(e2e): fix dev-system test suite — storageState + strict-mode + signout
Hartmut
2026-04-01 19:09:49 +02:00
-
3d8a256d52
fix(auth): use token.sid to avoid Auth.js jti claim conflict
Hartmut
2026-04-01 19:00:44 +02:00
-
a867672afa
Merge remote-tracking branch 'origin/main'
Hartmut
2026-04-01 18:41:54 +02:00
-
-
5bc7cace26
fix(auth): make active-session check fail-open; add missing DB migration
Hartmut
2026-04-01 18:38:05 +02:00
-
0e119cfe73
security: close audit findings #19–#23 and harden Docker setup (#24)
Hartmut
2026-04-01 18:19:21 +02:00
-
57ea9d8310
fix(allocations): recover from fully filtered empty state
Hartmut
2026-04-01 15:16:57 +02:00
-
b841cc9127
fix(allocations): expand grouped rows by default
Hartmut
2026-04-01 15:13:24 +02:00
-
fd75628e9d
fix(allocations): recover from fully filtered empty state
Hartmut
2026-04-01 15:16:57 +02:00
-
7df751d5eb
fix(allocations): expand grouped rows by default
Hartmut
2026-04-01 15:13:24 +02:00
-
4b14db9dc6
fix(timeline): pause sse while hidden
Hartmut
2026-04-01 15:05:34 +02:00
-
3258b59e21
fix(timeline): resync after sse reconnect
Hartmut
2026-04-01 15:04:00 +02:00
-
d4652b7a42
fix(timeline): cancel stranded drag interactions
Hartmut
2026-04-01 14:57:56 +02:00
-
a71bbeb640
fix(timeline): stabilize overlay lifecycle
Hartmut
2026-04-01 14:41:03 +02:00
-
fa5e654739
fix(timeline): harden project view interactions
Hartmut
2026-04-01 14:10:28 +02:00
-
e103174d39
refactor(web): extract preview target setup
Hartmut
2026-04-01 11:59:10 +02:00
-
2a7769a0de
refactor(web): extract range release resolution
Hartmut
2026-04-01 11:53:11 +02:00
-
1e2bd3d4eb
refactor(web): extract project drag finalize
Hartmut
2026-04-01 11:49:14 +02:00
-
463caedcfd
refactor(web): extract touch event forwarding
Hartmut
2026-04-01 11:39:39 +02:00
-
37c6e03d23
refactor(web): extract allocation release effects
Hartmut
2026-04-01 11:35:17 +02:00
-
f4e9831dea
refactor(web): extract allocation drag session
Hartmut
2026-04-01 11:27:03 +02:00
-
510459fbff
refactor(web): extract allocation multi-drag session
Hartmut
2026-04-01 11:22:18 +02:00
-
5402189158
refactor(web): extract drag position helpers
Hartmut
2026-04-01 11:18:31 +02:00
-
3fe3a5fb2a
refactor(web): extract project drag session
Hartmut
2026-04-01 11:16:15 +02:00
-
0181f2b304
refactor(web): extract multi-select session
Hartmut
2026-04-01 11:14:28 +02:00
-
b14be80e32
refactor(web): extract timeline drag cleanup
Hartmut
2026-04-01 11:12:20 +02:00