From f6975a979761a155a1ea26bd251505fcee5569aa Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Thu, 9 Jul 2026 19:22:38 +0100 Subject: [PATCH] =?UTF-8?q?docs(agent):=20promote=20V2-capable=20PROPOSED?= =?UTF-8?q?=20items=20to=20NEXT=20#51=E2=80=9354?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bernardo-directed triage (VM now free post-#46): #51 Waybar/menu behaviour bugs, #52 theme fidelity Broken/high-ROI fixes, #53 missing previews + neon-glass whole-swap, #54 installer safety + polish. Promoted pitches removed from PROPOSED (breadcrumbs left); non-selected V2 items stay in PROPOSED. Co-Authored-By: Claude Opus 4.8 --- agent/BACKLOG.md | 137 ++++++++++++++++++++++------------------------- agent/JOURNAL.md | 17 ++++++ 2 files changed, 82 insertions(+), 72 deletions(-) diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index 3ec78c6..a749abe 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -102,6 +102,55 @@ Next slice: on hardware, run `hyprctl clients` while each is open, read the real `class`, then append rules. Also revisit whether blueman/s-c-p actually float once seen (regex tolerance for the `.…-wrapped` form). +### 51. Waybar/menu behaviour bugs (promoted 2026-07-09, V2) +- **Waybar doctor indicator never shows an icon:** `modules/home/waybar.nix` + `nomarchy-doctor-status` prints `"text":""` on failure — empty-text custom + modules self-hide, so the tripwire never appears. Fix: non-empty glyph + (e.g. `󰒡`) + `class: bad` when unhealthy; no output/exit 0 when healthy. +- **Control Center appearance toggles are silent no-ops:** + `nomarchy-control-center.sh` `set_state` is always `--no-switch`, so + blur/gaps only land on a later rebuild with no warning (unlike + Updates/Bluetooth). Fix: run a switch for appearance keys, or warn clearly. +- **summer-day workspace scroll misaligned:** `themes/summer-day/waybar.jsonc` + uses `workspace e+1/e-1` (next empty) vs every other bar's `r±1` (relative) + — align to `r±1`. +V2: theme-shot session render (and/or a `checks.doctor` extension for the +indicator). + +### 52. Theme fidelity bugs — Broken/high-ROI (promoted 2026-07-09, V0+V2) +Execute the six clear per-theme defects — **exact hexes in the +"#### Broken / high-ROI fixes" block under _Per-theme design audit_ below**: +rose-pine btop (Main-on-Dawn → invisible hi_fg; rewrite to Dawn); everforest ++ summer-night btop `inactive_fg==main_bg` (invisible); vantablack role +inversion (white-on-white selection/muted); osaka-jade warn≈good + +text/subtext inverted; catppuccin-latte ANSI black/white axis inverted + +mantle sludge; catppuccin (Mocha) btop is Frappé-on-Mocha. Verify: +`check-theme-contrast` (V0) + a theme-shot render of each (V2). + +### 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 (promoted 2026-07-09, V0+V2) +- **Offline fail-closed:** when the offline path is active and + `compose-lock.py` fails, the script currently *warns* and runs `nix flake + lock` (needs network) → a promised offline install can hang. Fail the + install with a clear message instead. (V2 offline install.) +- **Destructive-data warning:** at disk selection/review, if `lsblk -f`/`blkid` + shows Windows/BitLocker/NTFS/existing-LUKS on the **chosen** disk, add one + explicit "data will be destroyed" line. Single whole-disk only — no + dual-boot path. (V0 + V2.) +- **Password min length = 8:** the account password only requires non-empty + while LUKS needs ≥8 — align to one 8-char rule (not a strength meter). (V0.) +- **HM pre-activate recovery hint:** on pre-activate failure, drop a flag + file / MOTD snippet on the target so first login still shows the fix + (observed warning this session; the install still booted themed). (V2.) + ## LATER - **Wallpapers artifact split** (ROADMAP § Faster switches — decided, @@ -168,41 +217,8 @@ neon-glass quarantine. ### Bugs / broken behavior (codebase exam 2026-07-09) -- **Waybar doctor indicator never shows an icon** - `modules/home/waybar.nix` `nomarchy-doctor-status` prints - `"text":""` on failure. Waybar custom modules with empty `text` - self-hide, so the tripwire never becomes visible (tooltip-only if - it rendered at all). Intent in comments is opposite: appear only - when the sheet has a ✖. Fix: non-empty glyph (e.g. `󰒡` / `!`) + - `class: bad` when unhealthy; exit 0 / no output when healthy. - Cost: one-line script fix; V2 with existing `checks.doctor` if - extended, else V1. - -- **neon-glass theme ships a broken Waybar whole-swap** - `themes/neon-glass/waybar.css` uses `@text` / `@base` / `@accent` / - etc. with **no** `@define-color` block. Whole-swap CSS replaces the - entire stylesheet with no palette prepend (`waybar.nix`), so - applying neon-glass yields undefined / broken bar colors (same - class as the purged stub CSS, JOURNAL #45). Also missing - `waybar.jsonc`, `preview.png`, `btop.theme`; CSS covers only a - subset of modules. Fix: either finish (self-contained colors + - layout parity + preview) **or** remove `waybar.css` until ready so - apply falls back to the generated bar. Cost: medium polish or - small quarantine delete; V2/V3 visual. - -- **Control Center appearance toggles are no-ops without a rebuild** - `nomarchy-control-center.sh` `set_state` always uses `--no-switch`. - Blur / gaps (and similar appearance keys) only take effect after a - home switch, but the UI never runs one and never warns (unlike - Updates/Bluetooth which print "requires rebuild"). User flips look - identical until a later rebuild. Fix: run switch for appearance - keys, or refuse / warn clearly. Cost: small UX fix in one script. - -- **summer-day workspace scroll dispatches differently from every other bar** - `themes/summer-day/waybar.jsonc` uses `workspace e+1` / `e-1` (next - **empty** workspace); summer-night, executive-slate, boreal use - `r+1` / `r-1` (relative). Likely leftover; behavior differs under - scroll. Fix: align to `r±1`. Cost: two lines. +_(Waybar doctor indicator, Control Center appearance no-ops, summer-day +scroll → #51; neon-glass broken waybar → #53.)_ - **Battery charge-limit / powerprofile only match `BAT*` sysfs names** `power.nix` oneshot and menu/waybar globs use @@ -236,16 +252,13 @@ nomarchy-menu usage string, secondary docs, always-on pieces → #47.)_ ### Theme polish / completeness (codebase exam 2026-07-09) -- **Missing theme picker previews + hand btop for identity themes** - `executive-slate` and `neon-glass` lack `preview.png` (picker - plain-name rows). All three still ship generated btop only (no hand - `btop.theme`). `boreal` now has a `preview.png` (2026-07-09) but it's a - **headless theme-shot capture** — a clean bare desktop+bar, not the - floating-terminal (fastfetch+btop) composition the other 21 use; a - real-hardware recapture to match the grid would be nicer (VM is the - documented fallback). CSS/jsonc for boreal/executive-slate are solid. - Capture the other two after neon-glass is fixed/quarantined. Cost: - asset capture + optional hand btop; V3 visual. +- **boreal preview recapture nicety** (executive-slate + neon-glass previews + → **#53**). `boreal` now has a `preview.png` (2026-07-09) but it's a headless + theme-shot capture — a clean bare desktop+bar, not the floating-terminal + (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 + `btop.theme` for the three identity themes still open. Cost: asset capture; + V3 visual. - **Generated Waybar missing identity-bar affordances** Whole-swap bars ship `custom/powermenu` and a left logo → main menu; @@ -277,6 +290,9 @@ flagged separately from fidelity bugs.* #### Broken / high-ROI fixes +_→ promoted as NEXT **#52** (2026-07-09); the six bullets below are its +spec (exact hexes). The rest of the per-theme audit stays PROPOSED._ + - **rose-pine btop is Main-on-Dawn (near-invisible hi_fg)** JSON is **Rosé Pine Dawn** (`mode: light`, base `#faf4ed`, text `#575279`) but `themes/rose-pine/btop.theme` mixes Dawn @@ -559,25 +575,11 @@ installer questionnaire.* (workflow test run 2026-07-09): pass bare `"0"`; disko accepts `"0"`/`"0G"`; unattended needs passphrase or `NOMARCHY_NO_LUKS=1`. -- **Offline mode must not silently fall back to network lock** - When the network probe fails (or install is offline), - `compose-lock.py` failure currently **warns** and runs `nix flake - lock` (needs network). That can turn a promised offline install into a - hung/partial one. **Fix:** if offline path is active and compose-lock - fails → **fail the install** with a clear message (dirty ISO / missing - narHash). Network `flake lock` only when the probe said online. - Cost: small branch in `nomarchy-install.sh`; V2 offline install test. +_(Offline fail-closed → #54.)_ #### Safety / clarity (one line each — no new install menus) -- **Review panel: warn when target already has Windows / BitLocker / - NTFS / crypto_LUKS** - Typed disk-name confirm is solid, but multi-OS machines still risk - “wrong disk.” At selection or review, if `lsblk -f`/`blkid` shows - BitLocker, NTFS, Microsoft, or existing LUKS on the **chosen** disk, - add one explicit line: data will be destroyed. Still single-disk, - whole-disk only — **no** dual-boot path. Cost: few lines of probe + - review string; V0 + V2 optional. +_(Review-panel destructive-data warning → #54.)_ - **Review panel: offline vs online source line** Review always implies “no network needed” even when the online path @@ -585,10 +587,7 @@ installer questionnaire.* line conditional on the same `cache.nixos.org` probe so expectations match. Cost: tiny; V0. -- **User password minimum length = LUKS (8 chars)** - LUKS requires ≥8; account password only requires non-empty. Align to - 8 for one consistent rule — not a strength meter. Cost: one check; - V0. +_(User password minimum length = 8 → #54.)_ #### Live ISO discoverability (one durable cue) @@ -604,13 +603,7 @@ installer questionnaire.* #### Generated config / post-install polish -- **HM pre-activate failure → one durable recovery hint on target** - Installer already prints the `home-manager switch` one-liner and logs - to `/var/log/nomarchy-hm-preactivate.log`. If pre-activate fails, also - drop a small flag file or MOTD snippet on the target so first login - still shows the fix after the live session is gone. Avoid permanent - first-boot checklists (fwupd/fprintd belong in menu/doctor). Cost: - small install-script write; V2. +_(HM pre-activate failure → durable recovery hint → #54.)_ - **MIGRATION.md: installer snapshot layout vs `@home-snapshots`** Installer creates disko `@snapshots` → `/.snapshots` and a first-boot diff --git a/agent/JOURNAL.md b/agent/JOURNAL.md index 0951261..338eac9 100644 --- a/agent/JOURNAL.md +++ b/agent/JOURNAL.md @@ -17,6 +17,23 @@ Template: --- +## 2026-07-09 — Promote V2-capable PROPOSED items → NEXT #51–54 (Bernardo-directed) +- **Task:** with the VM free (post-#46), Bernardo asked to bump the + V2-requiring PROPOSED items too. His triage; I did the move. +- **Did:** Four NEXT items — **#51** Waybar/menu behaviour bugs (doctor + indicator icon, CC appearance no-ops, summer-day scroll), **#52** theme + fidelity Broken/high-ROI (6 per-theme btop/palette defects; kept the audit + block as its spec), **#53** missing previews (executive-slate/neon-glass via + the theme-shot recipe) + the neon-glass waybar finish-or-quarantine call, + **#54** installer safety+polish (offline fail-closed, destructive-data + warning, password min 8, pre-activate recovery hint). Removed the promoted + pitches (breadcrumbs left); left the non-selected V2 items (generated-bar + affordances, summer-* CSS, fidelity/hierarchy polish, Live install cue, + offline/online source line) in PROPOSED. +- **Verified:** V0 (backlog only) — 51–54 present, no leftover pitch text. +- **Next suggestion:** these are session-render / install-VM verifiable — take + #51 or #52 (theme-shot), or #54 (test-install), on the next iteration. + ## 2026-07-09 — #46 V2 verify: install swap=0 + LUKS fail-closed (208b8d4) - **Task:** NEXT #46 — exercise the full install path for the swap=0 + LUKS fail-closed contracts (previously only pure `nix-instantiate`). Headless