Retire Therapy Compass parallel CSS into Clinical Sky tokens (PR-T) - #1569
Conversation
First slice of #183. ui.tsx is now completely free of tc-* classes, and nav.tsx, workspace.tsx and therapy-card.tsx no longer use any numbered one-off class. Sizes map to the nearest scale rung so the mode does not visibly change, per the agreed constraint. The audit corrected the scope: therapy-compass.css defines 459 selectors across 3286 lines, not the 81 base classes #183 recorded. 353 of those are auto-extracted numbered one-offs (.tc-screens-search-screen-009 and friends), which are per-element and carry no cross-file coupling. That makes them the safe independent unit, so this slice migrates only those plus the primitive kit. Three ordering constraints the audit surfaced, recorded for the rest of the teardown: - tc-root must be removed LAST. Every numbered rule is scoped `.tc-root .tc-*`, so dropping it early unstyles every un-migrated screen. workspace.tsx keeps it with a comment saying so. - controls.ts and its call sites must move together. State modifiers are two-class selectors (.tc-control-outline.tc-is-selected), so retiring the base class without the call sites silently drops the selected state. - Some rules are irreducible to utilities and need a home in globals.css rather than deletion: the print isolation block (body:has(.tc-root) * visibility plus the named @page), the #phone-header-collapse-addon-slot contextual override, and the tc-scroll scrollbar styling. Tone handling reuses the shared recipes where they are provably identical: --success is an alias of --success-text and --success-soft of --success-bg, so toneSuccess/toneInfo/toneWarning render exactly as the tc classes did. Therapy keeps local neutral/purple/accent, which the shared kit lacks, and keeps its centred loading/empty states rather than the left-aligned shared EmptyState, so the CSS retires without the mode changing. Two gates had to move with the code, both preserving their intent: - check-design-system-contract.mjs allowed only the --tc-meter-width inline style in ui.tsx. That variable existed solely to hand a data-driven percentage to the stylesheet being retired, so the exemption now covers setting the width directly. - therapy-compass-responsive-contract.test.ts counted phone reflow only as tc-stack-sm / tc-mobile-stack. It now also counts the Tailwind grid-cols-1 + sm:grid-cols-* expression of the same guarantee, and checks the disabled Favourite button by its cursor-not-allowed utility rather than a class name that is going away. Note for the endgame: check-design-system-contract.mjs asserts on therapy-compass.css contents (--tc-paper-muted, the .tc-paper focus rule, .tc-btn hover/disabled, and the paper rule boundaries). Deleting the file fails that gate until those assertions are rewritten against the migrated markup. Gate: check:design-system-contract, check:type-scale, check:icon-scale, lint, prettier all pass; therapy-compass-responsive-contract 10/10 passed. Co-authored-by: Cursor <cursoragent@cursor.com>
Delete therapy-compass.css after migrating screens and control recipes to token-backed Tailwind, keep only print/paper/compare residuals in globals.css, and close ledger #183 once verify:cheap is green. Co-authored-by: Cursor <cursoragent@cursor.com>
Follow-up to the CSS retirement commit so the push blob matches format:check. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 14 minutes Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (28)
Comment |
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
|
@cursoragent Unblock the current open PR. Confirm the PR number and GitHub head first from context. If more than one open PR could apply, stop and say which one you would use and why. Fetch and start from the remote tip that matches that GitHub head. If the named branch ref is missing or stale, use the PR head ref. Preserve unrelated local WIP; do not discard dirty work; do not treat a local-ahead commit as the reviewed tip. Do not merge the PR, force-push, rebase, or arm auto-merge. No provider-backed gates without approval. If you cannot push or resolve threads, diagnose and comment only; if inline replies fail, resolve when possible and put blocker dispositions in the summary comment. If auto-merge is already armed, push only for a real blocker and avoid cancelling in-flight required CI unless the push clears that blocker. If the PR is already merged or closed: confirm outcome, post one summary, and stop. Primary job: clear mergeability and required-CI blockers on this tip. Do a full product review only if needed to explain or fix a blocker. Stay light otherwise—no broad verification suites or Playwright unless needed to prove one concrete unblock fix. Snapshot the GitHub head: tip, behind/ahead, mergeable state, merge-tree versus origin/main (real conflict versus behind-but-clean), required checks on that tip including Production UI when selected, and unresolved threads that block merge or required CI. Missing checks while dirty are not green. Tip moved → re-snapshot. Ledger-lookup against that GitHub head under an unblock/fix scope for this PR. If already handled at this head for unblock work, merge-tree clean, required checks green, and no blocking threads: summarize, comment, stop. Unblock once: real conflict → merge origin/main with the smallest correct resolution (prefer main’s shared queues; keep this PR’s notes); behind-but-clean → one sync, late if required CI is in flight; clean → leave. skip-branch-sync and similar labels do not block a manual sync needed to clear a real blocker. No sync thrash. After any sync or push, re-snapshot tip, merge-tree, and required checks before declaring done. Dedupe the ledger if a merge touched it. Fix only what blocks required checks or mergeability on this tip. Ignore advisory red unless it reveals a real required failure. Prefer the smallest safe fix; if a bot/autofix commit caused the break, prefer revert. Prove with the smallest targeted check only. Format and commit before push. Push only blocker-fix commits. Append ledger for the final GitHub head under the unblock scope. Never push a ledger-only tip. One PR comment: tip, sync/merge-tree, what blocked and what you fixed or dispositioned, required CI status, residual risks; merge left to me. Stop when merge-tree is clean on the current GitHub tip, no blocking threads remain for merge/required CI, and required checks are green or clearly in progress. |
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
Unblock snapshot — PR #1569Tip: What blockedAt the prior tip What landed before this pass (already on tip)
This pass
Required CI (as of comment)In progress / green so far — no failures. Residual risks (non-blocking)Devin also noted possible same-property Tailwind cascade hazards in other therapy-compass call sites ( Merge left to you (auto-merge should take it when required checks go green). |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a3cedeb1a9
ℹ️ 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".
|
@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. The only repository destination is BigSimmo/Database, and the only branch destination is the pull request head branch claude/ds-v2-therapy-teardown at starting commit 17f0526; never publish fixes to a detached or synthetic work branch and never create a stacked pull request. Use the authenticated GitHub connector to commit each approved fix to BigSimmo/Database:claude/ds-v2-therapy-teardown, then verify that the pull request head contains the published commit before reporting success. 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. For a fixed thread, reply with as the first line and as the second line. For a no-code disposition, use followed by . These result markers authorize the workflow to close that exact thread only after it verifies a fixed commit is the pull request head; a local-only commit is not a fix. If publication or verification fails, do not use either result marker, do not claim success, and leave the thread open with the blocker. If human input or new authorization is required, do the same. 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. 🚀 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
src/components/therapy-compass/therapy-compass.css(~3,286 lines /tc-*selectors) and remove its import fromsrc/app/(search-app)/layout.tsx.therapyBtn,outlineControl,softControl, etc. incontrols.ts), with selected/pressed state carried byaria-pressed/aria-currentrather thantc-is-*classes.qtc-identifiers untouched (finding C).focusRingwas renamed away on main — define the same focus-token string locally incontrols.tsso therapy buttons are not coupled tosearchFocusRing.#205(fresh id for this teardown; main's#183remains the Sentry alert task) and update#016(e).This is PR-T of the Site-wide Fable V2 plan, Wave 0.
Verification
npm run check:design-system-contract— passed (639 production files)docs:check-links,docs:check-scripts,docs:check-inventory,docs:check-index,check:outstanding-issues— all greennpm run test:e2e:critical -- --max-failures=1— 15 passednpm run verify:ui— 344 passed (13.5m)npm run verify:pr-local -- --files <explicit branch diff>— green (unit suite, production build, client-bundle secret scan,check:rag:fixtures36 golden cases / 23 suites)Risk and rollout
tc-*class would show as unstyled controls — contract check + Therapy journeys inverify:uicover that.therapy-compass.css+ prior class names).main→ psychiatry.tools auto-deploy of this UI change.Notes
docs/branch-review-ledger.mdrows appended vialedger:append(product tipf9cf75fef/ supersede covering post-append tip).#183for this teardown was not reused;#183on main stays the Sentry metric-alert task.