OCR env fix, --tone-purple token, and header chrome CSS layering - #181
Merged
Conversation
Adds scripts/capture-chrome-parity.ts: drives Playwright against the dev server with the smoke suite's demo API mocks and dumps getComputedStyle (incl. ::placeholder/::after) for the header + composer chrome across 16 states (home/answer/focus/document x mobile/desktop x light/dark). Selectors are refactor-stable (testids/aria/structure), never the chrome class names being migrated. --compare diffs two snapshots and exits nonzero on any difference, proving the @layer migration is pixel-identical. Snapshots write to the git-ignored scratch/ dir (machine-specific). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The "purple" mode-home pill tone (Youth service pathway dot) used a raw Tailwind palette color, the only non-token color introduced by #171. It did not adapt to dark mode or forced-colors like the surrounding tokens. Add --tone-purple (light #7c3aed == violet-600 so light mode is unchanged; brighter #a78bfa on dark; CanvasText under forced-colors) and reference it via bg-[color:var(--tone-purple)]. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…cal) The header + mode pill was the source of the recurring overlap/shadow bugs. Move edge-glass-header (+ responsive padding), universal-header, universal-header-mode-button, and universal-header-icon-control into @layer components so Tailwind utilities on those elements now win instead of silently losing to the unlayered class. Reconciled the three shadow conflicts so rendered output is unchanged: drop the dead shadow-[var(--shadow-tight)] on the two edge-glass-header headers (class already sets box-shadow:none), and drop shadow-[var(--shadow-inset)] on the mode button and the New-chat icon control so the layered class supplies its shadow directly (avoids Tailwind's shadow utility injecting transparent ring-placeholder layers). Verified byte-identical computed styles across 16 states (home/answer/focus/document x mobile/desktop x light/dark) with scripts/capture-chrome-parity.ts. The frosted COMPOSER chrome stays unlayered (deferred): PR #171 pushed it to ~92 conflicts in shared ui-primitives constants; tracked in docs/process-hardening.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:37e1bde1e2
ℹ️ 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".
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Continues the maintenance plan (items 1–2; item 3 decomposition follows as a separate PR). Three focused changes plus verification tooling:
npm run check:indexingfailed at the Python prerequisite step only becausePYTHON_BINdefaulted to barepython, which resolves to an agent tool-venv (3.11, missing PyMuPDF/pytesseract) instead of the real Python 3.12 that has them. Fixed by settingPYTHON_BINto the absolute 3.12 path in the (gitignored).env.local.check:indexingnow runs green end-to-end (2,065 docs, 0 failed) andtests/pdf-extractor.test.tspasses. No repo code change; documented here for the record.--tone-purpletoken: replaces the one rawbg-violet-600(the Youth service-pathway dot) introduced by Unified mode homes, branded sidebar, and global header/footer across all pages #171 with a themed token — light#7c3aed(= violet-600, so light mode is unchanged), brighter#a78bfaon dark,CanvasTextunder forced-colors.edge-glass-header(+ responsive padding),universal-header,universal-header-mode-button, anduniversal-header-icon-controlinto@layer componentsso Tailwind utilities on those elements win. The header/mode-pill was the source of the recurring overlap+shadow bugs. Reconciled the three shadow conflicts so output is unchanged, proven byte-identical across 16 states (home/answer/focus/document × mobile/desktop × light/dark) with the newscripts/capture-chrome-parity.ts.ui-primitivesconstants; a base/delta split is tracked indocs/process-hardening.md.Verification
npm run check:indexing— green end-to-end (item 1)scripts/capture-chrome-parity.ts)npm run verify:cheap— 834 unit tests passednpm run verify:ui— 64 Chromium tests passed (incl. the mergedui-overlapsuite, 10/10)npm run format:check/ typecheck / lint — cleanverify:release— not run (no release claim)Merged latest
origin/main(through #178); no conflicts.Clinical Governance Preflight
Styling/tooling/config only — no ingestion, answer generation, search/ranking, document access, privacy, or clinical output behavior touched.
Clinical KB Database(sjrfecxgysukkwxsowpy)Notes
scripts/capture-chrome-parity.tsis reusable infrastructure for the deferred composer-layering work. Gotcha documented: only reliable once the dev server has settled on the current CSS (capture twice, confirm agreement).🤖 Generated with Claude Code