Skip to content

fix(updater): print-aware unattended updates, reliable boot provisioning and self-heal, gapless restart splash - #340

Merged
gmmcosta15 merged 24 commits into
devfrom
fix/updater-health-failfast-restart-flash
Oct 2, 2026
Merged

gmmcosta15 merged 24 commits into
devfrom
fix/updater-health-failfast-restart-flash

Conversation

@gmmcosta15

@gmmcosta15 gmmcosta15 commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Description

  • Feature
  • Bug fix
  • Code refactor
  • Documentation

Hardens the updater's boot provisioning, boot heal and update overlay (defects found on the RF50), pauses unattended updater work during prints, and removes the black screen on UI restart.

  • Printing guard: the daemon reads Klipper print_stats.state from klippy.sock (any error counts as idle, as in Moonraker). While printing or paused, it defers boot installs, fetches, apt refreshes, forward heal and background apt.
  • Provisioning: missing components install once per start, after the boot heal. Offline devices skip silently and re-check for about 30 min, then wait for Update. A failed install removes the clone and disables its unit (new sudoers rule), and is skipped until Update.
  • Spoolman: the health check fails fast, the hook's service is never started twice, and the hook fails after 120 s unhealthy before it edits moonraker.conf.
  • Boot heal: retried instead of skipped while the lock is held, and run first by every lock holder (daemon and CLI). The start script's crash-loop rollback stands down while the daemon's self-heal is active.
  • Daemon: no background apt when a restart is pending (dpkg is never SIGKILLed). Shutdown drains tasks for at most 60 s. Non-executable hooks fail clearly, and fetch failures log at ERROR.
  • Install: the D-Bus activation file gets Exec=/bin/false, so the UI can revive a stopped daemon. The hook and post-merge re-run the install on any install-file change. install-updater.sh re-enables BlocksScreen.service.
  • UI: a "Missing component, installing ..." overlay without Cancel, held through the UI restart until fresh status arrives. Busy state is replayed on connect, a toast appears if the 400 s safety net fires, and versions show as tag+N.
  • Restart splash: feh paints the splash on the X root at X start and in ExecStop before SIGTERM, so the ~14.5 s window teardown no longer shows a black screen.

@gmmcosta15 gmmcosta15 added the enhancement New feature or request. label Sep 29, 2026
@gmmcosta15 gmmcosta15 self-assigned this Sep 29, 2026
@gmmcosta15
gmmcosta15 requested a review from a team September 29, 2026 14:35
@gmmcosta15
gmmcosta15 marked this pull request as draft September 29, 2026 15:51
@gmmcosta15
gmmcosta15 marked this pull request as ready for review September 29, 2026 16:48
@gmmcosta15 gmmcosta15 changed the title fix(updater): fail health check fast, signal busy during boot provisioning, keep overlay through UI restart fix(updater): harden boot provisioning, boot heal and update overlay Oct 1, 2026
…failfast-restart-flash' into fix/updater-health-failfast-restart-flash
@gmmcosta15 gmmcosta15 changed the title fix(updater): harden boot provisioning, boot heal and update overlay fix(updater): print-aware unattended updates, reliable boot provisioning and self-heal, gapless restart splash Oct 2, 2026
@gmmcosta15
gmmcosta15 merged commit 29f3b08 into dev Oct 2, 2026
8 checks passed
@gmmcosta15
gmmcosta15 deleted the fix/updater-health-failfast-restart-flash branch October 2, 2026 14:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants