electron-updater only detects an update when the GitHub Release has both of these attached:
SoundSync Setup <version>.exe— NSIS installer produced byelectron-builderlatest.yml— manifestelectron-updaterreads (contains SHA512 + version + path)
A notes-only release (tag + body, no binaries) will not be detected by installed clients. They will report "Up to date" against their current installed version.
npm run bump # patch: 2.0.7 → 2.0.8
# or
npm run bump:minor # 2.0.7 → 2.1.0
# or
npm run bump:major # 2.0.7 → 3.0.0scripts/bump-version.js updates:
package.jsonversionsrc/settings.htmlversion display (inline<div class="version" id="appVersion">v…</div>and the JS fallback whenwindow.api.getAppVersion()is unavailable).
Commit the bump as its own commit:
git add package.json src/settings.html
git commit -m "chore(release): bump version to vX.Y.Z"npm run build:winThis runs prebuild (which would re-bump, so skip by calling electron-builder directly if you already bumped):
npx electron-builder --winOutput:
dist/SoundSync Setup <version>.exedist/latest.ymldist/win-unpacked/(unpacked build tree)dist/builder-effective-config.yaml- Other electron-builder artifacts
node scripts/verify-release-artifacts.jsChecks:
- Installer +
latest.ymlexist indist/ - Installer filename matches the SoundSync naming regex
latest.ymlreferences the same version + filename + SHA512 as the produced installer- No stale artifacts from a previous version are left in
dist/
# Tag must match package.json version.
gh release create vX.Y.Z \
--repo Botify-Network/soundsync \
--title "SoundSync vX.Y.Z" \
--notes "$(cat <<'EOF'
## What's new
- ...
## Upgrade
Install the attached `SoundSync Setup vX.Y.Z.exe`, or wait for the in-app updater to pick it up automatically.
## Full changelog
See [CHANGELOG.md](https://github.com/Botify-Network/soundsync/blob/main/CHANGELOG.md).
EOF
)"
gh release upload vX.Y.Z \
--repo Botify-Network/soundsync \
"dist/SoundSync Setup X.Y.Z.exe" \
"dist/latest.yml"
⚠️ Both files must be uploaded. Thelatest.ymlupload is the one that armselectron-updaterfor installed clients.
The app reads update manifests from https://botify-network.com/downloads/soundsync/files (configured in the broker, not in this repo). Verify the broker resolves the freshly-uploaded artifact:
curl -sS https://botify-network.com/downloads/soundsync/latest.yml | head -10Expected: the YAML reports the new version + filename + SHA512 you just uploaded.
If the broker is stale, the broker config in botify-network-site may need updating. That's a sibling-repo task — do not edit broker config from this repo.
On a machine running the previous version:
- Open Settings → Downloads tab.
- Click Check for updates.
- Expect "Update available: vX.Y.Z" within ~10s.
- With Install updates on next restart on, quit the app — the new version should install silently.
- Relaunch — verify
Settings → version displayshows vX.Y.Z.
If detection fails, check:
- Does
latest.ymlexist on the release? (Step 4.) - Does the broker return the right YAML? (Step 5.)
- Is
autoUpdateset totruein the user'selectron-store? (Settings → Check for updates automatically.)
- No deploy / release without operator approval. This applies to every release, including patch versions.
- No force-push to
mainormaster. - No deletion of release tags. If a release is broken, ship a new patch version.
NSIS installers are currently not signed by a Botify certificate. Windows SmartScreen will warn on first run. This is a known gap. Signing is tracked separately at the org-governance level (botify-network-site).
If a release ships broken:
- Do not delete the release or tag.
- Bump to the next patch version and ship a fix forward.
- Note the broken version in
CHANGELOG.mdunder the new patch's entry ("Reverted X from vA.B.C").