You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 6a6f554
Browse filesBrowse the repository at this point in the historyBrowse files
fix(updater): never open a raw .app.zip from the Download button (auto-update S3)
The notify-only updater's Download action was `feed.url || product.downloadUrl ||
base`. That was correct while `feed.url` was a release page — but S2 made it the
arch-matched LevelCode-<arch>.app.zip, an artifact for Squirrel to INSTALL. Left
alone, the button would start a raw zip download instead of showing a page.
Extracted the choice into a pure `U.downloadUrl(feed, product, base)`:
`product.downloadUrl` → `feed.releaseNotesUrl` → base. `feed.url` is dropped from
the human path entirely, so no future feed change can put a zip behind it.
Sequencing correction (the reason this is worth shipping now, not with S4): the
notify-only client is served a 200 REGARDLESS of LEVELCODE_UPDATE_FEED_SIGNED —
`unless notify_only_client? || (signed_feed? && rel[:installable])`. So this broke
on the next release carrying an S1 zip, not on flipping the flag. Nothing in the
code would have caught that, unlike the flag-ordering constraint which the
controller now enforces via `installable`. AUTO-UPDATE.md said S3 merely preceded
S4; it now records both constraints and marks S1-S3 done.
Verified: 9 unit tests pass (2 new), and restoring the old preference order fails
the new test with actual=…/LevelCode-arm64.app.zip vs expected=levelcode.ai/download.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments