Skip to content

Updates

What this does: explains how Helm Cues updates itself, which builds you are offered, and how to go one build back.

Nothing installs mid-show without a click. Cues checks on launch. Downloading and restarting are always up to you.

  • On launch: Cues checks once, quietly. No dialog, no toast.
  • By hand: Helm Cues → Check for Updates… Settings opens on Updates and checks at once. Or press Check for updates there.
  • An update is waiting: a dot on the Settings Updates tab, labelled Update available.

Settings → Updates shows Current version and Last checked. Up to date: You're on the latest version.

  1. Settings → Updates. The card reads Update available — <version>, with that build’s release notes.

  2. Download update. A progress bar shows n%.

  3. The card reads Update ready to install: Version 0.2.17 is staged. Restarting applies it — save your work first.

  4. Restart to install. Cues never restarts on its own.

Name the risk: with Live armed the card warns twice.

  • Before download: Live is armed. Downloading is safe, but hold the restart until the show is down.
  • Before restart: Live is armed. Restarting will stop playback and close the show.

Download during the show if you must. Restart after it.

ChannelOffered
StableReleased builds only
BetaPre-release builds as well as stable ones. The newer wins. “They have had less show time.”

Settings → Updates → Update channel:

Your licenceYou see
A key with beta accessA Beta switch. On: beta. Off: stable.
A key without beta accessBeta or Stable, read-only. “Set on your licence by Helm.”
No key on this MacStable. “Beta builds need a licence key with beta access.”
  • Changing the channel checks again at once.
  • Switching back to stable never downgrades. Cues waits until a stable build is newer than the one you run.
  • A perpetual licence is offered builds within its major version only.

After an update installs, Settings → Updates shows What's new in <version> with that build’s release notes. The Updates tab carries a dot until you open it.

It shows once. Every build’s notes are also on What’s new.

Goes one build back: the one you ran before the last update.

  1. Settings → Updates → Previous version.

  2. Reinstall previous version (0.2.15), with the build number you came from.

  3. Read the confirm: It downloads 0.2.15 again and replaces 0.2.16 when you restart. Shows saved by 0.2.16 may not open in 0.2.15. Confirm.

  4. The download is checked like any update.

  5. Previous version ready to install. Restart to install.

It doesIt does not
Install the previous build’s exact file, checked like any updateRoll back shows, media or settings
Work once per updateGo more than one step back
Need the networkWork if that release is no longer offered
  • The button shows only when a previous build is recorded and nothing is downloading or staged.
  • An app in /Applications you cannot write to asks for an administrator password.
  • Shows saved by the newer build stay as they are. Until 0.3.0 they still open in 0.2.12 and later. See Technical reference.

Cues follows the same pipeline as Helm DJ. The differences are the signing key, the tag prefix and the product segment on the endpoint.

Never release without an explicit instruction.

  • Private key: ~/.tauri/helm-cues.key, empty password, never committed. Public key: products/cues/src-tauri/tauri.conf.json → plugins.updater.pubkey.
  • Name the risk: rotating the key strands every shipped build. It can no longer verify an update, and Reinstall previous version cannot reach a build signed with the old key. Rotate only if the private key leaks, and ship a fresh installer.
  • bundle.createUpdaterArtifacts must stay true. Without it the release ships DMGs only and the update endpoint has nothing to serve.
ProductTagExample
Helm Cueshelm-cues-v<semver>helm-cues-v0.2.16
Helm DJv<semver>v0.3.14

A beta build is a GitHub pre-release. A stable build is a normal release.

https://helm.show/api/updates/helm-cues/{{target}}-{{arch}}/{{current_version}}
  • website/src/lib/updates.ts picks the newest release on the caller’s channel from the last 20, and answers 204 when the caller is current.
  • The channel comes from the licence key the app sends. No key, or an unknown, revoked or expired one, gets stable.
  • ?pin=x.y.z returns exactly that release. Reinstall previous version uses it.
  • Downloads go through /api/downloads/<asset_id>, so the GitHub token never reaches the app.
  • The app sends X-Helm-Client-Key, compiled in from products/cues/.env. Without it the endpoint answers 401 and the app never updates.

See Auto-update service.

  1. Every version file reads the release version and is committed: tauri.conf.json, Cargo.toml, package.json.

  2. Write this release’s notes in products/cues/RELEASE_NOTES.md. They become the GitHub release body and the in-app notes.

  3. Tag and push: git tag -a helm-cues-v0.2.17 -m "Helm Cues v0.2.17", then git push origin helm-cues-v0.2.17.

  4. The Release Helm Cues workflow builds arm64 and x64, signs the updater files, uploads them with latest.json.

products/cues/scripts/release.sh <tag> is the local equivalent: it builds both architectures, notarizes, uploads and bumps to the next patch.

Terminal window
curl -H "X-Helm-Client-Key: $HELM_CLIENT_KEY" \
https://helm.show/api/updates/helm-cues/darwin-aarch64/0.0.0 | jq

Expect a manifest with the new version, a signature and a download URL. A 404 with no asset for platform means the .app.tar.gz names lack the darwin-aarch64 / darwin-x86_64 slug.

AreaPath
Updater configproducts/cues/src-tauri/tauri.conf.json (plugins.updater)
In-app update flowproducts/cues/src-tauri/src/updates.rs, src/src/lib/integrations/updater.ts
Release workflow.github/workflows/release-cues.yml
Local release scriptproducts/cues/scripts/release.sh
Update servicewebsite/src/lib/updates.ts, website/src/lib/update-channel.ts