From 8874a22a37fb6d6f102da29270d708a5b82112cb Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Sun, 5 Jul 2026 20:19:14 +0100 Subject: [PATCH] feat(bar): group rhythm + semantic @muted dim states (item 28c) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two polish items from the 1080p review. The right cluster gains a wider breath (margin-left 14px) before each functional group — media (pulseaudio/cpu/memory), toggles (powerprofile/nightlight/language), status (battery/updates/notification); a self-hiding group head degrades to the uniform spacing. Dim states (inactive workspaces, DND bell, muted volume) move from alpha(@text, 0.5) tints to the palette's @muted role — safe now that 28b floor-gates muted/base >= 2.0 in every theme; the CSS comment that warned against @muted documented the pre-28b palettes and now states the new invariant. Whole-swap bars untouched (authored identity). Verified: V0; V1 (rendered CSS carries the rule + 4 @muted uses); visual — tokyo-night 1080p re-capture shows the themed backdrop (iteration #35's fix, navy not black), the group gap, and legible muted workspaces. Co-Authored-By: Claude Fable 5 --- agent/BACKLOG.md | 13 +++++++------ agent/JOURNAL.md | 20 ++++++++++++++++++++ modules/home/waybar.nix | 22 +++++++++++++++------- 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index a55eede..2cc1913 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -76,12 +76,13 @@ review: - **Icon weight mix `[human]`:** full-color Papirus icons in the menus vs all-monochrome bar glyphs — pick: symbolic/monochrome menu icons for one system, or color as the menu's identity. - - **Bar right-cluster rhythm:** confirmed at 1080p — add group - margins (tray/net · stats · toggles · battery/notify) on the - gaps grid. - - **Semantic dim:** bar dim states are `alpha(@text, 0.5)` tints; - the palette's `muted` role is now floor-guaranteed (28b) — one - semantic source, use `@muted`. + - ✓ **Bar right-cluster rhythm** (shipped iteration #36): group + margins before pulseaudio/powerprofile/battery — heads that + self-hide degrade to the uniform spacing. + - ✓ **Semantic dim** (shipped iteration #36): workspaces + dnd + + muted-volume now use `@muted` (floor-guaranteed by 28b) instead + of `alpha(@text, 0.5)` tints; the CSS comment now documents the + new invariant. - ✓ **compositor backdrop** (shipped iteration #35): Hyprland `misc:background_color` now the theme's base — no more black flash behind a missing/slow wallpaper (glaring on light themes in the diff --git a/agent/JOURNAL.md b/agent/JOURNAL.md index 1ec8425..60ddefe 100644 --- a/agent/JOURNAL.md +++ b/agent/JOURNAL.md @@ -17,6 +17,26 @@ Template: --- +## 2026-07-05 — bar group rhythm + @muted adoption (iteration #36, item 28c) +- **Task:** item 28 slice (c) — the two queued bar polish items. +- **Did:** waybar.nix generated CSS: margin-left 14px on the three + right-cluster group heads (pulseaudio/powerprofile/battery — media + · toggles · status; hidden heads degrade to uniform spacing); + workspaces buttons, dnd bell, and muted volume moved from + alpha(@text,.5) tints to the semantic @muted role — safe since 28b + floor-gates muted/base ≥ 2.0 (the old comment warning against + @muted documented the pre-28b world; rewritten to state the new + invariant). Whole-swap bars untouched (authored identity). +- **Verified:** V0; V1 rendered CSS has 4 @muted uses + the margin + rule; VISUAL — tokyo-night re-capture: themed backdrop confirmed + (navy base, not black), group gap visible before the volume group, + workspace pill legible. Cross-theme minima are guaranteed by the + gated checker rather than per-theme eyeballs. +- **Pending:** slice-c remainder: rofi hint column, summer-rasi + placeholder dim, icon-weight `[human]`, latte/identity captures. +- **Next suggestion:** rofi keybind-hint column (the biggest + remaining UX win), or the two-line placeholder nit as a quickie. + ## 2026-07-05 — summer-day capture review + themed backdrop (iteration #35, item 28c) - **Task:** item 28 slice (c) — whole-swap capture review + the first cheap polish fix. diff --git a/modules/home/waybar.nix b/modules/home/waybar.nix index b17134f..6676aa5 100644 --- a/modules/home/waybar.nix +++ b/modules/home/waybar.nix @@ -279,13 +279,14 @@ let border-radius: ${toString t.ui.rounding}px; } - /* Dim/secondary shades are alpha(@text) tints, NOT the palette's - subtext/muted roles — those mean "on-surface" in some palettes - (flexoki-light: subtext==base, gruvbox: muted≈base) and vanish - against the bar (item 27; tools/check-theme-contrast.py). */ + /* Dim states use the palette's @muted role: since item 28b it is + floor-guaranteed legible on @base in every theme (muted/base >= + 2.0, gated by tools/check-theme-contrast.py) — the palettes that + once made it vanish (gruvbox muted≈base, item 27) were retuned. + Secondary-but-not-dim stays alpha(@text, 0.85). */ #workspaces button { padding: 0 8px; - color: alpha(@text, 0.5); + color: @muted; border-radius: ${toString t.ui.rounding}px; } @@ -314,6 +315,13 @@ let padding: 0 10px; } + /* Group rhythm (item 28c): a wider breath before each functional + group of the right cluster — media/stats · toggles · status — + on top of the uniform module spacing. A group head can self-hide + (e.g. no battery on desktops); grouping then degrades to the + uniform spacing, never breaks. */ + #pulseaudio, #custom-powerprofile, #battery { margin-left: 14px; } + /* Caffeine engaged → warm tone (the screen is being held awake). */ #idle_inhibitor.activated { color: @warn; } @@ -336,9 +344,9 @@ let /* notifications waiting → accent; Do-Not-Disturb → muted bell-off */ #custom-notification.notification { color: @accent; } #custom-notification.dnd-none, - #custom-notification.dnd-notification { color: alpha(@text, 0.5); } + #custom-notification.dnd-notification { color: @muted; } - #pulseaudio.muted { color: alpha(@text, 0.5); } + #pulseaudio.muted { color: @muted; } #battery.warning { color: @warn; } #battery.critical { color: @bad; } #battery.charging { color: @good; }