apps/mobile/generated-uniwind-default-theme-variables.json | 136 ++++ apps/mobile/generated-uniwind-theme-names.json | 12 + apps/mobile/generated-uniwind-themes.css | 1374 ++++++++++++++++++++++++++++++++ apps/mobile/global.css | 1 + apps/mobile/metro.config.js | 2 + apps/mobile/package.json | 1 + apps/mobile/scripts/generate-uniwind-themes.mts | 262 ++++++ apps/mobile/scripts/generate-uniwind-themes.test.ts | 55 ++ apps/mobile/src/App.tsx | 5 +- apps/mobile/src/components/AndroidAnchoredMenu.tsx | 17 +- apps/mobile/src/components/AndroidScreenHeader.tsx | 9 +- apps/mobile/src/components/AppSymbol.tsx | 11 +- apps/mobile/src/components/CompactBrandTitle.tsx | 38 +- apps/mobile/src/components/ComposerAttachmentStrip.tsx | 4 +- apps/mobile/src/components/ComposerToolbar.tsx | 119 +-- apps/mobile/src/components/ConfirmDialogHost.tsx | 9 +- apps/mobile/src/components/ControlPill.tsx | 22 +- apps/mobile/src/components/ErrorBanner.tsx | 6 +- apps/mobile/src/components/GlassSafeAreaView.tsx | 13 +- apps/mobile/src/components/GlassSurface.tsx | 52 +- apps/mobile/src/components/LoadingScreen.tsx | 8 +- apps/mobile/src/components/PierreEntryIcon.tsx | 11 +- apps/mobile/src/components/ProjectFavicon.tsx | 4 +- apps/mobile/src/components/SourceControlIcon.tsx | 17 +- apps/mobile/src/components/T3Wordmark.tsx | 15 +- apps/mobile/src/components/ThemedSwitch.tsx | 20 +- apps/mobile/src/features/archive/ArchivedThreadsScreen.tsx | 36 +- apps/mobile/src/features/connection/CloudEnvironmentRows.tsx | 22 +- apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx | 25 +- apps/mobile/src/features/connection/ConnectionSheetButton.tsx | 14 +- apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx | 4 +- apps/mobile/src/features/connection/ConnectionsRouteScreen.tsx | 6 +- apps/mobile/src/features/connection/EnvironmentConnectionNotice.tsx | 6 +- apps/mobile/src/features/connection/connectionTone.ts | 24 +- apps/mobile/src/features/files/FileMarkdownPreview.tsx | 19 +- apps/mobile/src/features/files/FileTreeBrowser.tsx | 8 +- apps/mobile/src/features/files/SourceFileSurface.tsx | 6 +- apps/mobile/src/features/files/ThreadFilesRouteScreen.tsx | 23 +- apps/mobile/src/features/files/thread-file-navigator-pane.tsx | 22 +- apps/mobile/src/features/home/AndroidHomeFab.tsx | 5 +- apps/mobile/src/features/home/HomeHeader.tsx | 26 +- apps/mobile/src/features/home/HomeScreen.tsx | 4 +- apps/mobile/src/features/home/WorkspaceConnectionTitle.tsx | 6 +- apps/mobile/src/features/layout/WorkspaceEmptyDetail.tsx | 10 +- apps/mobile/src/features/layout/workspace-pane-divider.tsx | 16 +- apps/mobile/src/features/projects/AddProjectScreen.tsx | 45 +- apps/mobile/src/features/review/ReviewCommentComposerSheet.tsx | 9 +- apps/mobile/src/features/review/ReviewSheet.tsx | 27 +- apps/mobile/src/features/review/nativeReviewDiffAdapter.test.ts | 25 +- apps/mobile/src/features/review/nativeReviewDiffAdapter.ts | 10 +- apps/mobile/src/features/review/useNativeReviewDiffBridge.ts | 7 +- apps/mobile/src/features/settings/SettingsClientStorageRouteScreen.tsx | 18 +- apps/mobile/src/features/settings/SettingsEnvironmentsRouteScreen.tsx | 7 +- apps/mobile/src/features/settings/SettingsProjectGroupingRouteScreen.tsx | 4 +- apps/mobile/src/features/settings/SettingsRouteScreen.tsx | 4 +- apps/mobile/src/features/settings/appearance/AppearancePreferencesProvider.tsx | 167 ++-- apps/mobile/src/features/settings/appearance/components/AppearancePreviews.tsx | 7 +- apps/mobile/src/features/settings/appearance/components/FontSizeSliderRow.tsx | 15 +- apps/mobile/src/features/settings/appearance/sections/ThemeAppearanceSection.tsx | 190 ++--- apps/mobile/src/features/settings/appearance/useScaledTextRole.ts | 46 +- apps/mobile/src/features/settings/components/SettingsLegalDocumentRouteScreen.tsx | 10 +- apps/mobile/src/features/settings/components/SettingsRow.tsx | 13 +- apps/mobile/src/features/settings/components/SettingsSwitchRow.tsx | 11 +- apps/mobile/src/features/terminal/ThreadTerminalPanel.tsx | 9 +- apps/mobile/src/features/threads/ComposerCommandPopover.tsx | 31 +- apps/mobile/src/features/threads/GitActionProgressOverlay.tsx | 34 +- apps/mobile/src/features/threads/NewTaskContextPickerScreens.tsx | 19 +- apps/mobile/src/features/threads/NewTaskDraftScreen.tsx | 50 +- apps/mobile/src/features/threads/NewTaskRouteScreen.tsx | 9 +- apps/mobile/src/features/threads/PendingApprovalCard.tsx | 16 +- apps/mobile/src/features/threads/PendingUserInputCard.tsx | 48 +- apps/mobile/src/features/threads/ThreadComposer.tsx | 55 +- apps/mobile/src/features/threads/ThreadFeed.tsx | 102 ++- apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx | 42 +- apps/mobile/src/features/threads/ThreadSettingsSheet.tsx | 24 +- apps/mobile/src/features/threads/git/GitCommitSheet.tsx | 2 +- apps/mobile/src/features/threads/git/GitOverviewSheet.tsx | 11 +- apps/mobile/src/features/threads/git/gitSheetComponents.tsx | 36 +- apps/mobile/src/features/threads/sidebar-filter-button.tsx | 11 +- apps/mobile/src/features/threads/sidebar-header-actions.tsx | 11 +- apps/mobile/src/features/threads/sidebar-navigation-shell.tsx | 4 +- apps/mobile/src/features/threads/thread-list-items.tsx | 39 +- apps/mobile/src/features/threads/thread-list-v2-items.tsx | 48 +- apps/mobile/src/features/threads/thread-search-match.tsx | 4 +- apps/mobile/src/features/threads/thread-work-log.tsx | 19 +- apps/mobile/src/features/threads/threadPresentation.ts | 24 +- apps/mobile/src/lib/mobileDefaultTheme.ts | 139 ---- apps/mobile/src/lib/mobileTheme.test-support.ts | 20 + apps/mobile/src/lib/mobileTheme.test.ts | 42 +- apps/mobile/src/lib/mobileTheme.ts | 20 +- apps/mobile/src/lib/mobileThemeRuntime.test.ts | 82 ++ apps/mobile/src/lib/mobileThemeRuntime.ts | 75 ++ apps/mobile/src/lib/mobileThemeVariables.test.ts | 25 + apps/mobile/src/lib/mobileThemeVariables.ts | 27 + apps/mobile/src/lib/storage.test.ts | 6 + apps/mobile/src/lib/useFontFamily.ts | 14 +- apps/mobile/src/lib/useMobileNavigationTheme.ts | 33 +- apps/mobile/src/lib/useThemeColor.ts | 12 - apps/mobile/src/lib/useUniwindTheme.ts | 21 + apps/mobile/src/native/T3ComposerEditor.ios.tsx | 30 +- apps/mobile/src/native/T3ComposerEditor.native.tsx | 30 +- apps/mobile/src/native/T3ComposerEditor.tsx | 7 +- apps/mobile/src/state/thread-pr-presentation.ts | 6 +- apps/mobile/src/state/use-thread-pr.test.ts | 2 +- apps/mobile/uniwind-types.d.ts | 2 +- docs/user/mobile-appearance.md | 3 + oxlint-plugin-t3code/index.ts | 2 + oxlint-plugin-t3code/rules/no-mobile-uniwind-theme-escape-hatches.test.ts | 264 ++++++ oxlint-plugin-t3code/rules/no-mobile-uniwind-theme-escape-hatches.ts | 225 ++++++ oxlint-plugin-t3code/test/utils.ts | 1 + vite.config.ts | 1 + 111 files changed, 3636 insertions(+), 1221 deletions(-)