10 file(s), +180 / -69 lines
| Path | Role | + | - |
|---|---|---|---|
| messages/en.json | Config | +5 | -1 |
| messages/hi.json | Config | +5 | -1 |
| src/app/[locale]/(workspace)/matters/[matterId]/chronology/page.tsx | App route | +20 | -0 |
| src/app/[locale]/(workspace)/matters/[matterId]/inbox/page.tsx | App route | +20 | -0 |
| src/app/[locale]/(workspace)/matters/[matterId]/proof/page.tsx | App route | +20 | -0 |
| src/app/[locale]/(workspace)/matters/[matterId]/strategy/page.tsx | App route | +20 | -0 |
| src/components/matter-detail/matter-mode-placeholder.tsx | Component | +20 | -0 |
| src/components/matter-detail/matter-worknav.tsx | Component | +18 | -11 |
| src/components/matters/live-matter-shell.tsx | Component | +10 | -54 |
| src/lib/surface-registry/route-registry.ts | Library | +42 | -2 |
The four not-yet-built Work Modes — Inbox, Strategy, Chronology, Proof —
become real, deep-linkable routes rendered via <Link>,
and the last of the in-shell activeMode client state machine is
removed. This continues EPIC-2018 (route-per-mode) on top of the fat layout
(S1, Story-2019) and the Brief route (S2, Story-2029). The bodies are still
the honest "lands in a later release" placeholder — navigable shells, not
fake-data screens.
matters/[matterId]/{inbox,strategy,chronology,proof}/page.tsx.
Each renders only its body under the existing fat
layout.tsx (which already validates locale/matterId and hosts
the shared chrome — Ribbon + Worknav + Rail), so the pages carry no fetch
and no chrome. Each exports an agentSurface
(matter.inbox / matter.strategy /
matter.chronology / matter.proof) with a
brain-facing description and a presence key added to both
en.json and hi.json.
tabPlaceholder block that used to live inside
LiveMatterShell's activeMode branch is now the
server component
matter-detail/matter-mode-placeholder.tsx, reused by all four
routes. Same markup, same i18n keys
(MatterDetail.tabPlaceholder / tabs.* /
inbox), which already existed in both locales.
SURFACE_KEY_BY_MODE /
MODE_BY_SURFACE_KEY in matter-worknav.tsx, so
every Worknav tab now renders as a real <a href> to
buildSurfacePath (right-clickable / open-in-new-tab), with the
active tab derived from the pathname. The map is no longer
Partial — all eight modes are routed.
activeMode state machine is gone
LiveMatterShell lost its
activeMode / setActiveMode / onModeChange
machinery (and the useState / useCallback /
useRouter imports that drove it). Mode switching is now pure
routing — the Worknav links navigate, the fat layout keeps the chrome put,
and the matched route renders its body. The file is now unused chrome slated
for deletion in S7 (#2034); this story only strips the machinery per its
scope, and leaves LiveMatterDetailPage untouched.
LiveMatterShell /
LiveMatterDetailPage / MatterSubnav and the orphan
review/ dir (S7, #2034).
pnpm gen:routes + pnpm check:routes (34 surfaces,
fresh), pnpm lint (0 errors), pnpm test
(1001 passed), and pnpm build are green. The build output lists
all four new routes:
/[locale]/matters/[matterId]/{inbox,strategy,chronology,proof}.
No codegen / contract change (placeholder bodies have no data path).