-
5cc177ccf9
fix(dashboard): prevent stale DB data from overwriting newer localStorage layout
Hartmut
2026-04-09 21:14:36 +02:00
-
c784b4b378
fix(infra): wait for postgres readiness before running migrations on container start
Hartmut
2026-04-09 21:14:31 +02:00
-
43de66e982
feat(api): add audit helpers, tool registry, shared tool manifest types, and UI primitives
Hartmut
2026-04-09 21:14:26 +02:00
-
1a67af6761
fix(dashboard): measure grid container width after hydration completes, not just on mount
Hartmut
2026-04-09 20:58:57 +02:00
-
5ad1048519
feat(dashboard): expand grid to 16 columns with auto-migration for saved 12-col layouts
Hartmut
2026-04-09 20:50:40 +02:00
-
446aea5319
feat(dashboard): combine vertical + horizontal compaction for gap-free widget layout
Hartmut
2026-04-09 20:42:49 +02:00
-
4eac7b1888
fix(infra): apply missing migrations, fix Dockerfile.dev ui package reference
Hartmut
2026-04-09 20:29:21 +02:00
-
4875096b13
fix(dashboard): restore vertical compaction so widgets auto-align when dragged
Hartmut
2026-04-09 20:19:24 +02:00
-
c83bd5f97f
Merge branch 'worktree-agent-a8de1898' - Phase 2A entitlement use-cases
Hartmut
2026-04-09 20:16:38 +02:00
-
-
999626cf70
feat(application): extract entitlement use-cases from API router layer
Hartmut
2026-04-09 20:14:35 +02:00
-
1a8ea11331
feat(db): add deletedAt audit timestamp to soft-deletable models
Hartmut
2026-04-09 20:03:38 +02:00
-
f7407bd882
fix(api): add centralized Prisma → TRPCError middleware on protectedProcedure
Hartmut
2026-04-09 19:58:00 +02:00
-
245b59723a
fix(api): update resource-router tests for select-based listStaff queries
Hartmut
2026-04-09 19:33:58 +02:00
-
db83933ea1
Merge branch 'worktree-agent-aed43cff'
Hartmut
2026-04-09 19:31:50 +02:00
-
-
36900a1219
Merge branch 'worktree-agent-a7de1005'
Hartmut
2026-04-09 19:31:11 +02:00
-
-
6c7245db93
test(e2e): add Playwright tests for core workflows
Hartmut
2026-04-09 19:30:43 +02:00
-
6f3bdd81e8
perf(api): add explicit Prisma selects on hot read paths
Hartmut
2026-04-09 19:24:55 +02:00
-
-
d737a251b2
fix(api): replace ctx.session.user lookups with ctx.dbUser
Hartmut
2026-04-09 19:18:39 +02:00
-
d7a35b2d7a
feat(web): add React error boundaries and Next.js error.tsx fallbacks
Hartmut
2026-04-09 19:16:26 +02:00
-
-
070be70848
refactor(application): extract vacation management into application use-cases
Hartmut
2026-04-09 17:11:37 +02:00
-
-
6bf60c8e07
feat(web): persist list-page filters in URL search params
Hartmut
2026-04-09 17:00:30 +02:00
-
7264f0728a
perf(timeline): add useCallback/useMemo to timeline components
Hartmut
2026-04-09 16:54:38 +02:00
-
dda049075f
refactor(application): extract vacation management into application use-cases
Hartmut
2026-04-09 16:49:45 +02:00
-
-
485e220c49
fix(api,web): env startup validation, QueryClient defaults, warn on missing REDIS_URL
Hartmut
2026-04-09 16:42:34 +02:00
-
3c0179fcec
fix(api): wrap audit log writes inside their parent transactions
Hartmut
2026-04-09 16:40:10 +02:00
-
a01f99561d
fix(api): fix import paths missed by router reorganisation
Hartmut
2026-04-09 14:47:16 +02:00
-
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