Hartmut
732538857b
test(api): cover remaining timeline and broadcast fallback races
2026-03-30 12:23:46 +02:00
Hartmut
a9a01e8df0
test(resource): cover chapter and skill import access
2026-03-30 12:23:35 +02:00
Hartmut
d3ad350821
test(assistant): document self-service approval access
2026-03-30 12:20:55 +02:00
Hartmut
c9a35452dc
fix(blueprint): require planning access for global field defs
2026-03-30 12:18:59 +02:00
Hartmut
649c8feb22
fix(api): harden broadcast transactions and estimate fallbacks
2026-03-30 12:18:10 +02:00
Hartmut
016f862405
fix(holiday-calendar): scope resource holiday reads
2026-03-30 12:10:52 +02:00
Hartmut
c7434c968e
fix(vacation): scope preview requests to owned resources
2026-03-30 12:07:26 +02:00
Hartmut
6a6e98b5f7
fix(api): harden broadcast and assistant fallback errors
2026-03-30 12:03:27 +02:00
Hartmut
22cff9648e
test(entitlement): cover self-service and role boundaries
2026-03-30 12:01:34 +02:00
Hartmut
3a29ce4332
fix(blueprint): require planning access for detailed reads
2026-03-30 11:55:43 +02:00
Hartmut
7aa32f8a5c
test(api): harden assistant tool error handling
2026-03-30 11:51:59 +02:00
Hartmut
4ce8577824
test(api): cover notification and user edge cases
2026-03-30 11:51:26 +02:00
Hartmut
4c542d0015
fix(assistant): dedupe missing approval storage warnings
2026-03-30 11:49:05 +02:00
Hartmut
978cd9184d
test(assistant): align admin tool descriptions
2026-03-30 11:45:29 +02:00
Hartmut
b254ab70ba
test(auth): cover notification and user router audiences
2026-03-30 11:08:14 +02:00
Hartmut
c8e82ac221
feat(settings): restrict AI readiness checks to admins
2026-03-30 11:00:42 +02:00
Hartmut
81a46c81bd
feat(blueprint): scope summary reads to planning audience
2026-03-30 10:55:28 +02:00
Hartmut
9b764008c3
feat(management-level): scope reads to planning audience
2026-03-30 10:45:44 +02:00
Hartmut
c2ca6a6d0d
feat(holiday-calendar): restrict catalog reads to admins
2026-03-30 10:36:05 +02:00
Hartmut
54769ca0f5
feat(utilization-category): scope reads to planning audience
2026-03-30 10:29:40 +02:00
Hartmut
ae74700f7c
feat(client): scope planning reads to explicit audience
2026-03-30 10:24:52 +02:00
Hartmut
2b514ea962
feat(org-unit): scope structural reads to resource overview
2026-03-30 10:17:57 +02:00
Hartmut
65fe7ce04f
feat(assistant): align resource tool visibility with read audiences
2026-03-30 10:11:55 +02:00
Hartmut
bd654251f7
feat(master-data): scope detail reads to resource overview
2026-03-30 10:08:44 +02:00
Hartmut
3a30fecc13
feat(role): scope planning-linked role reads to planning audience
2026-03-30 09:58:39 +02:00
Hartmut
16cf1bcb50
feat(assistant): align system role config visibility with admin reads
2026-03-30 09:56:45 +02:00
Hartmut
a25635ee66
feat(auth): restrict system role config reads to admins
2026-03-30 09:46:32 +02:00
Hartmut
98502e6cf8
feat(estimate): scope estimate search to controller audience
2026-03-30 09:44:50 +02:00
Hartmut
806c028974
feat(scenario): scope baseline reads to planning and cost audiences
2026-03-30 09:40:07 +02:00
Hartmut
3aac946443
feat(staffing): enforce planning and cost audiences
2026-03-30 09:36:38 +02:00
Hartmut
a960d43ed1
feat(assistant): align tool visibility with route audiences
2026-03-30 09:22:26 +02:00
Hartmut
93c4374973
feat(auth): introduce explicit planning read permission
2026-03-30 09:15:07 +02:00
Hartmut
a50ca09333
feat(auth): tighten allocation read audiences
2026-03-30 09:03:44 +02:00
Hartmut
db45829eca
feat(auth): classify planning and resource read audiences
2026-03-30 08:51:07 +02:00
Hartmut
fac8c1c3a5
feat(sse): scope timeline events to affected audiences
2026-03-30 00:40:24 +02:00
Hartmut
819345acfa
feat(platform): harden access scoping and delivery baseline
2026-03-30 00:27:31 +02:00
Hartmut
00b936fa1f
feat(assistant): extend audit and import parity
2026-03-29 12:56:29 +02:00
Hartmut
47e4d701ff
chore(repo): checkpoint current capakraken implementation state
2026-03-29 12:47:12 +02:00
Hartmut
beae1a5d6e
feat(assistant): add approval inbox and e2e hardening
2026-03-29 10:10:59 +02:00
Hartmut
4f48afe7b4
feat(planning): ship holiday-aware planning and assistant upgrades
2026-03-28 22:49:28 +01:00
Hartmut
cd78f72f33
chore: full technical rename planarchy → capakraken
...
Complete rename of all technical identifiers across the codebase:
Package names (11 packages):
- @planarchy/* → @capakraken/* in all package.json, tsconfig, imports
Import statements: 277 files, 548 occurrences replaced
Database & Docker:
- PostgreSQL user/db: planarchy → capakraken
- Docker volumes: planarchy_pgdata → capakraken_pgdata
- Connection strings updated in docker-compose, .env, CI
CI/CD:
- GitHub Actions workflow: all filter commands updated
- Test database credentials updated
Infrastructure:
- Redis channel: planarchy:sse → capakraken:sse
- Logger service name: planarchy-api → capakraken-api
- Anonymization seed updated
- Start/stop/restart scripts updated
Test data:
- Seed emails: @planarchy.dev → @capakraken.dev
- E2E test credentials: all 11 spec files updated
- Email defaults: @planarchy.app → @capakraken.app
- localStorage keys: planarchy_* → capakraken_*
Documentation: 30+ .md files updated
Verification:
- pnpm install: workspace resolution works
- TypeScript: only pre-existing TS2589 (no new errors)
- Engine: 310/310 tests pass
- Staffing: 37/37 tests pass
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-03-27 13:18:09 +01:00
Hartmut
6f34659587
feat: Sprint 3 — automation, intelligence, skill marketplace
...
Auto-Staffing Suggestions (A6):
- generateAutoSuggestions() ranks top-3 resources on demand creation
- Uses existing staffing engine (skill 40%, availability 30%, cost 20%, util 10%)
- Creates in-app notification with match scores for managers
- Triggered after createDemandRequirement and partial fillDemandRequirement
Vacation Conflict Detection (A7):
- checkVacationConflicts() warns when >50% chapter absent on same days
- Returns warnings array in approve/batchApprove responses (advisory, non-blocking)
- Creates VACATION_CONFLICT_WARNING notification for approver
Weekly Chargeability Alerts (A10):
- checkChargeabilityAlerts() finds resources >15pp below target
- Cron endpoint: GET /api/cron/chargeability-alerts
- Duplicate-safe by resourceId + month composite key
Rate Card Auto-Apply (A11):
- lookupRate() finds best matching rate card line (weighted scoring)
- Auto-fills demand line rates in estimate create/updateDraft when rates are 0
- Marks auto-filled lines with metadata.autoAppliedRateCard
- New lookupDemandLineRate query for on-demand UI lookups
Public Holiday Auto-Import (A12):
- autoImportPublicHolidays() generates holidays by resource federal state
- Cron endpoint: GET /api/cron/public-holidays?year=2027
- Duplicate-safe, uses existing getPublicHolidays() from shared
Skill Marketplace MVP (G6):
- New page: /analytics/skill-marketplace with 3 sections
- Skill Search: filter by name, proficiency, availability, sortable results
- Skill Gap Heat Map: supply vs demand per skill, shortage/surplus indicators
- Skill Distribution: top-20 horizontal bar chart (reuses SkillDistributionChart)
- New getSkillMarketplace query in resource router
- Sidebar nav link under Analytics for ADMIN/MANAGER/CONTROLLER
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-03-19 21:39:05 +01:00
Hartmut
6e5b9ec85b
feat: Sprint 2 — test coverage, Dependabot, coverage gates, E2E expansion
...
API Router Integration Tests (43 new tests):
- dashboard-router.test.ts: 11 tests (all 5 queries + RBAC)
- project-router.test.ts: 17 tests (full CRUD + batch ops + RBAC)
- resource-router-crud.test.ts: 15 tests (CRUD + hover card + skill import)
- Fix: mock budget-alerts + cache in existing allocation/timeline tests
E2E Test Suite Expansion (29 new tests, 7 spec files):
- dashboard.spec.ts: widget grid, stat cards, add widget modal
- allocations.spec.ts: list, create modal, filters, column toggle
- estimates.spec.ts: list, wizard steps, navigation
- vacations.spec.ts: self-service, management, team calendar
- staffing.spec.ts: search, suggestions, skill tags
- admin.spec.ts: settings, users, roles, blueprints
- navigation.spec.ts: nav links, sidebar collapse, theme, mobile menu
Coverage Gates:
- api package: 80% lines, 75% branches
- application package: 80% lines, 75% branches (new vitest.config.ts)
- shared package: 70% lines, 65% branches
- CI updated to run per-package vitest --coverage
Dependabot:
- Weekly npm dependency checks with grouped minor+patch
- GitHub Actions version checks
- 10 PR limit for npm, 5 for Actions
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-03-19 21:29:58 +01:00
Hartmut
a83edb2f9d
feat: timeline UI overhaul with project/resource panel redesign, quick filters, and API improvements
...
Redesigned timeline project and resource panels with expanded detail views,
added quick filter toolbar, improved drag handling, and enhanced vacation/entitlement
router logic. Includes e2e test updates and minor API fixes.
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-03-15 09:28:59 +01:00
Hartmut
625a842d89
feat: dashboard overhaul, chargeability reports, dispo import enhancements, UI polish
...
Dashboard: expanded chargeability widget, resource/project table widgets
with sorting and filters, stat cards with formatMoney integration.
Chargeability: new report client with filtering, chargeability-bookings
use case, updated dashboard overview logic.
Dispo import: TBD project handling, parse-dispo-matrix improvements,
stage-dispo-projects resource value scores, new tests.
Estimates: CommercialTermsEditor component, commercial-terms engine
module, expanded estimate schemas and types.
UI: AppShell navigation updates, timeline filter/toolbar enhancements,
role management improvements, signin page redesign, Tailwind/globals
polish, SystemSettings SMTP section, anonymization support.
Tests: new router tests (anonymization, chargeability, effort-rule,
entitlement, estimate, experience-multiplier, notification, resource,
staffing, vacation).
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-03-14 23:29:07 +01:00
Hartmut
ad0855902b
refactor: complete v2 refactoring plan (Phases 1-5)
...
Phase 1 — Quick Wins: centralize formatMoney/formatCents, extract
findUniqueOrThrow helper (19 routers), shared Prisma select constants,
useInvalidatePlanningViews hook, status badge consolidation, composite
DB indexes.
Phase 2 — Timeline Split: extract TimelineContext, TimelineResourcePanel,
TimelineProjectPanel; split 28-dep useMemo into 3 focused memos.
TimelineView.tsx reduced from 1,903 to 538 lines.
Phase 3 — Query Performance: server-side filtering for getEntriesView,
remove availability from timeline resource select, SSE event debouncing
(50ms batch window).
Phase 4 — Estimate Workspace: extract 7 tab components and 3 editor
components. EstimateWorkspaceClient 1,298→306 lines,
EstimateWorkspaceDraftEditor 1,205→581 lines.
Phase 5 — Package Cleanup: split commit-dispo-import-batch (1,112→573
lines), extract shared pagination helper with 11 tests.
All tests pass: 209 API, 254 engine, 67 application.
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-03-14 23:03:42 +01:00
Hartmut
dd55d0e78b
chore(repo): initialize planarchy workspace
2026-03-14 14:31:09 +01:00