Repository navigation
fix(web): give every production release a new patch version so desktop updates - #14751
Conversation
…p updates Desktop only takes a web bundle or a full app update when the published version is newer than the one it runs. packages/web/package.json has sat at 1.5.180 since the Aug 3 Version Packages merge, so every release since then republished 1.5.180 and no desktop install has updated. production-gate now picks the next patch after the newer of the repo version and the published s3://audius.co/package.json marker, and web-deploy plus the three desktop builds stamp it before packaging. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Dependency limit exceeded — report not shown. This pull request scan exceeded the 10,000-dependency limit applied to this scan, so the results are incomplete and may be inaccurate. To avoid reporting false positives, Socket has not posted a report. Upgrade your plan to raise the dependency limit and get complete reports, or view the partial scan in the dashboard. Socket is always free for open source. If this is a non-commercial open source project, contact us to request a free Team account. |
Problem
The desktop app has not updated since Aug 3.
Desktop has two update paths, and both need a newer version than the one installed:
checkForWebUpdateinpackages/web/src/electron.js): pollss3://audius.co/package.jsonevery minute and only downloadsbuild-production.tar.gzwhen the marker has the same major.minor and a strictly higher patch.download.audius.co/latest*.ymland only installs a higher version.Nothing bumps
packages/web/package.jsonper release. It has been1.5.180since Version Packages #14216 (2026-08-03). The open Version Packages PR (#14609) doesn't touch web either, because no changeset names@audius/web. Every production approval since then has published version 1.5.180:s3://audius.co/package.jsonwas last written 2026-11-03 and says1.5.180.latest*.ymlsays1.5.180, and the Mac build was re-released 2026-11-03 under the same version.So a desktop install on 1.5.180 sees nothing newer and keeps whatever web bundle it installed, anywhere from Aug to Nov. This is also why desktop users were still hitting the old 500 MB upload cap long after the 2 GB change.
Fix
production-gatenow picks the release version after approval:web-deployand the Mac/Windows/Linux desktop jobs write that version intopackages/web/package.jsonandbuild-production/package.jsonbefore packaging. That keeps the S3 marker, the web-update tarball, the electron-updater feeds and the app's ownappVersionon the same number. The Slack messages report it too.Why after approval: runs wait at the gate for days and get approved out of order. A version picked at build time would give every waiting run the same number.
Nothing changes on the client. The S3 layout is the same (
packages/web/prefix in the tar,package.jsoninsidebuild-production/). An old client only understands "higher patch", and that's what it gets.How existing 1.5.180 installs pick it up
The next approved production run publishes 1.5.181 (checked against the live marker: repo 1.5.180, published 1.5.180 → 1.5.181).
MIN_APP_VERSION, so it's the soft banner), and accepting it reloads into the current web build.latest*.ymlon next launch, downloads the full app, and installs it on quit. That path is silent for patch bumps.Confirmed on a real install
On a Mac desktop install from Aug 18:
/Applications/Audius.appis 1.5.180.~/Library/Application Support/Audius/build-production/package.jsonis also 1.5.180, sogetNewestBuildDirectorykeeps loading the bundled Aug 18 build.checkForWebUpdatenever fires.app.asarhas none of the flags added after Aug 18 (track_tile_waveform,now_playing_comments).Verify after the next approval
curl -s https://s3.us-west-1.amazonaws.com/audius.co/package.json | jq -r .versionprints1.5.181, and thePick release versionstep in the gate job logs the same number.~/Library/Application Support/Audius/build-production/package.jsonis 1.5.181.Notes
appVersion, analytics, the settings page) still comes from the repopackage.jsonat build time, because the build runs before the gate. Only the update markers and desktop app versions are stamped.actionlintis clean. I ran the version-pick script locally against the live S3 marker.🤖 Generated with Claude Code