Commit Graph

  • 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