fix(web): web colors come from theme tokens - #13371
Conversation
Enable shadcn/no-raw-colors as an error for all of apps/web/src, including components/ui (it had no findings there). 267 findings -> 0. Status colors move onto the tokens the theme already declares, so they follow custom themes and each light/dark pair collapses into one class: - amber -> warning / warning-foreground / warning-surface - emerald -> success / success-foreground - sky, blue -> info / info-foreground - red -> destructive / destructive-foreground The Diagnostics I/O read/write series (sky/amber) and process category dots use info/warning/success too, the nearest tokens, not status meanings. One-offs go to the nearest existing token: the favorite model star (yellow) uses warning, the artifact template sparkle badge (fuchsia) uses primary, the "waiting for input" toast icon (indigo) uses info-foreground, the CLI auth eyebrow (blue) uses primary, the provider driver option hover (zinc-50) uses accent, and the quit overlay pill (neutral-700 + white) inverts with foreground/background. SVG strokes in ContextWindowMeter and DesktopUpdateStatusIcon use stroke utilities with the existing tokens instead of inline color-mix(). No new tokens. Exemption: Icons.tsx and JetBrainsIcons.tsx have the rule off. They hold third-party marks that must keep their exact colors (brand logos, and now also the macOS Screen Recording / Accessibility pane marks from the SnapShot setup dialog and Codex's Computer Use mark from the work log, moved there from their feature files for that reason). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: unavailable · PR result: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This is largely a mechanical, presentation-focused migration from raw colors to theme tokens, with existing icon rendering preserved. It also adds a file-scoped override disabling the raw-color lint rule, which warrants human review. You can add or adjust custom eligibility rules. Learn more. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: pingdotgg/t3code/.coderabbit.yaml Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (28)
Included review availability: Your plan provides up to 10 included reviews per hour; 7 remain after this review. 📝 WalkthroughWalkthroughThe web UI replaces fixed color classes and inline color values with semantic theme tokens. The change also adds three shared SVG icons, replaces two local icon implementations with shared components, and enables raw-color linting for web source. ChangesWeb UI theme and icons
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~15 minutes Change: Bug fix Suggested reviewers: Merge Risk: ⚪ Minimal · up to This change standardizes web colors and reuses shared icons; no concrete user-facing failure is supported, so it is ready to merge after normal checks. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
Conflicts, resolved onto the fork's versions: - theme-token restyle (pingdotgg#13371, pingdotgg#13397): re-applied upstream's token edits (text-2xs, rounded-sm, bg-(--terminal-background), dropped panel max-h and heading tracking) onto the fork's restructured CommandPalette, composer chip, terminal drawer and settings panels. - sidebar stage art: followed upstream in dropping the focus-ring offset helper; its fork test is gone and the compact-crop test now checks the new data-stage-art marker. - review diff index (pingdotgg#12613): took upstream's rounded-down index mtime, which supersedes the fork's same-second copy. - preview broker tests: kept the fork's profile-routing tests beside upstream's live-tab-owner tests. - mobile environment row (pingdotgg#13302): kept the fork's rename button and added upstream's opensDetails chevron and switch alignment; the new environment detail screen now passes onRename too. - AgentAwarenessRelay test: upstream's new ServerEnvironment mock gains the fork's setEnvironmentLabel. - pnpm-lock.yaml regenerated from the merged manifests. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
## What's Changed * lint/unknown and static by @juliusmarminge in pingdotgg/t3code#13366 * fix(web): web colors come from theme tokens by @juliusmarminge in pingdotgg/t3code#13371 * fix(web): appearance classes use theme tokens and scale values by @juliusmarminge in pingdotgg/t3code#13397 * fix(server): keep Codex's reset answer when the re-probe fails by @juliusmarminge in pingdotgg/t3code#13363 * fix(mobile): branch search finds remote and space-typed branches by @Bil0000 in pingdotgg/t3code#13454 * chore(ci): use GPT 6 Sol Max for check agents by @juliusmarminge in pingdotgg/t3code#13473 * feat(server): show and redeem Claude banked resets by @Bil0000 in pingdotgg/t3code#13118 * fix(observability): a malformed OTEL_RESOURCE_ATTRIBUTES no longer stops startup by @yordis in pingdotgg/t3code#13469 * fix(antigravity): let Stop end commands that outlived their turn by @juliusmarminge in pingdotgg/t3code#13388 * fix(web,mobile): drop the baked-in tile from the Antigravity icon by @flamboh in pingdotgg/t3code#13373 * fix(marketing): use the official OpenCode and Antigravity logos by @flamboh in pingdotgg/t3code#13365 * fix(acp): keep one answer when a running tool reports progress by @juliusmarminge in pingdotgg/t3code#13386 * feat(web): run shell commands from chat in the thread terminal by @Bil0000 in pingdotgg/t3code#13060 * fix(antigravity): keep Windows runtime unpacking under MAX_PATH by @juliusmarminge in pingdotgg/t3code#13389 * fix(codex): the protocol generator runs again on Effect rc.115 by @juliusmarminge in pingdotgg/t3code#13480 * feat(codex): require Codex 0.156 and regenerate its protocol by @juliusmarminge in pingdotgg/t3code#13481 * feat(threads): add per-thread auto-settle switch by @t3dotgg in pingdotgg/t3code#11846 * fix(web): working and monitoring threads fade in the sidebar again by @t3dotgg in pingdotgg/t3code#13506 * fix(server): streamed section titles wait for the text under them by @t3dotgg in pingdotgg/t3code#13504 * fix(web): normalize disabled control opacity by @t3-code[bot] in pingdotgg/t3code#11441 **Full Changelog**: pingdotgg/t3code@v0.0.43-nightly.20260924.2213...v0.0.43-nightly.20260924.2223 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.43-nightly.20260924.2223
Turns on
@shadcn/lintno-raw-colorsas an error for all ofapps/web/src. Findings go from 267 to 0, and no theme tokens are added.Exemption:
Icons.tsxandJetBrainsIcons.tsx. Third-party marks must keep their exact colours. Three copied marks move intoIcons.tsxso the exemption covers them: the macOS Screen Recording and Accessibility panes, and Codex's Computer Use icon.Status colours use the theme's warning / success / info / error tokens, so they follow custom themes. In dark mode the old
-300text shades become the tokens'-400.One-offs moved to the nearest token (worth a look):
Also worth a look:
pullRequestIcons.tsxare an example (merged = violet), so those stay raw and unreported.Before / after
Merged-PR violet is unchanged (the rule cannot see colours kept in objects):
Claude Opus 5.5 via Claude Code.
🤖 Generated with Claude Code