Compare commits

...
4 Commits
Author SHA1 Message Date
nyra 0cb8a59a3d feat(theme): add the Orchid app theme
The phone keyboard's own palette, ported rather than re-invented: page
violet-black, letter pink as the soft accent, alternate-symbol violet as the
secondary, activated-key violet for filled chips, the off-peak gauge blue as
tertiary and the peak pink as the error colour.

- BrandPalettes.Orchid: darkBrand seed set carrying the keyboard values.
- AppThemes.Orchid: DARK_ONLY, registered last in the picker.
- StoreScreenshotTest: per-theme gallery render, matching the existing
  one-render-per-theme convention.
2026-09-27 20:01:51 +00:00
Bailey Dixon 52f3f75658 Merge pull request #591 from Codename-11/dev
release: Android 1.17.0 and Plugin 1.11.3
2026-09-13 21:39:36 -04:00
Bailey Dixon 1a6f9cc10b Merge pull request #580 from Codename-11/dev
release(android): 1.16.1
2026-09-12 09:54:40 -04:00
Bailey Dixon 2865456761 Merge pull request #577 from Codename-11/dev
docs(release): reconcile 1.16.0 and 1.11.2 dates
2026-09-10 10:00:16 -04:00
2 changed files with 38 additions and 0 deletions
@@ -446,6 +446,31 @@ object BrandPalettes {
ink = Color(0xFFFAE6EE),
paper = Color(0xFFFFD4E1),
)
/**
* Orchid — the phone keyboard's palette, ported (2026-09-27).
*
* Sampled from the keyboard's own theme rather than re-invented, so the app
* wears the same look as the keyboard it is typed on: the keyboard's page
* colour becomes the background, its letter pink the soft accent, the
* alternate-symbol violet the secondary, and the activated-key violet the
* filled-chip accent. The tertiary keeps the keyboard's off-peak gauge blue
* and `danger` its peak pink, so the two state colours the keyboard already
* speaks stay meaningful in the app.
*/
val Orchid = darkBrand(
background = Color(0xFF100A1C), // keyboard `colorKeyboard`
panel = Color(0xFF1D1330), // one step off the page for elevated panels
relay = Color(0xFFFF8AD8), // keyboard `colorLabel` (pink)
purple = Color(0xFFC67DFF), // keyboard `colorSubLabel` (violet)
electric = Color(0xFFA855F7), // keyboard `colorKeyActivated`
cyan = Color(0xFF00E5FF), // keyboard off-peak gauge blue
ink = Color(0xFFF9F4FF),
paper = Color(0xFFEFE7FF),
muted = Color(0xFFB0A2CC),
dim = Color(0xFF7A6E96),
danger = Color(0xFFFF2D95), // keyboard peak pink
)
}
/** Whether a theme honors a separate light/dark mode toggle, or is a fixed look. */
@@ -568,6 +593,17 @@ object AppThemes {
swatch = listOf(Color(0xFF1A0F15), Color(0xFFE86A9C), Color(0xFFFFD4E1)),
)
/** Orchid — the phone keyboard's own theme, carried into the app. */
val Orchid = AppTheme(
id = "orchid",
label = "Orchid",
description = "The phone keyboard's palette — pink and violet on deep violet-black",
mode = ThemeMode.DARK_ONLY,
darkPalette = BrandPalettes.Orchid,
lightPalette = BrandPalettes.Orchid,
swatch = listOf(Color(0xFF100A1C), Color(0xFFA855F7), Color(0xFFFF8AD8)),
)
/** All themes in picker order: brand first, then the Nous baselines. */
val ALL: List<AppTheme> = listOf(
HermesRelay,
@@ -578,6 +614,7 @@ object AppThemes {
Mono,
Cyberpunk,
Rose,
Orchid,
)
private val byId = ALL.associateBy { it.id }
@@ -331,6 +331,7 @@ class StoreScreenshotTest {
@Test fun g_mono() = capture("gallery_mono", "mono") { ChatScene() }
@Test fun g_cyberpunk() = capture("gallery_cyberpunk", "cyberpunk") { ChatScene() }
@Test fun g_rose() = capture("gallery_rose", "rose") { ChatScene() }
@Test fun g_orchid() = capture("gallery_orchid", "orchid") { ChatScene() }
}
// ════════════════════════════════════════════════════════════════════════════