Skip to content

fix: publish updater manifest with public download URLs - #126

Merged
mattenarle10 merged 1 commit into
mattenarle10:mainfrom
11suixing11:fix/latest-json-download-urls
Jul 28, 2026
Merged

fix: publish updater manifest with public download URLs#126
mattenarle10 merged 1 commit into
mattenarle10:mainfrom
11suixing11:fix/latest-json-download-urls

Conversation

@11suixing11

Copy link
Copy Markdown
Contributor

Fixes #124.

What changed

  • Add a small release-tooling script that rewrites generated latest.json platform URLs from GitHub REST release asset API endpoints to the matching public releases/download URLs.
  • Run that normalization in the publish-release job before the draft release is made public, then re-upload latest.json with --clobber.
  • Leave unsigned/manual releases alone when no latest.json asset exists.
  • Add focused coverage for duplicate platform entries, missing asset mappings, and the GitHub API release object shape.
  • Add a release-checklist reminder to verify updater manifest URL shape after tagging.

Why

Tauri's generated updater manifest can point package URLs at https://api.github.com/repos/.../releases/assets/<id>. Installed clients fetch those URLs without a token, so a shared public IP can exhaust GitHub's unauthenticated REST API quota and make update installation fail with HTTP 403 even though the public release asset itself is still downloadable.

Keeping the manifest on public https://github.com/.../releases/download/... URLs avoids the REST API quota path and fixes the release pipeline instead of requiring a client token or hiding the updater error.

Verification

  • node --test tests/normalize-latest-json.test.mjs
  • Dry run against the current public v1.7.1 release manifest and asset list: normalized 11 platform URLs, 0 api.github.com REST asset URLs remaining, 11 public release download URLs
  • node --check scripts/normalize-latest-json.mjs && node --check tests/normalize-latest-json.test.mjs
  • bun test
  • bun run build
  • bunx tsc --noEmit
  • git diff --check

Not run locally: cargo check --release because this machine does not have a Rust toolchain installed; this PR does not change Rust code.

@11suixing11
11suixing11 marked this pull request as ready for review July 28, 2026 06:23
@11suixing11
11suixing11 force-pushed the fix/latest-json-download-urls branch from 871584d to e097e9c Compare July 28, 2026 06:25

@mattenarle10 mattenarle10 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the release normalization workflow and focused tests. Local validation passed; approving for merge.

@mattenarle10
mattenarle10 merged commit 3db03ef into mattenarle10:main Jul 28, 2026
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.

[bug] auto-updater download can fail with 403 because latest.json uses rate-limited API URLs

2 participants