Skip to content

Commit 3e9bff3

Browse files
committed
style: complete light theme with coherent Catppuccin Latte tokens
The light color scheme omitted primaryContainer/secondaryContainer/ tertiaryContainer, their on* pairs, and outlineVariant, which 50+ UI call-sites consume (borders, run-log/setup/scene cards). Those fell back to mismatched Material defaults, so the app only looked coherent in dark mode. Mirror the dark scheme's structure with a full Catppuccin Latte palette so every semantic token is defined in both modes. Also correct the README theme claim (system-following light theme, not a manual toggle).
1 parent 117a01c commit 3e9bff3

2 files changed

Lines changed: 35 additions & 14 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
**OEM reliability guidance** — detects Samsung/Xiaomi/OnePlus/Oppo/Realme/Vivo/Huawei/etc. and surfaces per-vendor battery-killer remediation with deep-links and dontkillmyapp.com references
3535
**Template expression runtime** — action arguments and conditions support bounded `{{ ... }}` expansion with scoped variables, arrays, JSON paths, string/math functions, traces, and warnings
3636
**FOSS geofence source/evaluator** — Location context matching supports platform GPS/network fixes, balanced provider cadence, policy disclosures, radius, accuracy, persisted dwell checks, stale-key cleanup, inspector dwell detail, a Location evidence template, adb run-log/logcat evidence collection, provider-cadence/unplugged-sample/post-reconnect history gates, and API 36 background event-delivery smoke evidence without Play Services
37-
**AMOLED-first** — Catppuccin Mocha palette, light theme toggle
37+
**AMOLED-first** — Catppuccin Mocha (dark) and Latte (light) palettes, following the system theme
3838
**Compose UI reintegration started** — active navigation now manages profiles, tasks, actions, contexts, and run logs from Room
3939
**Profile templates** — guided starter profiles with variable slots, safety notes, disabled-by-default installation, and a setup-required Location evidence template
4040
**Scene element editor** — Room-backed scene list/create/delete plus button, text, slider, and image element editing with tap/long-press task bindings, scaled canvas previews, and drag-to-move layout edits

app/src/main/java/com/opentasker/ui/theme/Theme.kt

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -58,24 +58,45 @@ private val Amoled = darkColorScheme(
5858
outlineVariant = Overlay0.copy(alpha = 0.5f),
5959
)
6060

61+
// Catppuccin Latte palette for the light theme. Mirrors the dark scheme's structure so every
62+
// semantic token (including the *Container and outlineVariant slots the UI relies on) is defined
63+
// and coherent in both modes, rather than falling back to mismatched Material defaults.
64+
private val LatteMauve = Color(0xFF8839EF) // Primary
65+
private val LatteSapphire = Color(0xFF209FB5) // Secondary
66+
private val LatteGreen = Color(0xFF40A02B) // Tertiary / success
67+
private val LatteRed = Color(0xFFD20F39) // Error
68+
private val LatteText = Color(0xFF4C4F69) // Primary text
69+
private val LatteSubtext = Color(0xFF6C6F85) // Secondary text
70+
private val LatteBase = Color(0xFFEFF1F5) // App background
71+
private val LatteSurface = Color(0xFFFFFFFF) // Card/sheet surface
72+
private val LatteElevated = Color(0xFFE6E9EF) // Elevated surface (mantle)
73+
private val LatteOverlay = Color(0xFF9CA0B0) // Borders and dividers
74+
6175
private val Light = lightColorScheme(
62-
primary = Color(0xFF8839EF),
76+
primary = LatteMauve,
6377
onPrimary = Color.White,
64-
secondary = Color(0xFF209FB5),
78+
primaryContainer = LatteMauve.copy(alpha = 0.12f),
79+
onPrimaryContainer = LatteMauve,
80+
secondary = LatteSapphire,
6581
onSecondary = Color.White,
66-
tertiary = Color(0xFF40A02B),
82+
secondaryContainer = LatteSapphire.copy(alpha = 0.12f),
83+
onSecondaryContainer = LatteSapphire,
84+
tertiary = LatteGreen,
6785
onTertiary = Color.White,
68-
error = Color(0xFFB00020),
86+
tertiaryContainer = LatteGreen.copy(alpha = 0.12f),
87+
onTertiaryContainer = LatteGreen,
88+
error = LatteRed,
6989
onError = Color.White,
70-
errorContainer = Color(0xFFF9DEDC),
71-
onErrorContainer = Color(0xFF410E0B),
72-
background = Color(0xFFFAFAFA),
73-
onBackground = Color(0xFF1E1E2E),
74-
surface = Color(0xFFFFFFFF),
75-
onSurface = Color(0xFF1E1E2E),
76-
surfaceVariant = Color(0xFFE7E0EC),
77-
onSurfaceVariant = Color(0xFF49454F),
78-
outline = Color(0xFF79747E),
90+
errorContainer = LatteRed.copy(alpha = 0.12f),
91+
onErrorContainer = LatteRed,
92+
background = LatteBase,
93+
onBackground = LatteText,
94+
surface = LatteSurface,
95+
onSurface = LatteText,
96+
surfaceVariant = LatteElevated,
97+
onSurfaceVariant = LatteSubtext,
98+
outline = LatteOverlay,
99+
outlineVariant = LatteOverlay.copy(alpha = 0.5f),
79100
)
80101

81102
private val OpenTaskerTypography = Typography(

0 commit comments

Comments
 (0)