All checks were successful
Check / eval (push) Successful in 3m49s
Bernardo saw Recovery ellipsize on a 2560x1440 external, which falsified the item's model (40% + Inter 11 → "only below 1920"). Real cause: text menus render through themes/<slug>/rofi.rasi, where boreal + neon-glass pinned width: 620px (fixed — a wide panel buys nothing) while seven used 40%, and the font is whatever that file says — mostly monospace, far wider than the Inter that was measured. The modelled combination ships in no theme. The insight: a menu must fit its longest label, which is a count of characters in the THEME's font — so the window must scale with the font, not the screen. 40% gives a 1366 panel 546px and a 2560 one 1024px for the same row, and a 14pt mono theme needs ~25% more room than an 11pt one on both; a percentage cannot see either fact. Rofi has the right unit (`ch` = width of one digit in the current font) and `calc( a min b )` to cap it, so every text menu — generated and all nine whole-swaps — is now `width: calc( 84ch min 65% )`. 84ch fits the longest row we ship (69 chars) plus icon and padding; the cap is Bernardo's condition (never sprawl on a low-res panel) and it is measured, not assumed. Verified on hardware, not by arithmetic: 84ch = 756px in GeistMono 11 and 924px in JetBrainsMono 14; `calc( 84ch min 300px )` → 300px, so the clamp really clamps. Screenshots at both ends — the real Recovery menu at 756px (29% of 2560) with every label complete, and the Acer worst case reproduced pixel-exactly (888px = 65% of 1366, JetBrainsMono 14) also complete. Grid views override width per-invocation and are untouched. checks.rofi-text-width guards the class, proven by pinning boreal back to 620px and watching it fail by name. Acer V3 queued for its own fontconfig. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Docs map
Where human and agent documentation lives. Do not invent a third tree for the same facts.
| Path | Audience | Role |
|---|---|---|
| ../README.md | Everyone | What Nomarchy is, install, options tables |
| REQUIREMENTS.md | Users + agents | Minimum system requirements (GPU/OpenGL, RAM, disk, UEFI) |
| VISION.md | Maintainers + agents | Product north star toward v1.0 and beyond — themes, not a task queue |
| ROADMAP.md | Maintainers + agents | Design/decision records + shipped log (historical ✓) |
| HARDWARE.md | Users + agents | Firmware, profiles, drivers, unsupported machines |
| TESTING.md | Maintainers + agents | Verification ladder, honesty rule, ISO/VM recipes |
| RECOVERY.md | Users | Broken theme/desktop/boot → undo |
| OVERRIDES.md | Users | Downstream Nix overrides |
| MIGRATION.md | Users | Existing NixOS → Nomarchy without reinstall |
| OMARCHY.md | Users | Coming from Omarchy — bindings/theme/install/config map |
Related (not under docs/)
| Path | Role |
|---|---|
| ../AGENTS.md | Agent entry point, any vendor/harness (CLAUDE.md symlinks to it) |
| ../agent/README.md | Agent instructions + executable loop state: BACKLOG, LOOP, VERIFICATION, … |
| ../.claude/ | Claude Code adapter only: permissions + subagent defs |
How work flows
VISION (what we want the product to feel like)
│
▼ human triages slices into…
BACKLOG (what's next, ordered — agents execute only this)
│
▼ lasting design notes after ship →
ROADMAP ✓ entries
Agents do not implement directly from VISION or ROADMAP. They take
the top actionable item in agent/BACKLOG.md (see agent/LOOP.md).
They may append PROPOSED pitches that reference VISION § … or
ROADMAP § ….