fix(waybar): supervisor respawn + clean-restart switches; add sys-rebuild
Recovers the crashed iteration #7 (items 21+23, Latitude QA findings): - nomarchy-waybar supervisor (waybar.nix, exec-once'd from hyprland.nix): any waybar exit respawns the bar; crash-loop guard (5 fast exits -> critical notify + stop); TERM trapped for a real stop. Fixes the bar-less session after a theme-switch crash. - nomarchy-theme-sync prefers a clean `pkill -x waybar` (supervisor restart with fresh config+style) over the crash-prone in-place SIGUSR2 reload when the supervisor is running; SIGUSR2 stays as the unsupervised fallback. - sys-rebuild: snapshot-first system rebuild against the CURRENT lock (no `nix flake update`) — the no-update twin of sys-update; README §3/§5 + motd list it. Verified: V0 re-run green after crash recovery (flake check --no-build + py_compile); V1/V2 per the crashed session's journal entry (HM renders exec-once=nomarchy-waybar; headless software-GL VM: SIGKILL -> new pid, clean kill -> respawn, SIGUSR2 -> alive). V3 pending on the Latitude (queued in HARDWARE-QUEUE.md). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -849,6 +849,24 @@ how to override it. Items marked ✓ are shipped.
|
||||
your theme / essentials" flow (ties into the branding work).
|
||||
|
||||
## Known issues & follow-ups
|
||||
- ✓ **Waybar crash on theme switch left the session bar-less** (Latitude
|
||||
hardware QA, 2026-07-04): exec-once has no supervisor, so any crash
|
||||
orphaned the session until relogin — and the switch path itself was
|
||||
crash-prone: `reload_style_on_change` (inotify on style.css) and
|
||||
theme-sync's SIGUSR2 both fired while the HM symlinks flipped, a
|
||||
double-reload race in waybar's in-place reload. Fix: (1) the bar runs
|
||||
under a `nomarchy-waybar` supervisor (waybar.nix) — ANY exit respawns
|
||||
it, with a crash-loop guard (5 fast exits → critical notification,
|
||||
stop); (2) theme-sync now prefers a clean `pkill -x waybar` when it
|
||||
sees the supervisor (a restart with fresh config+style — no reload
|
||||
code path at all), keeping SIGUSR2 only as the fallback for
|
||||
unsupervised/custom bars; `reload_style_on_change` stays for manual
|
||||
`home-update` restyles. VM-verified on the headless software-GL
|
||||
desktop: SIGKILL → new pid; clean kill → respawn; SIGUSR2 → alive.
|
||||
- ✓ **`sys-rebuild`** (Latitude QA request): the no-update twin of
|
||||
`sys-update` — snapshot-first system rebuild against the *current*
|
||||
lock, for config-only changes; `home-update` was already lock-free.
|
||||
README §3/§5 + the motd list all three.
|
||||
- ✓ **Yazi TOML parse error on startup:** yazi 26.x made fetchers'
|
||||
`group` field required, so `[[plugin.prepend_fetchers]]` failed to parse
|
||||
and yazi fell back to presets. Fixed by adding `group = "git"` to both
|
||||
|
||||
Reference in New Issue
Block a user