Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
f8701a5
Tighten the mode-home hero rhythm and put its glyphs on the icon scale
claude Aug 11, 2026
1164b9f
Record the mode-home hero spacing review in the ledger
claude Aug 11, 2026
37957f4
chore(1815): resolve main sync without history rewrite
BigSimmo Aug 11, 2026
acf78bf
Merge remote-tracking branch 'origin/main' into probe2-1815
BigSimmo Aug 11, 2026
21738ad
Merge branch 'main' into claude/spacing-icon-design-review-rxwh28
BigSimmo Aug 11, 2026
c44c8a5
Merge origin/main into pr-1815 for unblock
BigSimmo Aug 11, 2026
be7461e
Unblock PR 1815: fix required check blockers
BigSimmo Aug 11, 2026
862bfb8
Record PR 1815 unblock ledger entry
BigSimmo Aug 11, 2026
1cee527
Unblock PR 1815: fix design-system and container parity blocker
BigSimmo Aug 11, 2026
eb407d8
chore(ci): copy installed-lock parity script into worker Dockerfile i…
BigSimmo Aug 11, 2026
0890f38
chore(ci): skip lifecycle scripts in worker prod deps install
BigSimmo Aug 11, 2026
ccd665c
Merge branch 'main' of https://github.com/BigSimmo/Database into pr-1…
BigSimmo Aug 11, 2026
6f8c70d
fix(pr-1815): resolve main merge conflict and keep shadow-tight switc…
BigSimmo Aug 11, 2026
9882600
fix(pr-1815): restore privacy reclaim and clear review blockers
cursoragent Aug 11, 2026
9f26621
chore(pr-1815): merge main and unblock conflicts
BigSimmo Aug 12, 2026
b0349a1
chore(pr-1815): append babysit ledger entry
BigSimmo Aug 12, 2026
42e10a2
fix(pr-1815): align shared-home empty-state assertions with updated copy
BigSimmo Aug 12, 2026
224b733
Merge branch 'main' into claude/spacing-icon-design-review-rxwh28
BigSimmo Aug 12, 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
7 changes: 3 additions & 4 deletions .design-sync/conventions.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -31,10 +31,9 @@ arbitrary-value form — never hardcoded colours:
`--info-solid`. For a filled non-danger status use `-bg` + `-text`.
- Elevation: the `--e0` … `--e4` ladder — `shadow-[var(--e2)]`, `hover:shadow-[var(--e3)]`.
`--e0` flush · `--e1` resting hairline · `--e2` cards/popovers · `--e3` hover/lifted chrome ·
`--e4` modals/sheets/drawers. The surviving role names are aliases onto tiers:
`--shadow-card`/`--shadow-soft`→`--e2`, `--shadow-hover`→`--e3`,
`--shadow-elevated`/`--shadow-lux`→`--e4`. `--shadow-tight` is retired — reach for `--e1`.
`--shadow-inset` stays bespoke.
`--e4` modals/sheets/drawers. The role names are aliases onto tiers:
`--shadow-tight`→`--e1`, `--shadow-card`/`--shadow-soft`→`--e2`, `--shadow-hover`→`--e3`,
`--shadow-elevated`/`--shadow-lux`→`--e4`. `--shadow-inset` stays bespoke.
Comment thread
BigSimmo marked this conversation as resolved.
Never hand-roll a `shadow-[0_…]` literal.
- Focus ring: `focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[color:var(--focus)]`.
Outline only — never add a companion `focus:ring-*` / `box-shadow`. The shared base rule is one
Expand Down
4 changes: 1 addition & 3 deletions AGENTS.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,9 +2,7 @@

# This is NOT the Next.js you know

This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices.

This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.

<!-- END:nextjs-agent-rules -->

Expand Down
8 changes: 5 additions & 3 deletions Dockerfile
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,7 +18,7 @@
# NEVER baked into the image — inject them at run time from the host's
# secret store.

FROM node:26-bookworm-slim@sha256:cd565714d4da3e84bfd341e31448f81d47c6362198f152345297c9c1154e6341 AS node-base
FROM node:24-bookworm-slim@sha256:235600a8101ab264e117b1768e925532262668dc9b581ef1dd7d96ced463b8e7 AS node-base

FROM node-base AS deps
WORKDIR /app
Expand All@@ -28,10 +28,11 @@ WORKDIR /app
COPY package.json package-lock.json .npmrc ./
COPY scripts/check-node-engine.cjs scripts/check-node-engine.cjs
COPY scripts/install-git-hooks.mjs scripts/install-git-hooks.mjs
COPY scripts/check-installed-lock-parity.mjs scripts/check-installed-lock-parity.mjs
# Registry blips (ECONNRESET) have failed CI app-image builds mid-install; retry
# the whole `npm ci` rather than relying only on per-request fetch retries.
RUN for attempt in 1 2 3; do \
NPM_CONFIG_ENGINE_STRICT=false npm ci --ignore-scripts --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
npm ci --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
if [ "$attempt" -eq 3 ]; then exit 1; fi; \
sleep $((attempt * 10)); \
done
Expand DownExpand Up@@ -67,8 +68,9 @@ WORKDIR /app
COPY package.json package-lock.json .npmrc ./
COPY scripts/check-node-engine.cjs scripts/check-node-engine.cjs
COPY scripts/install-git-hooks.mjs scripts/install-git-hooks.mjs
COPY scripts/check-installed-lock-parity.mjs scripts/check-installed-lock-parity.mjs
RUN for attempt in 1 2 3; do \
NPM_CONFIG_ENGINE_STRICT=false npm ci --omit=dev --ignore-scripts --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
npm ci --omit=dev --ignore-scripts --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
if [ "$attempt" -eq 3 ]; then exit 1; fi; \
sleep $((attempt * 10)); \
done
Expand Down
8 changes: 5 additions & 3 deletions Dockerfile.worker
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,16 +19,17 @@
# `server-only` marker to the standalone stub at build time (the job
# run-tsx.mjs previously did at runtime) and keeps npm packages external,
# so the bundle resolves them from the runner's production node_modules.
FROM node:26-bookworm-slim@sha256:cd565714d4da3e84bfd341e31448f81d47c6362198f152345297c9c1154e6341 AS node-base
FROM node:24-bookworm-slim@sha256:235600a8101ab264e117b1768e925532262668dc9b581ef1dd7d96ced463b8e7 AS node-base

FROM node-base AS build
WORKDIR /app
COPY package.json package-lock.json .npmrc ./
COPY scripts/check-node-engine.cjs scripts/check-node-engine.cjs
COPY scripts/install-git-hooks.mjs scripts/install-git-hooks.mjs
COPY scripts/check-installed-lock-parity.mjs scripts/check-installed-lock-parity.mjs
# Same install-retry contract as the app Dockerfile (registry ECONNRESET flakes).
RUN for attempt in 1 2 3; do \
NPM_CONFIG_ENGINE_STRICT=false npm ci --ignore-scripts --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
npm ci --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
Comment thread
coderabbitai[bot] marked this conversation as resolved.
if [ "$attempt" -eq 3 ]; then exit 1; fi; \
sleep $((attempt * 10)); \
done
Expand All@@ -42,8 +43,9 @@ WORKDIR /app
COPY package.json package-lock.json .npmrc ./
COPY scripts/check-node-engine.cjs scripts/check-node-engine.cjs
COPY scripts/install-git-hooks.mjs scripts/install-git-hooks.mjs
COPY scripts/check-installed-lock-parity.mjs scripts/check-installed-lock-parity.mjs
RUN for attempt in 1 2 3; do \
NPM_CONFIG_ENGINE_STRICT=false npm ci --omit=dev --ignore-scripts --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
npm ci --omit=dev --ignore-scripts --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
Comment thread
BigSimmo marked this conversation as resolved.
if [ "$attempt" -eq 3 ]; then exit 1; fi; \
sleep $((attempt * 10)); \
done
Expand Down
8 changes: 7 additions & 1 deletion docs/branch-review-ledger.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -880,13 +880,19 @@ Records before 2026-07-28 were written by hand and had drifted: 146 lines carrie
| 2026-08-10 | cursor/smarter-meds-search-9c1b (PR #1785) | 5cb0e11e077a3aaf5b8e4ea37b26ac72b0328997 | PR #1785 unblock/fix | before: Production UI (3) failed on service-detail scroll endpoint (remaining 67px) at 38b3bd0c; GitHub DIRTY behind-but-clean vs #1791. after: merged origin/main + re-scroll toPass fix in ui-tools service-detail test; threads untouched; do not merge | CI Production UI (3) logs; git merge-tree clean; prettier ui-tools; product fix in same tip commit as this row |
| 2026-08-10 | PR #1800 / codex/enhance-search-function-with-fuzzy-matching | 93da84b063c9c3f956da7ef79710d2cd00159735 | PR #1800 babysit | Synced origin/main (merge-tree clean; GitHub DIRTY was staleness). Fixed CodeRabbit SSRI/SNRI fuzzy cross-match (floor 5 chars) in follow-on tip commit. Clinical Governance Preflight required for clinicalRisk body. Codex P2 field-aware/per-token fuzzy deferred. RAG surfaces untouched. | focused catalog-search+consumers 49 pass; pr-policy body local ok; merge-tree clean |
| 2026-08-10 | PR #1803 / claude/codex-m4b-shadow-tight-migration-53a8kn | b778a56e9c3fa7642a783dde85e1130559d71e24 | shadow-tight token migration onto the e1 elevation tier and alias retirement (#262 part 1) | Migrated all 150 var(--shadow-tight) occurrences across 71 files to var(--e1) (90 gated production sites across 48 files, 60 mockup); deleted all three alias declarations (:root, .dark, forced-colors); pinned legacyShadowAliases 220 to 127 with exact per-path counts, closing 3 aliases of re-accumulated slack; added a whole-stylesheet absence assertion (mutation-verified); updated GATES.md section 3 plus a new section 6, TOKENS.md section 6, design-system.md, both redesign direction docs, .design-sync/conventions.md and ledger #262. Verified in Chromium that the ckb-v2 tier override is picked up by the alias substitution, so the change is value-preserving; that check is recorded as a prerequisite for the remaining six aliases. | npm run verify:cheap (30 static gates plus lint plus typecheck green; design-system contract passed, legacy shadow aliases 127; unit suite 553/554 files, 6024 tests passed, 1 pre-existing root-permission failure in tests/pr-handoff-stop.test.ts reproduced on untouched base a16dd26); npm run format:check whole tree; targeted Chromium computed-style measurement. verify:ui not run, Playwright browser revision drift #255, delegated to CI Production UI. No provider-backed gates. |
| 2026-08-11 | codex/answer-loading-ui-20260811 | 6758f8156f9d1b3e893981dfd7a1f6563aa90da0 | answer creation loading UI | No high-confidence findings | UI 3 passed; unit 8 passed; lint, typecheck, build, design-system and offline RAG passed; full suite 6022 passed with 16 unchanged baseline failures |
| 2026-08-11 | claude/codex-m4c-retire-shadow-nliak3 | 448a0d084c4cd2cda6153dd7f03dcb67c43a8df0 | DS Track A2 (#261): retire --shadow-focus; composer focus onto sanctioned outline; contract guard; baseline ratchet; design-system docs + ledger | Approved — PR #1807. Token deleted in both themes; .chat-composer-shell-delta:focus-within uses outline 2px var(--focus) at offset 2px and no longer overrides box-shadow. Reach premise corrected: 0 of 37 production routes render the class (only /mockups/calculators-search). legacyShadowAliases 127->125, globals.css pin 3->1. | check:design-system-contract PASS; design-token-contract.test.ts PASS + mutation-verified both ways; verify:pr-local PASS except pre-existing tests/pr-handoff-stop.test.ts failure baselined on untouched base e8b61d8; build PASS; check:rag:fixtures PASS (36 cases); Chromium look both themes on the mockup route (inspection only, rev 1194 vs pinned 1234 #255); verify:ui/verify:phone-chrome NOT run — delegated to CI |
| 2026-08-11 | claude/spacing-icon-design-review-rxwh28 | f8701a524f0eb22decc64ce1f626bdafe91751af | mode-home hero spacing rhythm + icon scale (PR #1815) | shipped: group copy reserve banded to measured wrap points, continuous hero medallion, phone composer glyph 1.1rem->icon-lg, surface glyphs onto size-icon-*, privacy link bottom-only negative margin (fixes 8px tap overhang on the APP-5 sentence), composer phone reserve 7.625->6.625rem | test 6043 passed/1 pre-existing root-perm failure; lint; typecheck; build; check:icon-scale; check:type-scale; check:design-system-contract; check:rag:fixtures; check:bundle-budget; prettier --check .; verify:ui NOT run (Playwright r1234 vs image r1194, #255 - delegate to CI Production UI) |
| 2026-08-11 | codex/answer-loading-ui-20260811 | 6758f8156f9d1b3e893981dfd7a1f6563aa90da0 | answer creation loading UI | No high-confidence findings | UI 3 passed; unit 8 passed; lint, typecheck, build, design-system and offline RAG passed; full suite 6022 passed with 16 unchanged baseline failures |
| 2026-08-11 | 1815 | be7461ef1f66357999995acefbeecaf95268e481 | unblock | local-build-pass | MergeTreeClean,UnitCoverage,StaticPRChecks,ContainerImages |
Comment thread
coderabbitai[bot] marked this conversation as resolved.
| 2026-08-11 | codex/answer-ecg-animation-20260811 | 12279a8309c225aa957ef1e65afc37545a0ce04c | answer ECG progress variants | No high-confidence findings; physical Safari/PWA remains residual acceptance | design contract, typecheck, focused unit 8/8, trace token 33/33, Chromium 4/4, offline RAG 574/574; full suite baseline/platform failures |
| 2026-08-11 | claude/spacing-icon-design-review-rxwh28 | 455bc198c077860fb1f830670a5fa9c1de08da52 | pr-1815 heavy review-and-fix | remote already merged main (shadow-tight Switch kept); cherry-picked privacy -mb-4 reclaim + calculators dock cancel; removed duplicate UniversalSearchAlsoMatches; rail-aware section-sheet focus restore; dispositioned CodeRabbit docs/ledger/gates nits and outdated Sentry skeleton gap | verify:cheap PASS prior tip; verify:pr-local PASS prior tip; vitest privacy+in-page-nav 28 passed on cherry-pick; merge-tree clean vs origin/main |
| 2026-08-11 | claude/spacing-icon-design-review-rxwh28 | 5b96281ee7da817d5ce7f1102004ebe6f861b920 | pr-1815 heavy review-and-fix | remote already merged main (shadow-tight Switch kept); cherry-picked privacy -mb-4 reclaim + calculators dock cancel; removed duplicate UniversalSearchAlsoMatches; rail-aware section-sheet focus restore; dispositioned CodeRabbit docs/ledger/gates nits and outdated Sentry skeleton gap | verify:cheap PASS prior tip; verify:pr-local PASS prior tip; vitest privacy+in-page-nav 28 passed on cherry-pick; merge-tree clean vs origin/main |
| 2026-08-11 | work | 6dcd695076d630d16aae594577763e8004361893 | Codex Cloud setup and local parity | P2 fixed: cache-friendly locked Cloud npm install; parity limitations documented | check:codex-cloud; codex-cloud-setup 24/24; full suite 6059 pass, 7 unrelated timeout/state failures |
| 2026-08-11 | 1822 | 4fab267f52b72992745e1d2e6975fb4847af447a | review-and-fix | clean | Build pass; Static PR checks pass; Change scope pass; PR mergeability pass; PR policy pass; Safety and config checks pass; Semgrep pass; Semgrep ingestion gate pass; Gitleaks pass; GitGuardian pass; Unit coverage pending; Production UI (1) pass; Production UI (2) pass; Production UI critical pending; Production UI (3) pending; Lighthouse budget pass; PR required pending |
| 2026-08-11 | 1822 | 4fab267f52b72992745e1d2e6975fb4847af447a | review-and-fix (supersedes 2026-08-11) | clean | Build pass; Static PR checks pass; Change scope pass; PR mergeability pass; PR policy pass; Safety and config checks pass; Semgrep pass; Semgrep ingestion gate pass; Gitleaks pass; GitGuardian pass; Unit coverage pass; Production UI (1) pass; Production UI (2) pass; Production UI (3) pass; Production UI critical pass; Lighthouse budget pass; PR required pass |
| 2026-08-11 | HEAD | 45fd05c8c3947835c0368666ff576c7a38b33ee4 | answer sources sheet and extracted answer text | Fixed raw PDF navigation/list artifacts and simplified source verification UX | answer-content unit; focused Chromium source flow; PR-local lint/typecheck reached full test |
| 2026-08-11 | 1821 | d76e90547dbdb104256b66a508c15c74302002fc | review-and-fix | dispositioned | PR policy:success; PR mergeability:success; Gitleaks:success; Semgrep:success; Semgrep ingestion gate:success; Safety and config checks:success; Build:success; Production UI critical:success; Production UI (1):success; Production UI (2):success; Production UI (3):failure test not reproduced outside this PR; PR required:failure |
| 2026-08-11 | work | 45fd05c8c3947835c0368666ff576c7a38b33ee4 | mobile evidence sheet UX, accessibility, and feedback logic | fixed unexplained claim marker, excess panel reserve, unclear purpose and feedback copy; no remaining high-confidence defects | focused DOM 7/7; Chromium evidence journey 1/1; offline RAG 23 suites/574 tests |
| 2026-08-11 | 1820 | 897ff11a4cdb13ae1c01f5eb149007847028f5aa | review-and-fix | fixed | Semgrep:IN_PROGRESS, Gitleaks:IN_PROGRESS, Semgrep ingestion gate:IN_PROGRESS, Static PR checks:QUEUED, Safety and config checks:QUEUED, Unit coverage:QUEUED, Build:QUEUED, Production UI critical:QUEUED, Lighthouse budget:QUEUED |
| 2026-08-12 | PR #1815 / claude/spacing-icon-design-review-rxwh28 | 9f266210f02081be54d407c70a85f52fed436128 | babysit | no remaining actionable findings; one pre-existing thread resolved as no-change (Dockerfile.worker follow-up needed) | required checks: Gitleaks PR policy PR required (all pass); targeted vitest passed: tests/document-frame-contract.test.ts + tests/in-page-nav-header.dom.test.tsx |
| 2026-08-12 | 1815 | 27ce96e1755055ceee2eeae02d6efdf11259fcde | babysit | fixed | Unit coverage: targeted vitest passed: tests/shared-home-empty-state.dom.test.tsx (17 passed). PR required still blocked on pre-existing check failure at old remote head before sync. |
8 changes: 3 additions & 5 deletions docs/design-system.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -150,11 +150,9 @@ Icon **glyphs** use the parallel `--spacing-icon-*` scale in `@theme`:
instead of bleeding. `--e0` flush · `--e1` resting hairline · `--e2` cards/popovers ·
`--e3` hover/lifted chrome · `--e4` modals/sheets/drawers. Dark lifts with a top highlight
rather than more black.
- The surviving role names are **aliases onto tiers**, not independent values:
- The role names are **aliases onto tiers**, not independent values: `--shadow-tight` → `--e1`;
`--shadow-card` / `--shadow-soft` → `--e2`; `--shadow-hover` → `--e3`; `--shadow-elevated` /
`--shadow-lux` → `--e4`. `--shadow-tight` is retired — the resting hairline is `--e1` at the
call site. `--shadow-focus` is retired too — focus is an `outline: 2px solid var(--focus)`,
never a companion shadow ring. `--shadow-inset`, `--shadow-rail-active` and
`--shadow-lux` → `--e4`. `--shadow-inset`, `--shadow-rail-active`, `--shadow-focus` and
`--glow-primary/soft` stay bespoke. All are removed under forced-colors, ladder included.
- No literal `box-shadow` values in components — reach for a tier
(`shadow-[var(--e2)]`, `hover:shadow-[var(--e3)]`) or a role alias.
Expand DownExpand Up@@ -222,7 +220,7 @@ image"}` — never a possibly-empty variable alone.
| `Number(query.page ?? 1)` | `parseInt` + `Number.isFinite` + `>= 1` clamp |
| `alt={caption}` | `alt={caption?.trim() \|\| "Clinical document image"}` |
| new `z-[73]` for a popover | an existing ladder rung, or `Sheet` |
| `shadow-[0_5px_12px_rgba(0,122,120,0.16)]` | `shadow-[var(--e1)]` |
| `shadow-[0_5px_12px_rgba(0,122,120,0.16)]` | `shadow-[var(--shadow-tight)]` |

## 9. Verification gates — Definition of Done for UI PRs

Expand Down
Loading
Loading