polish(design): Phase 5 sweep — forced-colors button labels, tools rail titles, privacy microcopy#896
Conversation
…n, privacy microcopy
Phase 5 design-polish sweep (audit-then-fix). Audit: 3 design guards clean;
static re-score of docs/redesign/07-token-adoption-audit.md (all July 3 debt
resolved); 43-capture route sweep (15 routes x desktop/phone + 320px spots +
dark/reduced-motion/forced-colors) with 0 overflow / 0 console errors.
Fixes:
- globals.css forced-colors block: Chromium paints a Canvas backplate behind
glyph runs, so glyph tokens resolving to Canvas/ButtonFace rendered solid
button labels as blank boxes (axe-invisible). Command controls flatten to
the native HCM pairing (ButtonFace fill / ButtonText glyphs — SVG strokes
get no backplate, so a dark fill also swallows icons); accent fills keep
their system colors and flip only glyph tokens to ButtonText. New
ui-accessibility.spec.ts test locks the tokens off the Canvas resolution.
- applications-launcher-page.tsx: desktop 6-up quick-action rail truncated
card titles at 1440x1000 ("Ask eviden...", "Safety che..."); tightened card
metrics (icon col 2.25rem->2rem, gap-3->gap-2, px-3->px-2.5, icon h-9->h-8)
so all six titles render whole. Phone icon grid untouched.
- privacy/page.tsx: JSX drops a newline adjacent to a tag, rendering
"patient-record systemand does not ask"; explicit interword space added and
locked by a privacy-ui.test.ts assertion.
Dated July 18 run appended to docs/redesign/07-token-adoption-audit.md
(design-qa.md is archived; the rubric doc carries dated audit runs).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
🚧 Files skipped from review as they are similar to previous changes (3)
📝 WalkthroughWalkthroughThis change updates forced-colors token mappings, adjusts desktop quick-action sizing, reformats privacy-page copy, adds accessibility and privacy UI assertions, and records the Phase 5 design-polish audit results. ChangesDesign polish
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
|
@copilot resolve the merge conflicts on this branch. |
…a-review-asi3wb # Conflicts: # docs/branch-review-ledger.md
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0c407d1c1f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@copilot resolve the merge conflicts on this branch. |
Review follow-up: ButtonText is not palette-guaranteed to contrast a Mark fill in arbitrary forced-colors schemes; MarkText is Mark's paired foreground. No visual change in the emulated palette (both resolve black). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
|
@codex resolve actionable Codex review findings for this pull request and current head using the repository instructions. This is the pull request's single automatic repair pass: do not perform a fresh review, create new standalone findings, or request another review. Work only the existing unresolved Codex threads on the current head. Always fix P0 and P1 findings. For P2 and lower findings, fix only clear, scoped, low-risk issues; otherwise disposition them with a concise reason. After fixing or dispositioning a thread, reply in that thread with as the first line, followed by a concise summary; that marker authorizes the workflow to close that exact thread. If human input or new authorization is required, do not use the marker and leave the thread open with the blocker. Finish only after every actionable thread is fixed or dispositioned and closed, or explicitly left open for a human decision. Do not update the branch from main, address unrelated reviews, broaden scope, or create more than one scoped fix commit. Do not use external APIs, paid services, credentials, dependency changes, or broad refactors unless explicitly authorized. Add targeted tests where behavior changes and run the narrowest relevant validation. |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
check:type-scale/check:icon-scale/brand:checkstrict); full re-run of thedocs/redesign/07-token-adoption-audit.mdgrep method shows all July 3 debt resolved on current main (M1–M3 done; L4 down to a deliberate theme-aware glass-highlight idiom; L5/L7 gone; production components have 0 raw-palette classes and 0 non-legitimate hex). Live route sweep: 43 captures across 15 production routes × (1440×1000 + 390×844) + 320×844 spots + dark/reduced-motion/forced-colors spots — 0 horizontal overflow, 0 console errors, 0 failed requests. Dated "July 18 run" appended todocs/redesign/07-token-adoption-audit.md(the archiveddocs/archive/design-qa.mdwas not resurrected; the rubric doc carries dated runs).src/app/globals.css, tokens-only): Chromium paints a Canvas backplate behind every glyph run in forced-colors mode, so glyph tokens resolving to the Canvas/ButtonFace family rendered solid-button labels as blank white boxes (sidebar "New chat", every accent-filled labeled button such as the tools "Ask" CTA). axe cannot detect this — it reads CSS, not painted pixels. SVG strokes get no backplate, so the dark--commandfill also swallowed ButtonText icons. Fix inside the existing@media (forced-colors: active)block: command controls flatten to the native HCM pairing (ButtonFacefill /ButtonTextglyphs); accent fills keep their system colors and flip only their glyph tokens (--primary-contrast,--clinical-accent-contrast,--danger-solid-contrast) toButtonText. Non-forced modes untouched. A newui-accessibility.spec.tstest locks all four glyph tokens off the Canvas resolution and asserts the visible New chat label color.src/components/applications-launcher-page.tsx): the desktop 6-up rail truncated card titles at 1440×1000 ("Ask eviden…", "Safety che…"). Tightened card metrics (icon column 2.25rem→2rem, gap-3→gap-2, px-3→px-2.5, icon h-9→h-8); verified programmatically that all six titles now render unclipped. Descriptions remain designed-supplementary ellipsis (full copy lives in the All-tools cards and aria-labels). The phone icon-grid variant is untouched.src/app/privacy/page.tsx): rendered "…not a patient-record systemand does not ask…" because JSX drops a newline adjacent to a tag. Fixed with an explicit same-line space; locked by a newtests/privacy-ui.test.tsassertion on the server-rendered markup.Verification
npm run verify:pr-local— runtime/format/lint/typecheck pass; full unit suite 2806 passed / 1 failed (the long-baselined container-onlypdf-extraction-budgetchild-process artifact, hosted-CI-green through feat(pwa): retirement kill-switch, offline-version binding guard, and dev teardown flag #826/feat(pwa): manifest launch/display fallbacks, monochrome icons, iOS install hint #835/feat(pwa): align the offline page with the permanent colour direction #872/perf(services): keep the services snapshot out of the client route chunk #890);npm run build(client-bundle secret scan passed) andnpm run check:rag:fixtures(36 golden cases, 21 suites) passnpm run verify:ui— 220 passed / 2 failed: only the two long-baselined container-only artifacts (ui-pwainstallabilityin-incognito,ui-smokePDF-canvas mobile), both untouched by this diff and hosted-CI-green on the four prior phase PRsnpm run test:e2e:accessibility— 8/8 including the new forced-colors glyph-token regression testnpm run check:bundle-budgetafter production build — 1290.6 KiB gzip vs the Phase 4-ratcheted 1278.6 KiB enforced baseline, within tolerance (drift is from unrelated main merges since the ratchet; this diff adds only CSS bytes)npm run check:type-scale,npm run check:icon-scale,npm run brand:check(strict) all cleanprivacy-ui,route-error-boundary,clinical-dashboard-merge-artifacts— 14/14npm run verify:releaseintentionally not run: provider-backed release gate requires explicit user confirmation per repo policy (flagged as the plan's post-Phase 5 confirmation checkpoint)Risk and rollout
@media (forced-colors: active); the launcher change alters only desktop card metrics; the privacy change is a one-space microcopy fix. No cache semantics, no PWA surface, no behaviour change.Clinical Governance Preflight
Clinical KB Database(sjrfecxgysukkwxsowpy)Notes
src/app/privacy/page.tsx, a rendered-whitespace microcopy fix with identical copy semantics. No answer/citation, source-governance, document-access, Supabase, or decision-support surface is touched; the checklist above was verified against that scope.sweep-results.json, 4× zoomed before/after forced-colors captures, post-fix rail clip-state probe (all sixtitleClipped: false).verify:releaseconfirmation checkpoint is now due; it runs only with explicit user confirmation.🤖 Generated with Claude Code
https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
Summary by CodeRabbit
Accessibility
UI Improvements
Documentation