docs(agent): promote V2-capable PROPOSED items to NEXT #51–54
All checks were successful
Check / eval (push) Successful in 2m57s

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 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-07-09 19:22:38 +01:00
parent 7a5284b15a
commit f6975a9797
2 changed files with 82 additions and 72 deletions

View File

@@ -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

View File

@@ -17,6 +17,23 @@ Template:
---
## 2026-07-09 — Promote V2-capable PROPOSED items → NEXT #5154 (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) — 5154 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