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:
@@ -784,6 +784,24 @@ how to override it. Items marked ✓ are shipped.
|
||||
has **no CI today** (manual `nix flake update` only). Explicitly *not* a
|
||||
binary cache: compile-from-source is a deliberate values call (Gentoo-style),
|
||||
so this automates the *config/lock* channel, not artifact distribution.
|
||||
- ✓ **Opt-in auto-commit of state mutations (in-flake state, Phase 4):**
|
||||
`settings.autoCommit` (menu: **System › Auto-commit**, self-gated on the
|
||||
flake being a git repo) makes every `apply`/`set` also `git commit`
|
||||
theme-state.json in the downstream flake. Design decisions: the flag is
|
||||
**live-read by the tool** on each write — nothing in Nix consumes it, so
|
||||
the toggle is instant, no rebuild, no option-surface addition; the commit
|
||||
is **pathspec-limited** (`git commit -- 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 instead of
|
||||
staying forever-dirty; a same-value `set` no-ops (diff against HEAD); a
|
||||
missing git identity falls back to `Nomarchy <nomarchy@localhost>`;
|
||||
`bg next` is deliberately excluded (runtime wallpaper churn — the path
|
||||
rides along with the next real commit). Verified: V1 (HM generation
|
||||
builds, generated menu `bash -n` green) + a 7-assertion sandbox-repo
|
||||
round-trip incl. the apply path; on-machine check queued. Rider fix:
|
||||
`get` now prints booleans JSON-style (`true`, not Python's `True`) —
|
||||
which also un-sticks the System menu's "Auto timezone (on/off)" label,
|
||||
whose `= true` comparison could never match before.
|
||||
- **"nomarchy" control center:** a single TUI/GUI front-end over the common
|
||||
toggles — theme, power profile, opt-in services, display, DND — built on
|
||||
the same `nomarchy-theme-sync` / `nomarchy.*` surface the menu already
|
||||
|
||||
Reference in New Issue
Block a user