Skip to content

feat(updater): add configurable automatic updates#363

Draft
beruro wants to merge 1 commit into
developfrom
junyu/updater-auto-update
Draft

feat(updater): add configurable automatic updates#363
beruro wants to merge 1 commit into
developfrom
junyu/updater-auto-update

Conversation

@beruro

@beruro beruro commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add a persisted general.autoUpdateEnabled setting that defaults to on, with a General Settings switch
  • replace fragmented updater globals with one testable coordinator and one scheduler
  • automatically install and relaunch during the startup window, while active-use triggers silently pre-download without forcing a restart
  • keep manual check/install entry points compatible, improve stale-cache failure semantics, and deduplicate concurrent checks/installs
  • update updater documentation and include independent architecture and frontend UI audit reports

Why

The existing updater mixed module-level mutable state with Jotai projections, had overlapping focus/visibility triggers, and could retain stale update UI after failed manual checks. Users also had no persisted way to opt out of automatic behavior.

Closes #355.

User impact

Automatic updates are enabled by default. Users can disable all automatic startup, interval, foreground, and online checks while retaining manual update controls. During active use, packages are prepared silently; installation is deferred to the existing update action or the next startup path so Windows users are not terminated unexpectedly by the installer.

Validation

  • 13 updater/settings tests pass
  • targeted ESLint passes for all changed TypeScript/TSX files
  • git diff --check passes
  • architecture audit covers all 10 layers
  • frontend UI audit: 0 fixes, 2 keep-with-reason, 0 abstract candidates

Baseline checks unrelated to this PR remain red on develop:

  • npm run typecheck: existing ContextInfoButton.tsx:468 string | undefined error
  • settings UI parity: existing uncovered housekeeper.* keys; general.autoUpdateEnabled is covered by the General-section manifest prefix

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(updater): optimize AppUpdater check/install logic

1 participant