From c05988c6d1d3687cb7882e2f71ea770872947988 Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Wed, 15 Jul 2026 17:09:43 +0100 Subject: [PATCH] =?UTF-8?q?docs(agent):=20V2=20the=20menu=20IA=20(#105/#11?= =?UTF-8?q?1/#110)=20=E2=80=94=20content=20passes,=20file=20#131/#132?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 856a9d1 restructured the picker and shipped at "V0 menu-back; HM gen builds", which §2.1 does not allow for a user-visible change. Rendered all eight screens under the real HM session and viewed them. IA verified: six-entry root; System → Connectivity/Devices/Recovery/ Preferences; Recovery lists each scope once; Preferences carries the migrated update-checks/Bluetooth/Printing toggles; Control Center gone from the dispatch (asserted, not eyeballed); no stderr on any screen. No code change. Two findings, both filed rather than fixed: #131 — the VM showed the long Recovery labels ellipsized. That specific symptom is a guest artifact (they measure 462px/509px in Inter 11 against ~668px of room at 1920), but the same measurement says they DO truncate at 1366, where the picker is only 546px wide — cutting exactly the cost hint #111 added them to carry. The Acer Aspire M5-481T is 1366x768 and in the QA fleet. Shortening vs -mesg vs widening is a design call. #132 — the guest draws icons at ~1/4 of ui.iconSize and clips a 6-row root behind a scrollbar despite lines=8. Root predates #105, so this is the test environment, not a regression — but it means menu screenshots are evidence for content and never for geometry. Documented in docs/TESTING.md §5 so the next agent doesn't chase it. --- agent/BACKLOG.md | 25 +++++++++++++++++++++++++ agent/JOURNAL.md | 19 +++++++++++++++++++ docs/TESTING.md | 6 ++++++ 3 files changed, 50 insertions(+) diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index bdb0538..e86f09c 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -96,6 +96,31 @@ whether Nomarchy holds itself higher — darker label, or a darker accent mix for light palettes — and note `tools/check-theme-contrast.py` covers palette pairings only, never GTK widget surfaces. `[human]` for the aesthetic call. +### 131. Recovery cost labels truncate on 1366-wide panels + +#111 gave Recovery scope-first labels that carry the cost inline — "Desktop +generation — themes & home config (instant, reversible)" (462px in Inter 11) +and "System boot generation — older NixOS (reboot, then pick in boot menu)" +(509px). The picker is `width: 40%`, so text room is ~668px at 1920 (fits) +but only ~446px at 1366 — **both long labels ellipsize, and the cost hint is +exactly the part that gets cut**. The Acer Aspire M5-481T (1366×768) is an +active QA machine, so this is live, not theoretical. Options: shorten to +"Desktop generation (instant)" and put cost in a rofi `-mesg` line, widen the +picker for narrow screens, or let rofi wrap. Measured, not observed — the VM +renders menu geometry unfaithfully (see #132); confirm on the Acer. + +### 132. VM cannot judge rofi menu geometry + +The guest renders the picker with icons at roughly a quarter of `ui.iconSize` +(44 → ~10px) and rows short enough that a 6-row root clips its last entry +behind a scrollbar, though `lines = 8` and `dynamic = true` should fit it. +Root is unchanged since before #105, so this is the guest's font/icon +environment, not a regression — but it means `theme-shot.nix`/`menu-shot` +screenshots are trustworthy for **menu content** and not for spacing, icon +size, or truncation. Either fix the guest (fontconfig + icon cache in the +test node) or document the gap in docs/TESTING.md §5 so the next agent does +not chase it — right now nothing warns them. + ### 120. A netinstall ISO, next to the fat offline one Bernardo 2026-07-14, after seeing the measured size: **keep the current ISO diff --git a/agent/JOURNAL.md b/agent/JOURNAL.md index 04fe7d2..c8b3b52 100644 --- a/agent/JOURNAL.md +++ b/agent/JOURNAL.md @@ -19,6 +19,25 @@ Template: --- +## 2026-07-15 — V2 the menu IA (#105/#111/#110), no code change +- **Task:** close the V2 gap on 856a9d1 — it shipped at "V0 menu-back; HM + gen builds" for a user-visible menu restructure. +- **Did:** Rendered all 8 picker screens under the real HM session (scratch + menu-shot harness off `theme-shot.nix`, invoking each screen through the + same `$0 ` dispatch). **IA verified**: six-entry root; System → + Connectivity/Devices/Recovery/Preferences; Recovery lists each scope once; + Preferences carries the migrated update-checks/Bluetooth/Printing toggles; + Control Center absent from the dispatch (asserted); no stderr on any screen. +- **Verified:** **V2 (content only)** — screenshots viewed, `v2-menu/`. + The VM renders menu *geometry* unfaithfully (icons 44→~10px, 6-row root + clips), so spacing/truncation is not judgeable there → filed #132 + a + docs/TESTING.md §5 gotcha so the next agent doesn't chase it. +- **Pending:** #131 — measured Inter 11 against the 40% picker width: the two + long Recovery labels fit at 1920 but ellipsize at 1366, cutting exactly the + cost hint #111 added. Live on the Acer (1366×768). Needs a design call. + BTRFS Files row is `command -v`-gated and absent in the guest — unexercised. +- **Next suggestion:** #131 label call `[human]`, or #107 state.json V2. + ## 2026-07-15 — #98 follow-up: destructive buttons invisible (V2 sweep) - **Task:** QA sweep of today's ship — V2 the batch that stopped at V1. - **Did:** Rendered a real GTK3 GtkMessageDialog under the actual HM session diff --git a/docs/TESTING.md b/docs/TESTING.md index bb775fd..92e1ab5 100644 --- a/docs/TESTING.md +++ b/docs/TESTING.md @@ -132,6 +132,12 @@ Hyprland's headless backend otherwise aborts in a VM-only zero-output state. not an inverted apply. Trust hyprctl / the toast numbers. - **First theme switch is the slowest**: it evaluates the flake on a RAM disk. Subsequent switches reuse the eval cache. +- **Menu geometry does not survive the guest**: the rofi picker draws with + icons at roughly a quarter of `ui.iconSize` and rows short enough that a + 6-row root clips its last entry behind a scrollbar (`lines = 8` should + fit it). Menu screenshots are evidence for **which rows appear**, never + for spacing, icon size or label truncation — measure text against the + 40% window width instead, or check on hardware (BACKLOG #132). ## 6. When something fails