valentine

Terminal control panel for the Focusrite Scarlett 18i20 — a from-scratch replacement for Focusrite Control.
Log | Files | Refs | README | LICENSE

commit 7fbd06301d79a498edce2c6e51a3a0370d5bebb3
parent d2841d68bc38a87ef5fde99a00c8bd1082f2a393
Author: Matthew Gantenbein <ganten1998@gmail.com>
Date:   Mon,  1 Jun 2026 23:07:29 -0500

themes: make red-pink 'Ember' the default (drop Hydra's neutral default)

default.toml is now Valentine's own plum/rose/coral palette (rose #ff5fa2
highlight) in the shared Hydra format — distinct from Hydra's neutral default,
which was just Hydra's. The other 9 themes stay synced with Hydra. Updated the
default-color test + docs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Diffstat:
Mthemes/default.toml | 33++++++++++++++++-----------------
Mvalentine/src/theme.rs | 20+++++++++++---------
2 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/themes/default.toml b/themes/default.toml @@ -1,23 +1,22 @@ -# Hydra theme — the built-in neutral default, written out as an editable example. +# Valentine's default theme — "Ember": a dark plum / rose / coral palette, warm +# and a little romantic (fitting for "Valentine"), readable, distinct from the +# usual blue dev-TUI look. This is what ships out of the box. # -# To add your own: copy any .toml into ~/.config/hydra/themes/ and it appears in the TUI -# theme picker (press `t`). Every key is optional — unspecified keys keep the default below. -# Colors are #rrggbb (the leading # is optional). btop-style: drop a file, it just works. +# Shared format with Hydra: top-level `name`/`transparent` + a `[palette]` of 10 +# keys. Drop any .toml into ~/.config/valentine/themes/ to add your own (press +# `t` to switch, `T` to toggle transparency). Colors are #rrggbb. name = "default" - -# Let the terminal's own background show through (e.g. Ghostty transparency/vibrancy). -# Also toggleable live in the TUI with `T`. UI chrome stays opaque for legibility. transparent = false [palette] -bg = "#16181d" # main background (ignored when transparent = true) -bg_elevated = "#22262e" # overlays / selected rows -fg = "#e6e8ea" # primary text -fg_dim = "#8a9099" # secondary text, hints -accent = "#e09b3e" # sparingly: selected output, marks -ghost = "#4cc2b0" # highlight: titles, cursor, active selection -border = "#3a404a" # pane borders -success = "#6cc66c" # connected, active route -warning = "#e09b3e" # approaching clip -danger = "#e06c6c" # disconnected, clip, recording +bg = "#170e15" # plum-black +bg_elevated = "#251524" # raised panels / selected rows +fg = "#f3dce7" # warm off-white +fg_dim = "#a3768f" # mauve-grey — labels / hints +accent = "#ff8a5b" # coral ember — engaged / changed marks +ghost = "#ff5fa2" # rose — highlight: selection / cursor / titles / focus +border = "#5e2c4e" # wine — pane borders +success = "#4cc7a4" # jade — locked / signal present +warning = "#ffb454" # amber — approaching clip +danger = "#ff3b5c" # crimson — mute / error / clip diff --git a/valentine/src/theme.rs b/valentine/src/theme.rs @@ -3,10 +3,10 @@ //! (bg, bg_elevated, fg, fg_dim, accent, ghost, border, success, warning, //! danger). The same `.toml` files drop into both apps' theme pickers. //! -//! Valentine ships 10 themes (default, transparent, nord, gruvbox, dracula, -//! rose-pine, tokyonight, catppuccin-mocha, solarized-dark, monochrome) — the -//! same set as Hydra. Drop additional `.toml` files into -//! `~/.config/valentine/themes/` to add your own; they appear in the picker. +//! Valentine ships 10 themes: its own red-pink **default** ("Ember"), plus 9 +//! shared with Hydra (transparent, nord, gruvbox, dracula, rose-pine, +//! tokyonight, catppuccin-mocha, solarized-dark, monochrome). Drop additional +//! `.toml` files into `~/.config/valentine/themes/` to add your own. //! //! Loading order: `--theme <name|path>`, else `~/.config/valentine/theme.toml`, //! else the bundled default. Press `t` to switch, `T` to toggle transparency. @@ -14,8 +14,8 @@ use ratatui::style::Color; use serde::Deserialize; -/// Bundled themes `(name, toml)` — Hydra's set, verbatim, so the two apps stay -/// in sync. `default` is first/default. +/// Bundled themes `(name, toml)`. `default` is Valentine's own red-pink "Ember"; +/// the other 9 are shared verbatim with Hydra (same files, drop-in compatible). pub const BUILTIN_THEMES: &[(&str, &str)] = &[ ("default", include_str!("../../themes/default.toml")), ("transparent", include_str!("../../themes/transparent.toml")), @@ -259,10 +259,12 @@ mod tests { use super::*; #[test] - fn bundled_default_parses_hydra_format() { + fn bundled_default_is_ember_red_pink() { let t = Theme::default(); - assert_eq!(t.bg, Color::Rgb(0x16, 0x18, 0x1d)); - assert_eq!(t.accent, Color::Rgb(0x4c, 0xc2, 0xb0)); // ghost → accent + assert_eq!(t.bg, Color::Rgb(0x17, 0x0e, 0x15)); // plum-black + assert_eq!(t.accent, Color::Rgb(0xff, 0x5f, 0xa2)); // ghost(rose) → accent + assert_eq!(t.armed, Color::Rgb(0xff, 0x8a, 0x5b)); // coral ember + assert_eq!(t.danger, Color::Rgb(0xff, 0x3b, 0x5c)); // crimson assert!(!t.transparent); }