Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
24d06a1
feat(navigation): one shared home page, mode-routed search
claude Aug 8, 2026
2a1cc78
test(ui-tools): target /tools for the launcher-content journey
claude Aug 8, 2026
c9e57ca
fix(navigation): seed the remembered home mode once, not on every mod…
claude Aug 8, 2026
5fdc0f2
fix(medications): let /medications own its body, and finish the journ…
claude Aug 8, 2026
ec56059
fix(medications): point the record breadcrumb at the Medication home
claude Aug 8, 2026
3a0bdd6
fix(documents): one composer owner on /documents, and dismiss it by b…
claude Aug 8, 2026
6f6ef48
docs(ledger): record the mode-routing handoff
claude Aug 8, 2026
468cc3f
Merge branch 'main' into claude/mode-routing-search-pages-jabe17
BigSimmo Aug 8, 2026
7245446
docs(ledger): record mode-routing bug-hunt at 468cc3fc
cursoragent Aug 8, 2026
ef895b8
fix(navigation): stop /documents drafts auto-running, and restore mod…
cursoragent Aug 8, 2026
7c19b35
Merge branch 'main' into claude/mode-routing-search-pages-jabe17
cursoragent Aug 8, 2026
b1d236d
Merge branch 'main' into claude/mode-routing-search-pages-jabe17
cursoragent Aug 8, 2026
1ee2fda
fix(dashboard): extract payloads and home-mode seed under maintainabi…
cursoragent Aug 8, 2026
e7a6b44
Merge branch 'main' into claude/mode-routing-search-pages-jabe17
cursoragent Aug 8, 2026
7a0bb10
merge(main): sync #1744 before merge
cursoragent Aug 8, 2026
558cd3a
fix(navigation): keep bare /?mode= on shared home for legacy aliases
cursoragent Aug 8, 2026
9ec8033
Merge branch 'main' into claude/mode-routing-search-pages-jabe17
BigSimmo Aug 8, 2026
6d1099b
fix(test): correct differentials smoke test assertions for submitted-…
Copilot Aug 8, 2026
3ae19a9
test(ui-smoke): tighten differentials submitted-redirect contract
cursoragent Aug 8, 2026
56baacc
merge(main): sync #1744; keep documents blur dismiss + listbox guard
cursoragent Aug 8, 2026
2d4e19b
docs(ledger): record shared-home mode-routing review at 6d1099b4
cursoragent Aug 8, 2026
7f07580
merge(remote): sync before ledger push
cursoragent Aug 8, 2026
2a991b7
Merge branch 'main' into claude/mode-routing-search-pages-jabe17
BigSimmo Aug 8, 2026
e53d105
fix(navigation): keep prescribing submit durable and sync shared-home…
cursoragent Aug 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 17 additions & 14 deletions docs/branch-review-ledger.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/codebase-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ One shared composer (`master-search-header.tsx`) serves every mode. Placement:
- **Mode homes** (`/services`, `/forms`, `/favourites`, `/differentials`, `/dsm`, `/specifiers`, `/formulation`, `/factsheets`, `/therapy-compass`, `/tools`, and dashboard homes): inline in the hero via the `mode-home-composer-slot` portal, on phone and tablet+ alike. (`/applications` is a redirect to `/tools`, not a composer surface.)
- **Information (detail) pages**: catalogue/record routes under each mode (`/services/[slug]`, `/forms/[slug]`, `/medications/[slug]`, `/specifiers/[slug]`, `/formulation/[slug]`, `/factsheets/[slug]`, `/dsm/diagnoses/[slug]`, …). Route detection: `src/lib/information-pages.ts` (`isInformationPage`). Shared outer chrome: `src/components/information-page-shell.tsx` (`InformationPageShell`, breadcrumbs, optional footer). Specifier/formulation mode shells re-export that primitive. Intentional opt-outs: document viewer, therapy-compass CSS workspace, differentials presentation workflow.
- **Result and detail views**: fixed bottom dock on phone (compact variant on submitted searches), sticky top from `sm` up.
- **Results routing**: standalone routes own their submitted searches via `?q=…&run=1` (`/services` → `ServicesNavigatorPage`, `/forms` → `FormsSearchResultsPage`, `/differentials` → `DifferentialsHome` results view, `/formulation` → local mechanism results, `/favourites` filters the command library in place). Answer, Documents, and Prescribing submitted searches render inside `ClinicalDashboard` — intentional, since they need retrieval/answer state. `/?mode=favourites` redirects to `/favourites`; `/?mode=differentials` redirects to `/differentials`; `/?mode=dsm` redirects to `/dsm`; `/?mode=specifiers` redirects to `/specifiers`; `/?mode=formulation` redirects to `/formulation`.
- **Results routing**: standalone routes own their submitted searches via `?q=…&run=1` (`/services` → `ServicesNavigatorPage`, `/forms` → `FormsSearchResultsPage`, `/differentials` → `DifferentialsHome` results view, `/formulation` → local mechanism results, `/favourites` filters the command library in place). Answer, Documents, and Prescribing submitted searches render inside `ClinicalDashboard` — intentional, since they need retrieval/answer state. Bare `/?mode=<id>` always renders the shared home with that mode preselected; only a submitted deep link (`q` plus `run=1`) resolves to the mode's own search surface (proxy early-redirect still covers favourites/differentials/specifiers for those submitted aliases).
- **Intentionally composer-free routes**: `/differentials/presentations/*` (comparison workflow owns its chrome), `/documents/[id]` viewer (has its own in-document ask composer), `/documents/source/*` (document flow owns mobile chrome). Do not re-flag these in search-consistency audits.
- **Shared secondary navigation**: `src/components/secondary-navigation.tsx` (`SecondaryNavigation`, route/section/action items, roving tablist, fragment section tracking) and `src/components/page-secondary-navigation.tsx` (`PageSecondaryNavigation`, per-route selection of mode destinations vs. "On this page" section anchors). Mode destinations come from `src/lib/mode-secondary-navigation.ts` (`modeSecondaryNavigationRegistry`, no "Home" item). `GlobalSearchShell` renders it in normal flow at the top of `#main-content` for its owned namespaced modes; it self-suppresses on clean mode homes, locally-owned detail routes (medications, factsheets, differentials diagnoses) and Therapy Compass, and Specifiers/Formulation keep their existing local `Subnav` (so the shared mode bar is skipped for those two modes to avoid a duplicate row).
- **Local filter fields** (sidebar "Search chats", document drawer "Find a document"/"Find a source PDF") are scoped filters, not global search; they share the `fieldControlWithIcon`/`fieldIcon` primitives.
Expand Down
8 changes: 4 additions & 4 deletions docs/design-system/ADOPTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -327,20 +327,20 @@ product exclusions; the only route-only disposition is the documented legacy doc
redirect. Shared shell/component roots carry their own explicit `shared-shell` disposition.

Registered public components: 53
Declared product roots: 55
Declared product roots: 57
Roots with a literal `.ckb-v2` opt-in: 1
Roots inheriting `.ckb-v2` from the global `<html>`: 54
Roots inheriting `.ckb-v2` from the global `<html>`: 56
Production surfaces observed under v2: 14/14
Dynamic `ckb-v2` constructions: 0
Declared production page routes: 47/47
Declared production page routes: 49/49

Source observation and contract declaration are independent. A literal `ckb-v2` on the global `<html>` makes every production surface inherit v2, but it does not approve that adoption.
The Proof column summarizes each surface's dark, forced-colours, 320px, print and browser declarations; exact statuses and evidence paths live in the manifest.
Observed v2 under a compatibility declaration fails closed. A declared v2 shell also fails closed unless every proof is passed with evidence and its visual baseline is committed or explicitly not-committed (pending Linux screenshot approval).

| Surface | Disposition | Routes | Roots | Declared shell | Observed shell (mount) | Proof | Baseline |
| ---------------------------------- | --------------- | -----: | ----: | -------------- | -------------------------- | -------------- | -------------- |
| `root-shell-and-settings` | shared-shell | 1 | 4 | v2 | v2 (inherited-global-root) | passed | not-committed |
| `root-shell-and-settings` | shared-shell | 3 | 6 | v2 | v2 (inherited-global-root) | passed | not-committed |
| `catalogues-forms-and-info` | owned | 13 | 13 | v2 | v2 (inherited-global-root) | passed | not-committed |
| `differentials` | owned | 4 | 4 | v2 | v2 (inherited-global-root) | passed | not-committed |
| `formulation` | owned | 5 | 5 | v2 | v2 (inherited-global-root) | passed | not-committed |
Expand Down
6 changes: 5 additions & 1 deletion docs/design-system/adoption-contract.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,11 @@
{
"id": "root-shell-and-settings",
"disposition": "shared-shell",
"routes": ["src/app/(search-app)/page.tsx"],
"routes": [
"src/app/(search-app)/page.tsx",
"src/app/(search-app)/documents/page.tsx",
"src/app/(search-app)/medications/page.tsx"
],
"routeRoots": true,
"roots": [
"src/app/layout.tsx",
Expand Down
40 changes: 34 additions & 6 deletions docs/design-system/adoption-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -1902,7 +1902,11 @@
"id": "root-shell-and-settings",
"disposition": "shared-shell",
"documentedDisposition": "The root route, shared application shell, global overlays, answer orchestration and settings UI are owned by the mounted shell rather than separate settings routes.",
"routes": ["src/app/(search-app)/page.tsx"],
"routes": [
"src/app/(search-app)/documents/page.tsx",
"src/app/(search-app)/medications/page.tsx",
"src/app/(search-app)/page.tsx"
],
"routeRoots": true,
"proofApplicability": "required",
"nonVisualRoute": null,
Expand Down Expand Up @@ -1942,7 +1946,7 @@
"sanctionedSpecialPatterns": ["ClinicalDashboard", "OverlayRoot", "SettingsDialog"],
"roots": [
{
"file": "src/app/(search-app)/page.tsx",
"file": "src/app/(search-app)/documents/page.tsx",
"exists": true,
"imports": [],
"importedFamilies": [],
Expand All @@ -1951,6 +1955,26 @@
"v2MountMode": "inherited-global-root",
"sanctionedPatternsPresent": ["ClinicalDashboard"]
},
{
"file": "src/app/(search-app)/medications/page.tsx",
Comment thread
coderabbitai[bot] marked this conversation as resolved.
"exists": true,
"imports": [],
"importedFamilies": [],
"literalCkbV2": false,
"dynamicCkbV2": false,
"v2MountMode": "inherited-global-root",
"sanctionedPatternsPresent": []
},
{
"file": "src/app/(search-app)/page.tsx",
"exists": true,
"imports": [],
"importedFamilies": [],
"literalCkbV2": false,
"dynamicCkbV2": false,
"v2MountMode": "inherited-global-root",
"sanctionedPatternsPresent": []
},
{
"file": "src/app/layout.tsx",
"exists": true,
Expand Down Expand Up @@ -3148,6 +3172,7 @@
"src/app/(search-app)/differentials/page.tsx",
"src/app/(search-app)/differentials/presentations/[slug]/page.tsx",
"src/app/(search-app)/documents/[id]/page.tsx",
"src/app/(search-app)/documents/page.tsx",
"src/app/(search-app)/documents/search/page.tsx",
"src/app/(search-app)/documents/source/evidence/page.tsx",
"src/app/(search-app)/documents/source/page.tsx",
Expand All @@ -3168,6 +3193,7 @@
"src/app/(search-app)/formulation/map/page.tsx",
"src/app/(search-app)/formulation/page.tsx",
"src/app/(search-app)/medications/[slug]/page.tsx",
"src/app/(search-app)/medications/page.tsx",
"src/app/(search-app)/page.tsx",
"src/app/(search-app)/services/[slug]/page.tsx",
"src/app/(search-app)/services/page.tsx",
Expand Down Expand Up @@ -3197,6 +3223,7 @@
"src/app/(search-app)/differentials/page.tsx",
"src/app/(search-app)/differentials/presentations/[slug]/page.tsx",
"src/app/(search-app)/documents/[id]/page.tsx",
"src/app/(search-app)/documents/page.tsx",
"src/app/(search-app)/documents/search/page.tsx",
"src/app/(search-app)/documents/source/evidence/page.tsx",
"src/app/(search-app)/documents/source/page.tsx",
Expand All @@ -3217,6 +3244,7 @@
"src/app/(search-app)/formulation/map/page.tsx",
"src/app/(search-app)/formulation/page.tsx",
"src/app/(search-app)/medications/[slug]/page.tsx",
"src/app/(search-app)/medications/page.tsx",
"src/app/(search-app)/page.tsx",
"src/app/(search-app)/services/[slug]/page.tsx",
"src/app/(search-app)/services/page.tsx",
Expand Down Expand Up @@ -3245,7 +3273,7 @@
},
"adoption": {
"literalCkbV2RootCount": 1,
"inheritedCkbV2RootCount": 54,
"inheritedCkbV2RootCount": 56,
"dynamicCkbV2RootCount": 0,
"v2MountedSurfaceCount": 14,
"declaredV2SurfaceCount": 14
Expand All @@ -3254,8 +3282,8 @@
"registeredComponentCount": 53,
"previewCount": 53,
"productImportedComponentCount": 30,
"rootCount": 55,
"productionRouteCount": 47,
"nextUiEntryCount": 99
"rootCount": 57,
"productionRouteCount": 49,
"nextUiEntryCount": 101
}
}
Loading
Loading