First PR of a 4-phase rename. Touches 941 files: package scopes, source identifiers, brand strings, docs, CI workflow content. Does NOT touch the running infrastructure (DB name, compose project/volumes, db-guard default, env-var name) — that comes in Phase 3.
TOTP issuer "CapaKraken" → "Nexus" in apps/web/src/server/auth.ts + packages/api/src/router/user-self-service-procedure-support.ts (3 sites). Existing secrets still work; re-enrollment relabels them in users' authenticator apps
Function rename: assertCapaKrakenDbTarget → assertNexusDbTarget (7 files)
localStorage migration shim in apps/web/src/app/layout.tsx copies capakraken_* → nexus_* on first load, guarded by nexus_migrated_v1 sentinel. Also delegates caches.delete('capakraken-v2') for the SW cache. Removable in Phase 4.
CI on PR #61 surfaced three issues. Two are real and fixed here; the
third was an act-runner flake (actions/setup-node container cleanup
race) that resolves on retrigger.
1. Lint error in apps/web/src/components/allocations/AllocationModal.tsx
The `// eslint-disable-next-line @typescript-eslint/no-explicit-any`
sat one line above the `as any` cast, so it suppressed nothing and
eslint flagged it as an unused directive. Moved the comment to the
line immediately above the cast.
2. pnpm audit --audit-level=high reported 9 high-severity findings,
all transitive through two packages:
- fast-uri <=3.1.1 (GHSA-q3j6-qgpj-74h6, host confusion via
percent-encoded authority delimiters) — pinned to >=3.1.2 via
pnpm.overrides since it's only reachable through @sentry/webpack-
plugin > webpack > schema-utils > ajv > fast-uri
- next 15.5.15 — bumped to ^15.5.16 (patched range starts here)
Quality gates green: typecheck (7/7), test:unit (7/7), lint (0 errors).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The Phase 1 codemod only scanned .ts/.tsx/.js/.mjs/.cjs/.json, so two
shell scripts that reference workspace packages stayed pointing at the
old `@capakraken/*` names. The dev container's entrypoint then printed
"No projects matched the filters in /app" on every pnpm --filter call,
the app never bound to port 3100, and Fresh-Linux Docker Deploy red on
run 154.
- tooling/docker/app-dev-start.sh: pnpm --filter @capakraken/{db,web}
→ @nexus/{db,web} (5 occurrences); /tmp/capakraken-dev-home → /tmp/
nexus-dev-home
- scripts/stop.sh: /tmp/capakraken-dev.pid → /tmp/nexus-dev.pid
Deferred to Phase 3 (these reference live infrastructure, not package
names): scripts/harden-postgres.sh DB_USER/DB_NAME defaults, restart.sh
volume names capakraken_node_modules/_next, scripts/start.sh
pg_isready -U capakraken -d capakraken.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Hartmut
merged commit b41c1d2501 into main2026-05-21 16:28:42 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
First PR of a 4-phase rename. Touches 941 files: package scopes, source identifiers, brand strings, docs, CI workflow content. Does NOT touch the running infrastructure (DB name, compose project/volumes, db-guard default, env-var name) — that comes in Phase 3.
What changed
@capakraken/*→@nexus/*across 12 packages (root + 11 workspaces), 1551 import lines migrated"CapaKraken"→"Nexus"inapps/web/src/server/auth.ts+packages/api/src/router/user-self-service-procedure-support.ts(3 sites). Existing secrets still work; re-enrollment relabels them in users' authenticator appsassertCapaKrakenDbTarget→assertNexusDbTarget(7 files)apps/web/src/app/layout.tsxcopiescapakraken_*→nexus_*on first load, guarded bynexus_migrated_v1sentinel. Also delegatescaches.delete('capakraken-v2')for the SW cache. Removable in Phase 4.@capakraken.{dev,app}→@nexus.{dev,app}in seed data, e2e specs, SMTP default fallbackDockerfile.dev/Dockerfile.prod/ all.github/workflows/*.ymlupdatedpnpm --filter @capakraken/*pathsdocs/*.md,.env.example,tooling/deploy/.env.production.examplebrand sweepWhat's intentionally left for Phase 3
capakraken+ POSTGRES_USERcapakrakencapakraken_pgdataetc.)db-target-guard.mjsdefaultexpectedDatabase(still"capakraken")CAPAKRAKEN_EXPECTED_DB_NAMEdocker-compose.ci.ymltooling/deploy/deploy.env.exampleimage refs (capakraken-app/capakraken-migrator)Quality gates (all green locally)
pnpm typecheck— 7/7 packagespnpm test:unit— 7/7 packagespnpm lint— 0 errorspnpm check:exports,check:imports,check:architecture— all passTest plan
docker compose --profile full up -dboots cleanly (DB still namedcapakraken— verify auth/login works)capakraken_*localStorage: page loads, keys silently migrated, sentinel setRelated plan
/home/hartmut/.claude/plans/expressive-tickling-feigenbaum.md— full 4-phase rename design.🤖 Generated with Claude Code
- @capakraken/* → @nexus/* across 12 packages (root + 11 workspaces), 1551 import lines migrated via codemod - User-visible brand strings renamed (emails, page titles, PWA manifest, mobile header, MFA backup-codes header, tooltips, signin page, invite page, weekly digest, install prompt) - TOTP issuer "CapaKraken" → "Nexus" (existing secrets still valid; re-enrollment relabels them in users' authenticator apps) - Function rename: assertCapaKrakenDbTarget → assertNexusDbTarget - LocalStorage migration shim in apps/web/src/app/layout.tsx copies capakraken_* → nexus_* on first load (guarded by nexus_migrated_v1 sentinel; runs once per browser, then never again) - Service-worker cache name capakraken-v2 → nexus-v2 with one-time caches.delete('capakraken-v2') from the same shim - Email-domain fixtures @capakraken.{dev,app} → @nexus.{dev,app} in seed data, e2e specs, SMTP default fallback - Dockerfile.dev / Dockerfile.prod / all .github/workflows/*.yml pnpm --filter @capakraken/* → @nexus/* - README, CLAUDE.md, LEARNINGS.md, all docs/*.md, .env.example, tooling/deploy/.env.production.example brand sweep Phase 1 deliberately leaves untouched (handled in Phase 3 cutover): - PostgreSQL DB name "capakraken" and POSTGRES_USER "capakraken" - Volume names capakraken_pgdata etc. - Compose project name "capakraken" / "capakraken-prod" - db-target-guard default expectedDatabase - env-var CAPAKRAKEN_EXPECTED_DB_NAME - Container DNS names in docker-compose.ci.yml Quality gates green: pnpm typecheck (7/7), pnpm test:unit (7/7), pnpm lint (0 errors), check:exports/imports/architecture all pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>The Phase 1 codemod only scanned .ts/.tsx/.js/.mjs/.cjs/.json, so two shell scripts that reference workspace packages stayed pointing at the old `@capakraken/*` names. The dev container's entrypoint then printed "No projects matched the filters in /app" on every pnpm --filter call, the app never bound to port 3100, and Fresh-Linux Docker Deploy red on run 154. - tooling/docker/app-dev-start.sh: pnpm --filter @capakraken/{db,web} → @nexus/{db,web} (5 occurrences); /tmp/capakraken-dev-home → /tmp/ nexus-dev-home - scripts/stop.sh: /tmp/capakraken-dev.pid → /tmp/nexus-dev.pid Deferred to Phase 3 (these reference live infrastructure, not package names): scripts/harden-postgres.sh DB_USER/DB_NAME defaults, restart.sh volume names capakraken_node_modules/_next, scripts/start.sh pg_isready -U capakraken -d capakraken. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>