Skip to content

feat(windows): enable in-app MSI updates via gpui-updater v0.0.6 - #504

Merged
davidbudnick merged 2 commits into
AprilNEA:masterfrom
davidbudnick:chore/bump-gpui-updater-0.0.6
Aug 3, 2026
Merged

feat(windows): enable in-app MSI updates via gpui-updater v0.0.6#504
davidbudnick merged 2 commits into
AprilNEA:masterfrom
davidbudnick:chore/bump-gpui-updater-0.0.6

Conversation

@davidbudnick

Copy link
Copy Markdown
Collaborator

Summary

Bumps gpui-updater to v0.0.6, which brings the staged msiexec install flow for .msi artifacts (AprilNEA/gpui-updater#6) and retries for transient download failures (AprilNEA/gpui-updater#5). With an MSI install flow finally upstream, Windows update checks are no longer notify-only: the INSTALL_SUPPORTED gate and its fallback paths are removed, so Windows gets the same Download & Install button and Automatically download and install toggle as macOS and Linux. A found update downloads the per-arch MSI from the update manifest, verifies it (SHA-256 + minisign, Verification::Strict), stages an apply script, and applies it via msiexec /passive /norestart after the app exits through "Restart to Update".

Changes

  • gui: pin gpui-updater at tag = "v0.0.6"; Cargo.lock updated surgically so the zed/gpui and gpui-component pins are untouched (a plain cargo update -p gpui-updater would have moved the zed rev).
  • gui: remove platform::updater::INSTALL_SUPPORTED and both notify-only branches — the "Download from GitHub" action on the Updates page and the hidden auto-install toggle; the auto-install observer no longer gates on platform. The release_format() comment now reflects that the MSI entries are installable.
  • i18n: drop the now-unused "Download from GitHub" key from en.yml and all 19 translations (ordered-parity test passes).
  • xtask: update the --include-windows doc on release latest-json — the emitted MSI entries are consumed by the client's install flow, not notify-only.
  • ci: same doc fix in the R2 upload step comment in release.yml.

Testing

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace — all suites green, including i18n::tests::locale_files_have_the_same_keys
  • gpui-updater v0.0.6 was released from a green tree (fmt + clippy -D warnings + 31 tests + doctests)
  • Not runtime-tested on hardware/Windows. To verify end to end on a Windows machine: run a build whose embedded version is older than the published manifest, Settings → Updates → Download & Install, then "Restart to Update" — the app should exit, msiexec should run passively, and the app should relaunch on the new version. The macOS/Linux flows are unchanged by the gate removal.

No UI change on macOS/Linux; on Windows the Updates page gains the auto-install toggle and the install action replaces the "Download from GitHub" button (no screenshot — not built on Windows here).

@greptile-apps

greptile-apps Bot commented Aug 3, 2026

Copy link
Copy Markdown

Greptile Summary

Enables in-app Windows MSI updates through gpui-updater v0.0.6.

  • Removes the Windows install-support gate so manual and automatic update installation use the shared updater flow.
  • Exposes the automatic-install setting on Windows and replaces the GitHub download action with Download & Install.
  • Removes the obsolete localization key and updates release documentation.
  • Updates the gpui-updater dependency and lockfile pin.

Confidence Score: 5/5

The PR appears safe to merge, with no concrete changed-code failures identified.

The Windows UI and automatic-update observer now consistently route install requests through the newly pinned updater version’s MSI flow, while manifest generation and artifact verification behavior remain aligned with that path.

Important Files Changed

Filename Overview
crates/openlogi-gui/src/platform/updater.rs Removes the Windows install gate and allows opted-in Windows clients to invoke the updater’s download-and-install flow.
crates/openlogi-gui/src/windows/settings/updates.rs Exposes automatic installation and the shared Download & Install action on Windows.
crates/openlogi-gui/Cargo.toml Pins gpui-updater to v0.0.6 for staged MSI installation support.
Cargo.lock Updates only the resolved gpui-updater package from v0.0.5 to v0.0.6.
xtask/src/commands/release/latest_json.rs Updates command documentation to describe Windows MSI entries as installable artifacts.

Sequence Diagram

sequenceDiagram
    participant User
    participant UI as Updates UI
    participant Updater as gpui-updater
    participant Manifest as Update manifest
    participant Installer as msiexec
    User->>UI: Check or enable automatic updates
    UI->>Updater: Check for update
    Updater->>Manifest: Fetch signed manifest
    Manifest-->>Updater: MSI metadata and signatures
    Updater-->>UI: Update available
    UI->>Updater: Download and install
    Updater->>Updater: Verify SHA-256 and minisign
    Updater->>Installer: Stage post-exit apply script
    User->>UI: Restart to Update
    UI-->>Installer: Application exits
    Installer->>Installer: Install MSI passively
    Installer-->>User: Relaunch updated application
Loading

Reviews (1): Last reviewed commit: "feat(windows): enable in-app MSI updates" | Re-trigger Greptile

@davidbudnick
davidbudnick merged commit 0af42fa into AprilNEA:master Aug 3, 2026
17 checks passed
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