Files
Nomarchy/agent/BACKLOG.md
Bernardo Magri 860c70466f
All checks were successful
Check / eval (push) Successful in 3m46s
feat(menu): #79 slice 3 — Look & Feel › Auto theme (completes #79)
Adds an "Auto theme (on/off)" row to Look & Feel and an `autotheme`
submenu: toggle the feature, pick the day/night themes (from
`nomarchy-theme-sync list`), and set the sunrise/sunset times (HH:MM,
validated). This is the menu surface over settings.autoTheme, completing
the auto time-of-day theme feature (slices: CLI / timer / menu).

Enabling writes the flag and defaults the summer-day/summer-night pair
--no-switch, then runs `auto --force`, so a single rebuild both installs
the timer and applies the correct theme for now. Disabling is instant
(--no-switch): the flag flips and `auto` self-gates, so the lingering
timer no-ops until the next rebuild. Day/night/time writes are live
--no-switch (read by `auto` at tick time).

Verification: V1 — HM generation builds (bash -n on nomarchy-menu at
build) + bash -n on the built menu. Logic test with stubbed
rofi/theme-sync/notify: selecting the toggle from off runs exactly `set
day/night/enable ... --no-switch` then `auto --force` — the intended
one-rebuild path. V0 flake check green. All three #79 slices shipped;
the live timer switch across sunset is a real-session (V3) check on a
Nomarchy machine.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 21:53:37 +01:00

9.8 KiB
Raw Blame History

Backlog — the prioritized task queue

This is the only executable work list for agents. Product themes and v1.0 intent live in docs/VISION.md; design history in docs/ROADMAP.md; map in docs/README.md and agent/README.md.

Rules:

  • Agents take the topmost actionable item (see LOOP.md). Finished items are deleted here — the journal + git log are the record; durable design notes get a ✓-entry in docs/ROADMAP.md (and/or a note in VISION) if worth keeping.
  • Item numbers are stable IDs — never renumbered or reused. A gap in the sequence means shipped (or dropped) work; new items take the next free number regardless of tier.
  • Tags: [blocked:hw] needs real hardware (see HARDWARE-QUEUE.md) · [human] needs Bernardo · [stuck] two failed attempts, needs help · [big] must be split before starting.
  • Agents may append to PROPOSED and Decisions freely (include VISION § … or ROADMAP § … when relevant); only Bernardo moves items out of PROPOSED into the tiers.

NOW

(empty — NEXT's top item is the queue head)

NEXT

79. Auto time-of-day theme pair — all agent work shipped [blocked:hw]

Auto light/dark theme switch through the existing engine, one pipeline (VISION § D). All 3 slices shipped 2026-07-10; design record in ROADMAP. Only the real-session check remains (needs a Nomarchy machine, like #76):

  • CLInomarchy-theme-sync auto (idempotent day/night apply; --which/--force/--no-switch); cmd_apply core → apply_named.
  • Timermodules/home/autotheme.nix: user service+timer, install gated on settings.autoTheme.enable, OnStartupSec=1min + OnCalendar=*:0/15 + Persistent.
  • Menu — Look & Feel Auto theme: toggle, pick day/night, set times (enable rebuilds to install the timer + auto --force; disable is instant --no-switch; day/night/times live --no-switch).

V3 remaining: on a real Nomarchy session — enable from the menu, confirm the timer switches day↔night across the sunset/sunrise boundary (and the live home-manager switch from the timer succeeds).

76. Hibernation default — all agent work shipped [blocked:hw]

Hibernation + zram on by default (product intent, Bernardo 2026-07-10). All V0/V1/V2 slices done (2026-07-10); only the V3 check remains — on a machine actually running Nomarchy (the dev box runs Bernardo's own NixOS, not Nomarchy, so it can't close it). Steps in HARDWARE-QUEUE. Design record in ROADMAP § Hibernation + zram by default. Shipped:

  • zram default (modules/nixos/oom.nix, zstd/50%/prio 100) — checks.zram-swap.
  • Installer/template already default new installs to a RAM-sized encrypted @swap swapfile + resume_offset wiring; swapSize=0 = no-swap opt-out.
  • docs/MIGRATION.md enable-hibernation runbook (existing machines).
  • rofi.nix Power → Hibernate: kept unconditional, notifies on failure.
  • checks.hibernate VM test (V2 PASS) — hibernate→resume→crash round-trip; zram (prio 100) doesn't swallow the image, disk swap carries it.

V3 remaining: real hibernate→resume on the LUKS+@swap swapfile+offset layout (QEMU can't feed a boot-time offset / drive LUKS-initrd) + the no-swap notify in a real session. Steps queued in HARDWARE-QUEUE. Close #76 on PASS.

LATER

  • Wallpapers artifact split (ROADMAP § Faster switches — decided, deferred): pinned Nomarchy-wallpapers input so a state write stops re-copying 86 MB. Follow-on: pre-built theme variants if switches are still slow after.
  • Installer round 2 (ROADMAP § Installer): multi-disk BTRFS RAID, impermanence, BIOS/legacy boot.
  • Boot-from-snapshot: a systemd-boot equivalent of grub-btrfs.
  • Night-light geo mode: lat/long auto sunset/sunrise (means wlsunset).
  • MIPI/IPU software-ISP camera support (no-UVC machines).
  • VPN exit-node richer display (country/city) (optional).
  • NixOS release bump → v2 [human]: deliberate, hand-edited, never automated; the previous attempt was discarded (2026-06-22) over a Hyprland OOM blocker — see MEMORY.md before retrying (NOW#3 should also soften that blocker class).

FUTURE (decided deferred — not the agent queue head)

Work we intend someday but explicitly not NEXT. Agents do not pick these unless Bernardo promotes one into NEXT/NOW.

20. KVM runner → VM suite in CI [human]

Status (2026-07-10): keep eval-only CI on the current Gitea stack (act_runner in docker-compose on the 4c/4GB IONOS VPS). Nested KVM + RAM headroom on that host are a poor fit next to Gitea; full checks.* VMs stay local / promotion-time until a separate KVM-capable machine exists.

When ready: register a second runner (host-mode nix + /dev/kvm, label nix-kvm — not the existing docker eval runner), then uncomment the vm-checks job in .gitea/workflows/check.yml (runs-on: nix-kvm, nix flake check + toplevel/HM builds). Do not enable the job until that label is online (Gitea queues forever otherwise).

Formatter — adopt later [human]

Intent: add a Nix formatter (likely nixfmt-rfc-style) in a dedicated pass: reformat the tree once, document in CONVENTIONS, optional CI check. Not the queue head — no drive-by reformats until that pass.

Hibernation + zram

Promoted → NEXT #76 (2026-07-10).

PROPOSED (agent suggestions — await human triage)

Agents: append here with a one-paragraph pitch (what/why/cost). Do not implement. Bernardo moves accepted items into a tier.

Open work only. Shipped exam/AC items (#47#63, #14, #52 theme high-ROI, etc.) live in the journal + ROADMAP — not here.

Product / day-2

(Doctor hibernate/sleep section → promoted to NEXT #77 2026-07-10.)

(Battery charge-limit instant → shipped 2026-07-10; V3 PASS Latitude 5310: Custom charge type + live menu + unplug re-apply.)

(Portal/Flatpak IR camera → #71 docs (a); (b)/(c) still need T14s.)

(Post-install hardware hints residual → #73.)

(Look & Feel submenu → already shipped (Theme / wallpaper / night light); 2026-07-10: Reset wallpaper (auto) row; root stays six.)

  • NVIDIA first-class optionsdeferred past v1 (Bernardo 2026-07-10). Keep #59 commented install guidance; no nomarchy.hardware.nvidia.* until a hybrid maintainer + queue.

Installer / template

(Installer ↔ template SoT CI → #72; V2 install → #75.) (Installer chown flake dir → #65.) (MIGRATION.md snapshot layout → #64.) (Unattended-install test matrix → #74.) (Friendlier mkFlake theme-state errors → #66.)

Theme polish

  • Auto time-of-day theme pair (VISION § D) [big] — no scheduled light/dark theme switch exists today (only night-light gamma via hyprsunset
    • wallpaper bg auto). Let a user pair two shipped themes (e.g. summer-day ↔ summer-night) and switch on a schedule/sunset through the existing engine — a systemd timer running nomarchy-theme-sync apply <slug> — staying one theme engine (GOALS: no second pipeline). Split before starting: (a) state schema for the pair + schedule, (b) the timer/ hook, (c) menu surface. Cost: multi-slice; verify each apply still bakes one clean generation. (Verified 2026-07-10: no time-of-day/auto-theme scheduler in the tree.)

(#52 residual ANSI → #68 ✓.) (Fidelity / hierarchy nits → #67 ✓.) (Import pipeline hierarchy → #70 ✓.) (audit-theme-design identity exemptions → #69 ✓.) (summer-day/night pair polish + status CSS + preview recapture → shipped 2026-07-10: JSON SoT, status states, theme-shot previews for executive-slate + neon-glass.)

(Identity taste retunes + hand btop.theme for white/vantablack/lumon/ hackerman/matte-black/miasma/neon-glass/boreal/executive-slate → shipped 2026-07-10.)

Docs / narrative

(Omarchy migrant one-pager → shipped 2026-07-10 as #78: docs/OMARCHY.md — config-model shift, install, bindings, theming, packages, update/rollback; verified commands/slugs/binds.)

v1.0 pointer

See VISION. Shipped: doctor hibernate #77, Omarchy migrant doc #78. Open PROPOSED: auto time-of-day theme pair (§D, big); NVIDIA wrappers deferred past v1; IR portal (b)/(c) hardware. Browser default = Chromium; power = PPD.

Decisions [human]

Open calls only Bernardo can make; agents add options/evidence but never decide. Resolved entries stay for history; agents treat them as closed.

Resolved (2026-07-10)

  • Docs site vs Markdown-in-repomarkdown in-repo for now (docs/, README). A rendered docs site is FUTURE if wanted.
  • Default browsership Chromium in templates/downstream/home.nix; mime → chromium-browser.desktop. Opt out: delete the line / override mime.
  • Default power backendkeep PPD (nomarchy.system.power.backend default). TLP remains the one-line opt-in. Rationale: stability + live profile API for menu/Waybar; Omarchys TLP experiment reverted.

Resolved (2026-07-10, more)

  • Formatter adoptionyes, but not now. Tracked as FUTURE (below). Nix-source style only (nixfmt-rfc-style or similar); one bulk reformat + CI/check when promoted. Until then: hand-aligned style per CONVENTIONS.

  • Hibernationwant by default (product intent). Needs a disk-backed swap (file or partition) sized for resume; not zram alone. Implementation is a future/NEXT item when designed (installer + resume device + encrypted-root story).

Resolved (2026-07-10, #76 design)

  • Swap sizingexactly RAM (installer default, unchanged). Hibernate image ≤ RAM; zram takes day-to-day paging. swapSize=0 stays no-swap.
  • Migrationdocs runbook (docs/MIGRATION.md), not a tool.
  • No-swap Hibernate — keep the menu row; notify on failure.