diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index b6a70a1..1efec80 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -101,31 +101,25 @@ _(Friendlier mkFlake theme-state errors → **#66**.)_ ### Theme polish -_(#52 residual ANSI → **#68**.)_ -_(Fidelity / hierarchy nits → **#67**.)_ -_(Import pipeline hierarchy → **#70**.)_ -_(audit-theme-design identity exemptions → **#69**.)_ - -- **summer-day / summer-night pair polish** — waybar CSS vs JSON dual - SoT; night `subtext`=`muted`=`overlay`; day/night font + battery - threshold + VPN pill drift. Pick JSON as SoT (or document EF split). - Cost: CSS/JSON; V3. - -- **summer-\* CSS status module states** — missing `.on` / `.available` - / `.recording` polish vs boreal/generated. Cost: CSS; V3. - -- **theme preview recapture nicety** — executive-slate + neon-glass - previews are bare desktop+bar, not the floating-terminal composition - of the other 21; optional identity `btop.theme`s. Cost: asset/V3. +_(#52 residual ANSI → **#68** ✓.)_ +_(Fidelity / hierarchy nits → **#67** ✓.)_ +_(Import pipeline hierarchy → **#70** ✓.)_ +_(audit-theme-design identity exemptions → **#69** ✓.)_ +_(summer-day/night pair polish + status CSS + preview recapture → + shipped 2026-07-10: JSON SoT, status states, theme-shot previews for + executive-slate + neon-glass.)_ - **Identity optional taste retunes** — white / lumon / hackerman / matte-black / miasma hierarchy or status L-steps only (no traffic-light forced on identity themes). Product call per theme. +- **Optional identity `btop.theme`** for identity whole-swaps still on + generated btop. Cost: assets; V3. + ### v1.0 pointer See **VISION**. Remaining PROPOSED: charge-limit instant, Look & Feel, -NVIDIA first-class, summer-* / preview / identity taste polish. +NVIDIA first-class, identity taste / optional btop themes. ## Decisions `[human]` diff --git a/agent/JOURNAL.md b/agent/JOURNAL.md index 66f1b6b..2826755 100644 --- a/agent/JOURNAL.md +++ b/agent/JOURNAL.md @@ -17,6 +17,19 @@ Template: --- +## 2026-07-10 — Summer pair polish + status CSS + preview recapture +- **Task:** finish agent-able PROPOSED theme leftovers. +- **Did:** summer-day/night — JSON hierarchy (night subtext/muted/overlay + ladder; day overlay≠muted); waybar CSS tokens track JSON roles; font + 13px both; day battery 25/10; VPN pill + full status states + (.recording/.available/.on/.activated/battery warn). Recaptured + executive-slate + neon-glass `preview.png` via theme-shot desktop + (480×270). Closed those PROPOSED lines. +- **Verified:** **V0** contrast 24×7 + wholeswap; **V2** theme-shot + summer-day/night/executive-slate/neon-glass — viewed bar crops + + previews. Identity taste retunes stay PROPOSED. +- **Next suggestion:** only blocked NEXT (#20/#41) or product Decisions. + ## 2026-07-10 — #74 matrix flags + #75 V2 install (default arm) - **Task:** NEXT #74 unattended matrix · #75 SoT V2 install after ISO. - **Did:** `NOMARCHY_TEST_SWAP_GB` / `NOMARCHY_TEST_NO_LUKS` drive diff --git a/themes/executive-slate/preview.png b/themes/executive-slate/preview.png index b2e9a83..8d953a5 100644 Binary files a/themes/executive-slate/preview.png and b/themes/executive-slate/preview.png differ diff --git a/themes/neon-glass/preview.png b/themes/neon-glass/preview.png index e55c11d..66f6085 100644 Binary files a/themes/neon-glass/preview.png and b/themes/neon-glass/preview.png differ diff --git a/themes/summer-day.json b/themes/summer-day.json index 590fab7..35c385d 100644 --- a/themes/summer-day.json +++ b/themes/summer-day.json @@ -8,7 +8,7 @@ "base": "#fdf6e3", "mantle": "#d7d1c1", "surface": "#efe7d0", - "overlay": "#829181", + "overlay": "#939f91", "text": "#5c6a72", "subtext": "#6e828a", "muted": "#829181", diff --git a/themes/summer-day/waybar.css b/themes/summer-day/waybar.css index 34e4eff..71d2888 100755 --- a/themes/summer-day/waybar.css +++ b/themes/summer-day/waybar.css @@ -1,21 +1,23 @@ +/* Everforest light names; hexes track themes/summer-day.json roles + (JSON is SoT for Stylix/swaync + these tokens). */ @define-color bg_dim #efebd4; -@define-color bg0 #fdf6e3; +@define-color bg0 #fdf6e3; /* base */ @define-color bg1 #f4f0d9; -@define-color bg2 #efebd4; +@define-color bg2 #efebd4; /* surface-ish */ @define-color bg3 #e6e2cc; @define-color bg4 #e0dcc7; @define-color bg5 #bdc3af; -@define-color fg #5c6a72; -@define-color red #f85552; +@define-color fg #5c6a72; /* text */ +@define-color red #f85552; /* bad */ @define-color orange #f57d26; -@define-color yellow #dfa000; -@define-color green #8da101; +@define-color yellow #ca9210; /* warn */ +@define-color green #8da101; /* good */ @define-color aqua #35a77c; -@define-color blue #3a94c5; -@define-color purple #df69ba; +@define-color blue #3a94c5; /* accent */ +@define-color purple #d863b4; /* accentAlt */ @define-color grey0 #a6b0a0; -@define-color grey1 #939f91; -@define-color grey2 #829181; +@define-color grey1 #939f91; /* overlay */ +@define-color grey2 #829181; /* muted */ /* margin: top right bottom left */ /* Spacing outside the element */ @@ -25,7 +27,7 @@ * { font-family: JetBrainsMono Nerd Font, FontAwesome; - font-size: 16px; + font-size: 13px; /* paired with summer-night */ font-weight: bold; } @@ -55,6 +57,7 @@ window#waybar { #custom-updates, #battery, #tray, +#custom-vpn, #custom-doctor, #custom-notification, #custom-powermenu { @@ -124,12 +127,29 @@ window#waybar { font-size: 20px; } -/* Recording in progress: alert red; the module is also the stop button. */ -#custom-recording.recording { - color: @red; -} +/* Status semantics — parity with boreal/generated (BACKLOG summer polish). */ +#custom-recording.recording { color: @red; } +#custom-updates.available { color: @blue; } +#custom-doctor { color: @red; } +#idle_inhibitor.activated { color: @yellow; } +#custom-nightlight.on { color: @yellow; } +#custom-vpn.on { color: @green; } +#pulseaudio.muted { color: @grey2; } -/* Doctor tripwire: only rendered when something is broken. */ -#custom-doctor { - color: @red; -} +#battery.charging { color: @green; } +#battery.warning:not(.charging) { color: @yellow; } +#battery.critical:not(.charging) { color: @red; } + +#custom-notification.notification { color: @blue; } +#custom-notification.dnd-none, +#custom-notification.dnd-notification, +#custom-notification.inhibited-none, +#custom-notification.inhibited-notification { color: @grey2; } + +/* Icon-only status modules — match glyph scale of neighbours. */ +#custom-recording, +#custom-updates, +#custom-doctor, +#custom-nightlight, +#custom-vpn, +#custom-notification { font-size: 17px; } diff --git a/themes/summer-day/waybar.jsonc b/themes/summer-day/waybar.jsonc index b3695e2..caa3b75 100644 --- a/themes/summer-day/waybar.jsonc +++ b/themes/summer-day/waybar.jsonc @@ -57,7 +57,7 @@ "battery": { "interval": 60, - "states": { "warning": 30, "critical": 15 }, + "states": { "warning": 25, "critical": 10 }, "max-length": 10, "format": "{icon} {capacity}%", "format-charging": " {capacity}%", diff --git a/themes/summer-night.json b/themes/summer-night.json index 4c9ef07..7c737a6 100644 --- a/themes/summer-night.json +++ b/themes/summer-night.json @@ -8,10 +8,10 @@ "base": "#2d353b", "mantle": "#262d32", "surface": "#3c474d", - "overlay": "#868d80", + "overlay": "#859289", "text": "#d3c6aa", - "subtext": "#868d80", - "muted": "#868d80", + "subtext": "#9da9a0", + "muted": "#7a8478", "accent": "#83b6af", "accentAlt": "#d39bb6", "good": "#a7c080", diff --git a/themes/summer-night/waybar.css b/themes/summer-night/waybar.css index 1ba24c1..f2f9c10 100644 --- a/themes/summer-night/waybar.css +++ b/themes/summer-night/waybar.css @@ -1,7 +1,9 @@ +/* Everforest dark names; hexes track themes/summer-night.json roles + (JSON is SoT for Stylix/swaync + these tokens). */ @define-color bg_dim #232a2e; -@define-color bg0 #2d353b; +@define-color bg0 #2d353b; /* base */ @define-color bg1 #343f44; -@define-color bg2 #3d484d; +@define-color bg2 #3c474d; /* surface */ @define-color bg3 #475258; @define-color bg4 #4f585e; @define-color bg5 #56635f; @@ -10,17 +12,17 @@ @define-color bg_green #425047; @define-color bg_blue #3a515d; @define-color bg_yellow #4d4c43; -@define-color fg #d3c6aa; -@define-color red #e67e80; +@define-color fg #d3c6aa; /* text */ +@define-color red #e68183; /* bad */ @define-color orange #e69875; -@define-color yellow #dbbc7f; -@define-color green #a7c080; +@define-color yellow #d9bb80; /* warn */ +@define-color green #a7c080; /* good */ @define-color aqua #83c092; -@define-color blue #7fbbb3; -@define-color purple #d699b6; -@define-color grey0 #7a8478; -@define-color grey1 #859289; -@define-color grey2 #9da9a0; +@define-color blue #83b6af; /* accent */ +@define-color purple #d39bb6; /* accentAlt */ +@define-color grey0 #7a8478; /* muted */ +@define-color grey1 #859289; /* overlay */ +@define-color grey2 #9da9a0; /* subtext */ /* margin: top right bottom left */ /* Spacing outside the element */ @@ -60,6 +62,7 @@ window#waybar { #custom-updates, #idle_inhibitor, #battery, +#custom-vpn, #custom-doctor, #custom-notification, #custom-powermenu { @@ -126,22 +129,35 @@ window#waybar { padding-right: 23px; } -#battery.charging { - color: @green; -} - #idle_inhibitor { padding-left: 10px; padding-right: 10px; font-size: 20px; } -/* Recording in progress: alert red; the module is also the stop button. */ -#custom-recording.recording { - color: @red; -} +/* Status semantics — parity with boreal/generated (BACKLOG summer polish). */ +#custom-recording.recording { color: @red; } +#custom-updates.available { color: @blue; } +#custom-doctor { color: @red; } +#idle_inhibitor.activated { color: @yellow; } +#custom-nightlight.on { color: @yellow; } +#custom-vpn.on { color: @green; } +#pulseaudio.muted { color: @grey0; } -/* Doctor tripwire: only rendered when something is broken. */ -#custom-doctor { - color: @red; -} +#battery.charging { color: @green; } +#battery.warning:not(.charging) { color: @yellow; } +#battery.critical:not(.charging) { color: @red; } + +#custom-notification.notification { color: @blue; } +#custom-notification.dnd-none, +#custom-notification.dnd-notification, +#custom-notification.inhibited-none, +#custom-notification.inhibited-notification { color: @grey0; } + +/* Icon-only status modules — match glyph scale of neighbours. */ +#custom-recording, +#custom-updates, +#custom-doctor, +#custom-nightlight, +#custom-vpn, +#custom-notification { font-size: 17px; }