-
Notifications
You must be signed in to change notification settings - Fork 281
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Switch macOS update mechanism to static JSON mode #461
Conversation
This doesn't seem like a complete changelog entry. |
For reference, here is the proposal as I understand it. The current update URL for macOS is something like https://packages.element.io/desktop/update/macos/?localVersion=1.11.10, and that returns a JSON response that looks like: { "url": "https://packages.element.io/desktop/update/macos/Element-1.11.15-universal-mac.zip" } (similarly for s/desktop/nightly/.) However, importantly, if the version in the query string is up to date, it returns a 204 to indicate no update is necessary. This is problematic, because it is served by a PHP script. The proposal is:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems plausible to me, though:
- I wouldn't have minded a clearer walk-through of the current mechanism and why it won't work on R2, rather than having to figure it out myself.
- The documentation at https://github.com/Squirrel/Squirrel.Mac#server-support makes it read like the 204 response is still a requirement. Are you sure it's not? (To be fair, it also says "you can store your update metadata on S3", so it's entirely believable that the docs are just wrong).
- It would be nice if we could figure out a way to document that releases-legacy magic somehow so we remember what it's doing when we come back to it in a year's time
- Currently these URLs are 404s. I take it that is not a problem?
You got it all bang on, apologies for not making it clearer straight off the bat.
Yup, and instruct it to use that newer format, unfortunately it isn't smart enough to magically decide based on the response.
All old clients will get a 200 OK (via transform [rewrite]) with the URL to update to a version which uses the new JSON mechanism, so will unconditionally tell them to update, then they'll never look at the file again. The docs are a little poor, but the last section is a complete alternative, having read the underlying Obj-C code and having performed tests, it works exactly as expected if you just read that last section on its own
It'll be implemented in terraform, we can make sure it is clear there
They work fine for me, only thing lacking is the transforms |
Ok, the docs really fail to make that clear, but thanks for double-checking!
Right, it was the |
* This allows the update server to be entirely static, such as a CDN or object store, as defined at https ([\element-hq#461](element-hq#461)). * Enable threads by default ([\#9736](matrix-org/matrix-react-sdk#9736)). Fixes element-hq/element-web#19270 element-hq/element-web#21910 and element-hq/element-web#23946. * Add inline code formatting to rich text editor ([\#9720](matrix-org/matrix-react-sdk#9720)). * Add emoji handling for plain text mode of the new rich text editor ([\#9727](matrix-org/matrix-react-sdk#9727)). * Overlay virtual room call events into main timeline ([\#9626](matrix-org/matrix-react-sdk#9626)). Fixes element-hq/element-web#22929. * Adds a new section under "Room Settings" > "Roles & Permissions" which adds the possibility to multiselect users from this room and grant them more permissions. ([\#9596](matrix-org/matrix-react-sdk#9596)). Contributed by @GoodGuyMarco. * Add emoji handling for rich text mode ([\#9661](matrix-org/matrix-react-sdk#9661)). * Add setting to hide bold notifications ([\#9705](matrix-org/matrix-react-sdk#9705)). * Further password reset flow enhancements ([\#9662](matrix-org/matrix-react-sdk#9662)). * Snooze the bulk unverified sessions reminder on dismiss ([\#9706](matrix-org/matrix-react-sdk#9706)). * Honor advanced audio processing settings when recording voice messages ([\#9610](matrix-org/matrix-react-sdk#9610)). Contributed by @MrAnno. * Improve the visual balance of bubble layout ([\#9704](matrix-org/matrix-react-sdk#9704)). * Add config setting to disable bulk unverified sessions nag ([\#9657](matrix-org/matrix-react-sdk#9657)). * Only display bulk unverified sessions nag when current sessions is verified ([\#9656](matrix-org/matrix-react-sdk#9656)). * Separate labs and betas more clearly ([\#8969](matrix-org/matrix-react-sdk#8969)). Fixes element-hq/element-web#22706. * Show user an error if we fail to create a DM for verification. ([\#9624](matrix-org/matrix-react-sdk#9624)). * Prevent unnecessary m.direct updates ([\#9805](matrix-org/matrix-react-sdk#9805)). Fixes element-hq/element-web#24059. * Fix checkForPreJoinUISI for thread roots ([\#9803](matrix-org/matrix-react-sdk#9803)). Fixes element-hq/element-web#24054. * Load RTE components only when RTE labs is enabled ([\#9804](matrix-org/matrix-react-sdk#9804)). * Fix issue where thread panel did not update correctly ([\#9746](matrix-org/matrix-react-sdk#9746)). Fixes element-hq/element-web#23971. * Remove async call to get virtual room from room load ([\#9743](matrix-org/matrix-react-sdk#9743)). Fixes element-hq/element-web#23968. * Check each thread for unread messages. ([\#9723](matrix-org/matrix-react-sdk#9723)). * Device manage - handle sessions that don't support encryption ([\#9717](matrix-org/matrix-react-sdk#9717)). Fixes element-hq/element-web#23722. * Fix hover state for formatting buttons (Rich text editor) (fix element-hq/element-web/issues/23832) ([\#9715](matrix-org/matrix-react-sdk#9715)). * Don't allow group calls to be unterminated ([\#9710](matrix-org/matrix-react-sdk#9710)). * Fix replies to emotes not showing as inline ([\#9707](matrix-org/matrix-react-sdk#9707)). Fixes element-hq/element-web#23903. * Update copy of 'Change layout' button to match Element Call ([\#9703](matrix-org/matrix-react-sdk#9703)). * Fix call splitbrains when switching between rooms ([\#9692](matrix-org/matrix-react-sdk#9692)). * bugfix: fix an issue where the Notifier would incorrectly fire for non-timeline events ([\#9664](matrix-org/matrix-react-sdk#9664)). Fixes element-hq/element-web#17263. * Fix power selector being wrongly disabled for admins themselves ([\#9681](matrix-org/matrix-react-sdk#9681)). Fixes element-hq/element-web#23882. * Show day counts in call durations ([\#9641](matrix-org/matrix-react-sdk#9641)).
Notes: This allows the update server to be entirely static, such as a CDN or object store, as defined at https://github.com/Squirrel/Squirrel.Mac#update-file-json-format
This is a high risk change but has undergone manual testing. When we migrate packages.element.io over to R2 we won't be able to maintain the PHP script for Squirrel.Mac updating so have switched to its newer JSON mode. For backwards compatibility we will set up rewrites from
https://packages.element.io/{desktop,nightly}/update/macos/
->$/releases-legacy.json
(file example) - this will instruct all clients still looking in the old path (outdated ones) to update to a modern build which looks at the newreleases.json
and handles update recognition itself.Here's what your changelog entry will look like:
🚨 BREAKING CHANGES