feat(mobile): add built-in themes - #6619
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Needs human review This PR introduces a significant new feature adding built-in theme selection to the mobile app, with new UI components, shared palette infrastructure, and cross-cutting changes to color handling across 80+ files. New user-facing capabilities of this scope warrant human review. You can customize Macroscope's approvability policy. Learn more. |
e09f938 to
205321d
Compare
205321d to
60962b7
Compare
60962b7 to
55057a7
Compare
55057a7 to
37c3e7c
Compare
37c3e7c to
f6d707e
Compare
f6d707e to
1539ad5
Compare
1539ad5 to
b14fc73
Compare
5d38b1a to
548a43d
Compare
548a43d to
0e3de52
Compare
318f989 to
173deb9
Compare
173deb9 to
6e51e9a
Compare
79058e0 to
f92a87f
Compare
bbffc17 to
82a798e
Compare
Share the desktop theme palettes with mobile, add appearance controls, and apply theme colors across native surfaces.
Head branch was pushed to by a user without write access
82a798e to
d30a03d
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit d30a03d. Configure here.
- Support selecting palettes in the screenshot CLI and CI workflow - Apply requested themes natively and isolate output folders per palette - Add validation, tests, and operational documentation
d30a03d to
cd54e7b
Compare
## What's Changed * test: favor behavior over implementation details by @t3-code[bot] in pingdotgg/t3code#7157 * feat(mobile): add built-in themes by @chrisdeeming in pingdotgg/t3code#6619 * docs: point CLAUDE.md at AGENTS.md with an @import instead of a symlink by @UtkarshUsername in pingdotgg/t3code#7171 **Full Changelog**: pingdotgg/t3code@v0.0.34-nightly.20260816.1106...v0.0.34-nightly.20260816.1108 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.34-nightly.20260816.1108
Re-applies the deltas that mid-stack blob reverts discarded, and merges main's round-9 work into the v2-owned surfaces: - settings: main's Integrations page (#7082) coexists with the branch's Scheduled Tasks page in the path union, section labels, icons, and search catalog - contracts: main's preview appearance/zoom/viewport settings imports restored beside the branch's modelSelection home for ModelSelection - mobile: main's built-in themes (#6619) re-applied to the v2 thread screens and work log (useThemeColor over hand-rolled color-scheme ternaries) - MessagesTimeline: main's #7157 cleanup adopted (toolCallExpandedBody class name unexported, implementation-detail test dropped) - ChangedFilesTree: main's styled tooltip (#7209) carrying the v2 runId - pullRequestDetail tests: branch's row-action coverage renamed onto main's buildAddSelectionToAgentHandoff (#6597) - lint: migrated the six branch-owned native title tooltips that main's new no-native-title-tooltip rule (#7209) flags to styled Tooltips (GitActionsControl, QueuedRunsControl, TimelineSystemDivider, MessagesTimeline intent badge and MCP tool logo) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

What Changed
Adds built-in theme support to the React Native app, using the same shared palettes and previews as the desktop app.
This PR intentionally does not include theme importing, custom theme creation, or theme editing.
Why
Mobile previously used one fixed palette and could not match the built-in themes available in the desktop app.
Sharing the palette definitions and preview logic gives both clients the same source of truth, while keeping the React Native theme layer responsible for translating those values into native surfaces.
UI Changes
Video walkthrough:
mobile_themes.mp4
The walkthrough demonstrates theme selection, color-scheme switching, the thread list, thread view, file search, and the themed code viewer.
A video is included instead of screenshots because it shows the palette transitions and cross-surface behavior more clearly.
Checklist
Note
Medium Risk
Wide UI surface area and preference persistence affect default visuals and native diff/terminal theming; showcase timing changes could affect screenshot CI reliability.
Overview
Adds six built-in palettes (T3 Code, T3 Chat, Grove, Ocean, Ember, Iris) with System / Light / Dark mode, persisted per light and dark appearance, wired through
AppearancePreferencesProviderand shared@t3tools/sharedpalette definitions.Settings gains a Theme section (preview orbs, per-appearance picks). The app stops using
useColorSchemefor UI and instead uses effective theme appearance plus injected CSS variables (Uniwind), including new tokens (--color-sheet-solid, split switch track/thumb colors, user-bubble skill text).ThemedSwitchcentralizes switch styling; markdown, composer, sheets, and native review/terminal colors pull from theme tokens.Native review/terminal themes now follow the selected palette (opaque hex for native bridges); showcase capture reads
--showcaseTheme, applies the palette before screenshots, gates review on a native draw signal, and the GitHub Actions workflow adds athemeinput with longer timeouts when capturing all themes.Reviewed by Cursor Bugbot for commit cd54e7b. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add built-in theme palette selection to the mobile app
ThemeAppearanceSectionto the mobile Appearance settings screen, letting users pick from multiple built-in palettes (Grove, Ocean, Ember, Iris) in addition to the default T3 Code theme.@t3tools/shared/themePalettesand@t3tools/shared/themePreview, consumed by both web and mobile.useColorSchemecalls throughout the mobile app withuseAppearancePreferences, so all UI components respect the in-app appearance and palette selection.ThemedSwitchcomponent that applies theme tokens for track and thumb colors, replacing nativeSwitchin settings, environment, and task screens.--themeflag to capture screenshots per palette; native iOS and Android modules exposegetShowcaseThemeto receive the requested palette from the test runner.AppearancePreferencesProviderto manage per-appearance theme IDs, apply CSS variables for both light and dark palettes, and expose setters for theme selection.FORM_SHEET_PRESENTATION_OPTIONSand several header/navigator configs no longer set explicit background colors; screens that previously relied on these defaults must now declarebg-sheetorbg-sheet-solidthemselves.Macroscope summarized cd54e7b.