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:
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);
}