Skip to content

feat: add app auto-update service and appcast tooling#13

Open
galz10 wants to merge 6 commits intomainfrom
feat/auto-update-service
Open

feat: add app auto-update service and appcast tooling#13
galz10 wants to merge 6 commits intomainfrom
feat/auto-update-service

Conversation

@galz10
Copy link
Copy Markdown
Owner

@galz10 galz10 commented Mar 25, 2026

Summary

Adds an app-managed auto-update service with deterministic state handling, surfaces update actions in the app UI, and introduces appcast generation/publishing tooling for release artifacts.

Details

  • Added a new updater domain under idx0/Services/Updates:
    • state model + reducer (AppUpdateState, AppUpdateStatus, events/actions)
    • orchestration service (AppUpdateService) with startup delay + periodic polling
    • protocol seams for driver/scheduler/version/environment injection
    • Sparkle-backed driver boundary (SparkleUpdateDriver)
  • Wired updater into app surfaces:
    • checkForUpdates command/action in shortcut + command registries
    • app menu “Check for Updates…” and context-aware update action
    • command palette update action
    • top bar status/action control
    • settings toggles/actions in advanced tab + inline advanced settings
  • Extended settings and config:
    • AppSettings.autoCheckForUpdates with backward-compatible decode and schema bump
    • env support via IDX0_DISABLE_AUTO_UPDATE and IDX0_UPDATE_FEED_URL
  • Added release/appcast tooling:
    • Sparkle package dependency and feed metadata in project config
    • scripts/generate-appcast.sh
    • scripts/publish-appcast.sh
    • scripts/manual-release.sh now emits appcast entry metadata JSON
  • Added tests for updater reducer, action mapping, service orchestration, settings migration, command registration parity, and appcast stable/prerelease behavior.

Related Issues

N/A

How to Validate

  1. Generate project files:
    • xcodegen generate
  2. Run targeted updater/appcast tests:
    • xcodebuild -project idx0.xcodeproj -scheme idx0 -destination 'platform=macOS' -only-testing:idx0Tests/AppUpdateReducerTests -only-testing:idx0Tests/AppUpdateActionMapperTests -only-testing:idx0Tests/AppUpdateServiceTests -only-testing:idx0Tests/AppcastScriptTests test
  3. Run full test suite:
    • xcodebuild -project idx0.xcodeproj -scheme idx0 -destination 'platform=macOS' test
  4. Note on current baseline:
    • full suite still reports existing SessionServiceTests+Niri sizing failures (testNiriColumnResizePersistsPreferredWidths, testNiriDefaultTileSizesApplyOnlyToNewTiles), and these reproduce on main as well.

Pre-Merge Checklist

  • Builds successfully (xcodebuild / Xcode)
  • Added/updated tests (if needed)
  • Updated relevant documentation and README (if needed)
  • Noted breaking changes (if any)
  • Tested on macOS

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