feat(state): opt-in auto-commit of state mutations (Phase 4)
settings.autoCommit — toggled from System › Auto-commit (self-gated on the flake being a git repo) — makes every nomarchy-theme-sync apply/set also git-commit theme-state.json in the downstream flake, so settings history is `git log`. Off by default. Design: the flag is live-read by the tool on each write (nothing in Nix consumes it → instant toggle, no rebuild, no new option); the commit is pathspec-limited to theme-state.json so unrelated dirty files are never swept up; it fires when the flag is on before OR after the write, so the disable-toggle itself lands in history; same-value writes no-op (diff against HEAD); missing git identity falls back to Nomarchy <nomarchy@localhost>; `bg next` is deliberately excluded. Rider fix: `get` now prints booleans JSON-style (true, not Python's True) — un-sticking the System menu's "Auto timezone (on/off)" label, whose `= true` comparison could never match. All shell consumers already normalise true|True, so no other behavior change. Verified: V0 (py_compile, nix flake check) + V1 (HM generation builds, generated nomarchy-menu passes bash -n, wiring present in the rendered script) + a 7-assertion sandbox-repo round-trip covering enable/set/ same-value/disable/post-disable/apply paths and the identity fallback. Remaining: on-machine check queued in agent/HARDWARE-QUEUE.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,24 @@ Template:
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-04 — Opt-in auto-commit shipped (loop iteration #1)
|
||||
- **Task:** BACKLOG NOW#1 — auto-commit of state mutations (in-flake
|
||||
state Phase 4). First autonomous /loop iteration.
|
||||
- **Did:** `settings.autoCommit` live-read by nomarchy-theme-sync;
|
||||
pathspec-limited commit of theme-state.json on apply/set (fires if flag
|
||||
on before OR after the write → the off-toggle commits too); identity
|
||||
fallback; same-value no-op; `bg` excluded. Menu: System › Auto-commit
|
||||
(instant, self-gated on `.git`). Rider: `get` prints booleans as JSON
|
||||
`true`/`false`, fixing the stuck "Auto timezone (on/off)" menu label.
|
||||
BACKLOG numbering switched to stable IDs (no renumbering).
|
||||
- **Verified:** V0 (py_compile, flake check) + V1 (HM generation builds;
|
||||
generated menu `bash -n`) + a 7-assertion sandbox git-repo round-trip
|
||||
(enable/set/same-value/disable/post-disable/apply/identity-fallback).
|
||||
- **Pending:** V3 queued in HARDWARE-QUEUE (on-machine toggle + apply).
|
||||
- **Next suggestion:** NOW#2 (CI checks-on-push) — but its runner half
|
||||
may need Bernardo to register a Forgejo runner; deliver the workflow
|
||||
regardless.
|
||||
|
||||
## 2026-07-04 — Backlog revision pass (human-requested)
|
||||
- **Task:** Bernardo asked for a philosophy-aligned revision of BACKLOG.md
|
||||
("I'm sure I'm forgetting important items").
|
||||
|
||||
Reference in New Issue
Block a user