feat(themes): #53 last previews + quarantine neon-glass broken bar
All checks were successful
Check / eval (push) Successful in 2m58s

Capture executive-slate + neon-glass preview.png (480x270, theme-shot) —
all 24 themes now have picker previews. Quarantine neon-glass's broken
whole-swap: its waybar.css referenced @accent/@base/… with no
@define-color block, and waybar.nix reads a whole-swap css raw (no palette
prepend), so applying it rendered broken bar colours. Removing it falls
back to the generated bar from the theme's JSON palette.

Verified: V2 theme-shot renders viewed — executive-slate clean; neon-glass
bar now renders correctly, no config-error banner. V0 flake check green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-07-09 19:52:09 +01:00
parent f94772de2c
commit c40c74e640
5 changed files with 21 additions and 120 deletions

View File

@@ -120,15 +120,6 @@ pass — accentAlt retuned to Latte mauve `#8839ef`, not the audit's pink
of the btop-changed themes (rose-pine, everforest, summer-night, vantablack, of the btop-changed themes (rose-pine, everforest, summer-night, vantablack,
catppuccin) — btop.theme isn't contrast-checked. catppuccin) — btop.theme isn't contrast-checked.
### 53. Missing theme previews + neon-glass whole-swap (promoted 2026-07-09, V2)
- Capture `executive-slate` + `neon-glass` `preview.png` headlessly via the
theme-shot recipe proven on boreal (480×270); optional hand `btop.theme`.
- **First, for neon-glass:** its `waybar.css` uses `@text/@base/…` with no
`@define-color` block (and no `waybar.jsonc`), so applying it yields broken
bar colours. Decide: **finish** (self-contained colours + jsonc + preview)
or **quarantine** (remove `waybar.css` → falls back to the generated bar),
then capture the preview. V2 render.
### 54. Installer safety + polish — V2 scenarios pending ### 54. Installer safety + polish — V2 scenarios pending
Four guards shipped 2026-07-09 (V0/V1: bash -n, flake check, nomarchy-install Four guards shipped 2026-07-09 (V0/V1: bash -n, flake check, nomarchy-install
builds): offline `compose-lock` failure now fail-closes instead of a network builds): offline `compose-lock` failure now fail-closes instead of a network
@@ -206,7 +197,8 @@ neon-glass quarantine.
### Bugs / broken behavior (codebase exam 2026-07-09) ### Bugs / broken behavior (codebase exam 2026-07-09)
_(Waybar doctor indicator, Control Center appearance no-ops, summer-day _(Waybar doctor indicator, Control Center appearance no-ops, summer-day
scroll → #51; neon-glass broken waybar → #53.)_ scroll → #51; neon-glass broken waybar → **fixed** 2026-07-09 by quarantine
(removed `waybar.css` → generated bar; render-confirmed).)_
- **Battery charge-limit / powerprofile only match `BAT*` sysfs names** - **Battery charge-limit / powerprofile only match `BAT*` sysfs names**
`power.nix` oneshot and menu/waybar globs use `power.nix` oneshot and menu/waybar globs use
@@ -240,8 +232,9 @@ nomarchy-menu usage string, secondary docs, always-on pieces → #47.)_
### Theme polish / completeness (codebase exam 2026-07-09) ### Theme polish / completeness (codebase exam 2026-07-09)
- **boreal preview recapture nicety** (executive-slate + neon-glass previews - **theme preview recapture nicety** (all 24 themes now have `preview.png`
**#53**). `boreal` now has a `preview.png` (2026-07-09) but it's a headless as of 2026-07-09 — executive-slate + neon-glass captured via theme-shot).
These headless captures are a clean bare desktop+bar, not the
theme-shot capture — a clean bare desktop+bar, not the floating-terminal theme-shot capture — a clean bare desktop+bar, not the floating-terminal
(fastfetch+btop) composition the other 21 use; a real-hardware recapture to (fastfetch+btop) composition the other 21 use; a real-hardware recapture to
match the grid would be nicer (VM is the documented fallback). Optional hand match the grid would be nicer (VM is the documented fallback). Optional hand

View File

@@ -17,6 +17,22 @@ Template:
--- ---
## 2026-07-09 — #53 theme previews + neon-glass quarantine
- **Task:** NEXT #53 — capture the last two missing previews + resolve the
neon-glass broken whole-swap. Product call: **quarantine**.
- **Did:** Confirmed the contract (working whole-swaps carry 1223
`@define-color` blocks; `waybar.nix:448` reads the whole-swap css **raw**,
no palette prepend — so neon-glass's 0-`@define-color` css is genuinely
broken). `git rm themes/neon-glass/waybar.css` → falls back to the generated
bar from its (fine) JSON palette. Rendered executive-slate + neon-glass via
theme-shot; captured 480×270 `preview.png` for both — **all 24 themes now
have previews**.
- **Verified:** **V2** — viewed both renders: executive-slate clean; neon-glass
bar now renders correctly (generated palette), no banner. V0 flake check green
with the css removed.
- **Pending:** none. Optional: hand `btop.theme` for the 3 identity themes; a
hardware recapture to match the floating-terminal composition (nicety note).
## 2026-07-09 — #54 installer safety + polish (delegated, worktree) ## 2026-07-09 — #54 installer safety + polish (delegated, worktree)
- **Task:** NEXT #54. Sonnet worktree agent (installer only). - **Task:** NEXT #54. Sonnet worktree agent (installer only).
- **Did:** offline `compose-lock` failure fail-closes (reuses the - **Did:** offline `compose-lock` failure fail-closes (reuses the

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

View File

@@ -1,108 +0,0 @@
/* Neon Glass Waybar — Segmented floating pills with glassmorphism */
* {
font-family: "Inter", "Symbols Nerd Font", sans-serif;
font-size: 13px;
font-weight: 500;
border: none;
border-radius: 0;
min-height: 0;
}
window#waybar {
/* The main bar background is transparent so the wallpaper shows through */
background: transparent;
color: @text;
}
/*
* The pill containers: left, center, right.
* Glassmorphism: semi-transparent base + blur (blur requires hyprland layerrule if waybar doesn't natively blur, but alpha base helps).
*/
.modules-left,
.modules-center,
.modules-right {
background: alpha(@base, 0.45);
border: 1px solid alpha(@accent, 0.2);
border-radius: 20px;
margin: 4px 6px;
padding: 2px 8px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
}
/* Add a glowing top border effect on hover or generally to accent the glass */
.modules-left {
border-top: 1px solid alpha(@accent, 0.6);
}
.modules-center {
border-top: 1px solid alpha(@text, 0.3);
}
.modules-right {
border-top: 1px solid alpha(@accentAlt, 0.6);
}
/* Remove default padding from individual modules so they fit snug in the pill */
#workspaces button,
#window,
#clock,
#tray,
#pulseaudio,
#battery,
#custom-notification,
#custom-vpn,
#custom-powerprofile,
#custom-updates,
#custom-doctor {
padding: 0 8px;
margin: 0 2px;
}
/* Workspaces */
#workspaces button {
color: @subtext;
border-radius: 12px;
transition: all 0.2s cubic-bezier(0.25, 1, 0.5, 1);
}
#workspaces button:hover {
background: alpha(@surface, 0.5);
color: @text;
}
#workspaces button.active {
color: @accent;
background: alpha(@accent, 0.15);
box-shadow: 0 0 8px alpha(@accent, 0.4);
}
#workspaces button.urgent {
color: @bad;
background: alpha(@bad, 0.15);
}
/* Indicators */
#battery.charging { color: @good; }
#battery.warning:not(.charging) { color: @warn; }
#battery.critical:not(.charging) {
color: @bad;
animation: blink 1s steps(2, start) infinite;
}
#pulseaudio.muted { color: @muted; }
#custom-updates { color: @accentAlt; }
#custom-doctor { color: @bad; }
#custom-vpn { color: @accent; }
@keyframes blink {
to { color: @text; }
}
tooltip {
background: alpha(@base, 0.85);
border: 1px solid alpha(@accent, 0.4);
border-radius: 12px;
}
tooltip label {
color: @text;
}