Skip to content

Add native in-app updates - #24

Merged
eagleoflqj merged 3 commits into
mainfrom
self-update
Nov 6, 2026
Merged

eagleoflqj merged 3 commits into
mainfrom
self-update

Conversation

@eagleoflqj

Copy link
Copy Markdown
Member

Add About SimStore and Check for Updates menu actions. The client reads the published version index, offers the newest stable release compatible with the current macOS version, then offers a newer compatible nightly when no stable upgrade remains. Nightlies are explicitly labeled unstable and use a separate installation action. About shows the bundle version, Git description, commit link, and commit date.

Reuse the existing streaming downloader, archive checks, safe extraction, and progress UI. Verify the downloaded app's identity, source revision, version/build, minimum macOS, executable permissions, symlink boundaries, and arm64 macOS binaries. A bundled native assistant waits for the current process to exit, atomically exchanges the bundles, and restarts the app at its original location. Keep the previous bundle until startup succeeds and restore it if launch fails. Updating requires a writable installation directory.

Include English and Simplified Chinese strings, localized assistant failure reports, cancellation, changed-nightly handling, and release/cache documentation. The About/update panel remains separate from main-window navigation and does not prevent quitting when the main window closes.

Validation:

  • Release and Debug builds, Swift formatting, and localization extraction passed.
  • All 20 Release CTest checks and Debug preview checks passed.
  • Tests cover compatible stable priority, numeric version/build comparison, nightly selection, strict metadata/package validation, cancellation cleanup, atomic replacement, launch-failure rollback, timeout, and retry behavior.
  • An integration test starts an isolated copy of the actual app, verifies the assistant waits for it to quit, then checks replacement, relaunch, and cleanup. Main-app and assistant SDK/minimum-OS checks passed.
  • Manually verified the Chinese menu and update result against the real published feed, and confirmed closing the main window exits with About open.
  • After committing, rebuilt without reconfiguring, packaged the clean 0.1.0 (2) bundle, and rechecked metadata and the replacement/relaunch integration.

@eagleoflqj
eagleoflqj merged commit 5df9da8 into main Nov 6, 2026
2 checks passed
@eagleoflqj
eagleoflqj deleted the self-update branch November 6, 2026 22:54
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.

1 participant