diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index ec9b49e..3eac4ec 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -156,15 +156,60 @@ 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. +generation — themes & home config (instant, reversible)" and "System boot +generation — older NixOS (reboot, then pick in boot menu)". They ellipsize, +**and the cost hint is exactly the part that gets cut**. + +**Observed 2026-07-16 (Bernardo, T14s on a 2560×1440 external), which kills +this item's original model.** It said `width: 40%` + Inter 11 → truncation only +below ~1920, "confirm on the Acer". Both halves were wrong, and a wide monitor +is where he saw it: + +- **Width does not track the monitor.** Text menus render through + `themes//rofi.rasi`, and the whole-swaps disagree: **boreal (his) and + neon-glass pin `width: 620px`** — fixed, so a 2560 panel buys exactly nothing + — while the other seven use `40%`. (`launcher.rasi`'s 780px is a red herring: + it themes `-show drun` only, as its own header says.) +- **The font is not Inter 11.** A whole-swap's text menus use whatever that + file sets: boreal **GeistMono Nerd Font 11**, summer-day/night and kanagawa + **JetBrainsMono 14**, nord/lumon/retro-82 13, executive-slate Inter 13. Most + are **monospace** — far wider per character than the Inter the item measured. + Only the *generated* (non-swap) theme follows `t.fonts.ui`/`size`. +- So the modelled combination — 40% + Inter 11 — **is shipped by no theme**, + and truncation is not an Acer edge case: it is most theme × monitor pairs. + +Measured for boreal, matching what he sees (GeistMono 11 ≈ 9.33px/char, +measured off Kitty at the same font/size; text room ≈ 518px = 620 − 32 window +padding − 28 element padding − 30 icon − 12 spacing): + +| row | chars | px | | +|---|---|---|---| +| Desktop generation — themes & home config (instant, reversible) | 63 | 587 | **cut** | +| System boot generation — older NixOS (reboot, then pick in boot menu) | 69 | 643 | **cut** | +| Files (BTRFS) — restore files or roll root (password + confirm) | 63 | 587 | **cut** | +| What changed — the last few generations, side by side | 53 | 494 | fits | + +Three of four — "*some* of the submenus", exactly his words. + +**The decision this needs (`[human]`-ish), because the cheap fix is a trap.** +Shortening labels to fit means fitting the *narrowest* combination we ship, and +that is not boreal: `40%` at 1366 with JetBrainsMono 14 leaves ~444px ≈ **39 +characters** — which cannot hold a scope *and* a cost, so it would gut #111's +whole design for every user on a big screen. Options, and this is Bernardo's +call: +- **(a) Size the picker in `ch`** (rofi supports it) — e.g. `width: 72ch` in + every rofi.rasi + the generated theme. The window then scales with the font, + so a 14pt mono theme gets a wider window and a label that fits by + construction, on any monitor. Fixes the class; costs one line × 9 theme files + (the parity tax, same shape as #141). +- **(b) Keep labels short, move cost to rofi `-mesg`** — one line under the + prompt, full width, no per-row budget. Changes #111's "cost travels with the + row" premise. +- (c) Shorten to ~39 chars — cheapest, and the one that quietly loses the + information #111 added. + +Whatever wins, **#132 stands**: the VM cannot judge this, so it needs a look on +real hardware (boreal on the dev box is now a positive control — it truncates). ### 132. VM cannot judge rofi menu geometry