You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add Catppuccin Latte as a sixth selectable theme via the theme-set <name>
fish switcher, and the first light theme in the collection. Machinery
landed in #185; Mocha reference implementation in #183/#185.
Architectural significance: introduces the dark/light axis the prior
issues deferred (see "Light variant: skip unless we also commit to
Solarized Light and Catppuccin Latte" in #188). All five existing themes
are dark; Latte forces a few semantic assumptions baked into the helpers
and palettes to be re-examined.
accents: blue #1e66f5, sky #04a5e5, sapphire #209fb5,
teal #179299, green #40a02b, yellow #df8e1d, peach #fe640b,
maroon #e64553, red #d20f39, mauve #8839ef, pink #ea76cb,
flamingo #dd7878, rosewater #dc8a78, lavender #7287fd
π Architecture
Machinery is settled (#185). Slots in as one more <name> across each
tool β same shape as #188/#193/#197 β with two simplifications and one
genuine inflection point.
Simplifications (Catppuccin pairing):
nvim already installs catppuccin/nvim for Mocha β extend lua/config/theme.lua resolver to set flavour = "latte" instead of
installing a new plugin.
lnav already vendors catppuccin.json (from ninetailedtori/catppuccin-lnav,
MIT) β that vendor ships all four flavours; the Latte selector is a
one-line theme-latte.json pointing at Catppuccin Latte.
bat ships Catppuccin Latte built-in (0.26+, same vintage as Mocha).
vivid ships catppuccin-latte (0.11+).
Ghostty ships Catppuccin Latte built-in (1.0+).
Inflection point (first light theme):
tmux bar bg flips from dark surface to light surface (mantle #e6e9ef
or crust #dce0e8). Every helper that hardcoded a dark assumption for
bar bg / muted fg needs to be re-read.
@color_light_fg semantics: Latte's accents are still saturated (blue #1e66f5, green #40a02b, mauve #8839ef), so chips can keep
light-on-saturated text (base#eff1f5). The relationship that
changes is bar bg β chip bg β chips are saturated against a light
bar, not a dark one.
π οΈ Work breakdown
Same 8-file + plugin-spec + switch shape as #197, with the Catppuccin
simplifications folded in:
.config/starship-latte.toml β pastel_rose = '#ea76cb'
(Latte pink β the canonical "personal" accent matching Mocha's #f5c2e7). cp from starship-mocha.toml + surgical Edits to
preserve the U+E0B4 cap byte (see πΎ Explore switchable theme: GruvboxΒ #188 Lesson + memory).
.config/glow/glamour-latte.json β light-bg glamour style;
glow doesn't ship a Latte preset (Mocha was hand-rolled, Latte
likely needs the same).
.config/gh-dash/theme-colors-latte.yml β clone Mocha's, swap theme.colors for Latte hex (new mixed-dir pattern: config-base.yml
+ theme-colors-<name>.yml concat at theme-set time).
.config/lnav/configs/installed/theme-latte.json β one-line
selector pointing at Catppuccin Latte (theme-defs already
vendored via catppuccin.json).
nvim: extended lua/config/theme.lua resolver to recognise latte and set flavour = "latte". No new plugin needed.
Extended .config/fish/functions/theme-set.fish switch
(case latte), set BAT_THEME to "Catppuccin Latte" and VIVID_THEME to "catppuccin-latte".
Extended bootstrap.sh with a link line for starship-latte.toml.
Updated scripts/test-theme-switch.sh to round-trip Latte
(partial-coverage assertions: delta/glow/lnav/gh-dash stay on previous theme).
βοΈ Tradeoff
β Win: complements Mocha cleanly β Catppuccin was designed as a
light/dark pair, and Latte is the canonical light flavour. The two share
design intent (pastel-warm) so the cognitive load of switching is small.
Zero new plugin installs (nvim + lnav both already wired). Most popular
light theme right now.
β Loss: introduces the light/dark axis the prior issues deferred β
every future theme decision now carries a "is there a light pair?"
question. The Solarized-only tools (procs, tailspin, xh) and the
Solarized-Dark-only cheatsheets (docs/*.html) become visibly
mismatched when Latte is active. Either accept as a known limitation
(cheapest) or expand the theme indirection further (more cost).
π¦ Open questions
π¨ Chip text inversion: Latte's accents are saturated, not pastel
β light-on-accent chip text should work
(@color_light_fg = '#eff1f5', base). The bar bg β chip bg
contrast is the new variable: with mantle #e6e9ef as bar bg, the
saturated chips will read as darker than the bar, not lighter.
Verify on the actual terminal before pinning.
βοΈ Stay-Solarized tools (procs, tailspin, xh): these were
intentionally left Solarized-only because their use-cases are
low-stakes color hierarchies. On a Latte terminal bg, their dark-bg
assumptions render poorly. Three options:
Accept as known limitation (cheapest, matches existing posture).
Extend theme-set to swap their configs too β moves them into the
main indirection layer, ~3 more variant files per theme.
Pin xh to a light variant when on Latte (monokai-light? probe).
Recommend status-quo for v1; revisit if it grates.
π Cheatsheets (docs/*.html): currently Solarized-Dark-styled.
Latte being active doesn't change cheatsheet rendering. The CSS could
be extracted to variables with a theme toggle button (called out in π¨ Explore switchable theme: Catppuccin β SolarizedΒ #183's work breakdown but never landed). Defer to a separate issue β
not Latte-specific.
β pastel_rose pick: Latte pink #ea76cb is the obvious
analogue to Mocha's #f5c2e7. Flamingo #dd7878 is a softer
alternative if pink reads too sharp on the light bg. Default to pink
for symmetry with Mocha.
π― Unique-accent rule mapping (clean β six distinct hues, same
layout as Mocha):
session chip (blue): blue #1e66f5
active window pin (green): green #40a02b
PR chip (orange): peach #fe640b
git main chip (violet): mauve #8839ef
git wt chip (yellow): yellow #df8e1d
usage cluster (violet + yellow): mauve + yellow
π§ Lessons
See consolidated lessons in #188 and the Gruvbox PR (#193). One new
class of consideration enters with the first light theme:
Light-theme chip readability is a two-step contrast check, not
one. With dark themes, only chip-bg vs chip-text matters (the bar
bg is also dark and chips pop against it automatically). With light
themes, chip-bg vs bar-bg becomes a separate readability axis β
saturated chips on a light bar can look correct in isolation but
read as "weird coloured rectangles on a beige strip" in motion.
Verify by switching back and forth, not just by inspecting Latte
statically.
π― Goal
Add Catppuccin Latte as a sixth selectable theme via the
theme-set <name>fish switcher, and the first light theme in the collection. Machinery
landed in #185; Mocha reference implementation in #183/#185.
Architectural significance: introduces the dark/light axis the prior
issues deferred (see "Light variant: skip unless we also commit to
Solarized Light and Catppuccin Latte" in #188). All five existing themes
are dark; Latte forces a few semantic assumptions baked into the helpers
and palettes to be re-examined.
π¨ Palette (Latte)
#eff1f5, mantle#e6e9ef, crust#dce0e8,surface0
#ccd0da, surface1#bcc0cc, surface2#acb0be#4c4f69, subtext1#5c5f77, subtext0#6c6f85,overlay2
#7c7f93, overlay1#8c8fa1, overlay0#9ca0b0#1e66f5, sky#04a5e5, sapphire#209fb5,teal
#179299, green#40a02b, yellow#df8e1d, peach#fe640b,maroon
#e64553, red#d20f39, mauve#8839ef, pink#ea76cb,flamingo
#dd7878, rosewater#dc8a78, lavender#7287fdπ Architecture
Machinery is settled (#185). Slots in as one more
<name>across eachtool β same shape as #188/#193/#197 β with two simplifications and one
genuine inflection point.
Simplifications (Catppuccin pairing):
catppuccin/nvimfor Mocha β extendlua/config/theme.luaresolver to setflavour = "latte"instead ofinstalling a new plugin.
catppuccin.json(fromninetailedtori/catppuccin-lnav,MIT) β that vendor ships all four flavours; the Latte selector is a
one-line
theme-latte.jsonpointing atCatppuccin Latte.Catppuccin Lattebuilt-in (0.26+, same vintage as Mocha).catppuccin-latte(0.11+).Catppuccin Lattebuilt-in (1.0+).Inflection point (first light theme):
#e6e9efor crust
#dce0e8). Every helper that hardcoded a dark assumption forbar bg / muted fg needs to be re-read.
@color_light_fgsemantics: Latte's accents are still saturated (blue#1e66f5, green#40a02b, mauve#8839ef), so chips can keeplight-on-saturated text (
base#eff1f5). The relationship thatchanges is bar bg β chip bg β chips are saturated against a light
bar, not a dark one.
π οΈ Work breakdown
Same 8-file + plugin-spec + switch shape as #197, with the Catppuccin
simplifications folded in:
.config/themes/latte.tmuxβ semantic@color_*map..config/themes/delta-latte.gitconfigβsyntax-theme = "Catppuccin Latte"(bat name, case-sensitive β verify with
bat --list-themes | grep -i latte)..config/ghostty/theme-latte.ghosttyβtheme = Catppuccin Latte.config/starship-latte.tomlβpastel_rose = '#ea76cb'(Latte pink β the canonical "personal" accent matching Mocha's
#f5c2e7).cpfromstarship-mocha.toml+ surgicalEdits topreserve the U+E0B4 cap byte (see πΎ Explore switchable theme: GruvboxΒ #188 Lesson + memory).
.config/glow/glamour-latte.jsonβ light-bg glamour style;glow doesn't ship a Latte preset (Mocha was hand-rolled, Latte
likely needs the same).
.config/gh-dash/theme-colors-latte.ymlβ clone Mocha's, swaptheme.colorsfor Latte hex (new mixed-dir pattern:config-base.yml+
theme-colors-<name>.ymlconcat attheme-settime)..config/lnav/configs/installed/theme-latte.jsonβ one-lineselector pointing at
Catppuccin Latte(theme-defs alreadyvendored via
catppuccin.json).lua/config/theme.luaresolver to recogniselatteand setflavour = "latte". No new plugin needed..config/fish/functions/theme-set.fishswitch(
case latte), setBAT_THEMEto"Catppuccin Latte"andVIVID_THEMEto"catppuccin-latte".bootstrap.shwith alinkline forstarship-latte.toml.scripts/test-theme-switch.shto round-trip Latte(partial-coverage assertions: delta/glow/lnav/gh-dash stay on previous theme).
βοΈ Tradeoff
β Win: complements Mocha cleanly β Catppuccin was designed as a
light/dark pair, and Latte is the canonical light flavour. The two share
design intent (pastel-warm) so the cognitive load of switching is small.
Zero new plugin installs (nvim + lnav both already wired). Most popular
light theme right now.
β Loss: introduces the light/dark axis the prior issues deferred β
every future theme decision now carries a "is there a light pair?"
question. The Solarized-only tools (procs, tailspin, xh) and the
Solarized-Dark-only cheatsheets (
docs/*.html) become visiblymismatched when Latte is active. Either accept as a known limitation
(cheapest) or expand the theme indirection further (more cost).
π¦ Open questions
π¨ Chip text inversion: Latte's accents are saturated, not pastel
β light-on-accent chip text should work
(
@color_light_fg = '#eff1f5', base). The bar bg β chip bgcontrast is the new variable: with mantle
#e6e9efas bar bg, thesaturated chips will read as darker than the bar, not lighter.
Verify on the actual terminal before pinning.
βοΈ Stay-Solarized tools (procs, tailspin, xh): these were
intentionally left Solarized-only because their use-cases are
low-stakes color hierarchies. On a Latte terminal bg, their dark-bg
assumptions render poorly. Three options:
theme-setto swap their configs too β moves them into themain indirection layer, ~3 more variant files per theme.
monokai-light? probe).Recommend status-quo for v1; revisit if it grates.
π Cheatsheets (
docs/*.html): currently Solarized-Dark-styled.Latte being active doesn't change cheatsheet rendering. The CSS could
be extracted to variables with a theme toggle button (called out in
π¨ Explore switchable theme: Catppuccin β SolarizedΒ #183's work breakdown but never landed). Defer to a separate issue β
not Latte-specific.
β
pastel_rosepick: Latte pink#ea76cbis the obviousanalogue to Mocha's
#f5c2e7. Flamingo#dd7878is a softeralternative if pink reads too sharp on the light bg. Default to pink
for symmetry with Mocha.
π― Unique-accent rule mapping (clean β six distinct hues, same
layout as Mocha):
#1e66f5#40a02b#fe640b#8839ef#df8e1dπ§ Lessons
See consolidated lessons in #188 and the Gruvbox PR (#193). One new
class of consideration enters with the first light theme:
one. With dark themes, only chip-bg vs chip-text matters (the bar
bg is also dark and chips pop against it automatically). With light
themes, chip-bg vs bar-bg becomes a separate readability axis β
saturated chips on a light bar can look correct in isolation but
read as "weird coloured rectangles on a beige strip" in motion.
Verify by switching back and forth, not just by inspecting Latte
statically.
π Links