[Bug] v0.15.0 release missing latest.yml — auto-updater throws 404 on every launch
Summary
Starting with v0.15.0, wmux's bundled electron-updater throws a noisy 404 on every launch because the GitHub release for v0.15.0 is missing the latest.yml metadata file that electron-updater requires.
This is purely cosmetic (the app still works), but the error is printed on startup and every 6 hours thereafter (RECHECK_INTERVAL_MS = 6 * 60 * 60 * 1000 in src/main/updater.ts).
Environment
- wmux version: v0.15.0
- OS: Windows 10/11
- Install method: Release zip (
wmux-0.15.0-win-x64.zip)
- Install location:
%LOCALAPPDATA%\wmux\
Steps to reproduce
- Download
wmux-0.15.0-win-x64.zip from https://github.com/amirlehmam/wmux/releases/tag/v0.15.0
- Extract anywhere
- Run
wmux.exe
Observed output
[wmux] Installed wmux OpenCode plugin to C:\Users\ilies\.config\opencode\plugin\wmux.js
Checking for update
wmux pipe server listening on \\.\pipe\wmux
Error: Error: Cannot find latest.yml in the latest release artifacts
(https://github.com/amirlehmam/wmux/releases/download/v0.15.0/latest.yml): HttpError: 404
"method: GET url: https://github.com/amirlehmam/wmux/releases/download/v0.15.0/latest.yml
Please double check that your authentication token is correct..."
[updater] Auto-updater error: Error: Cannot find latest.yml in the latest release artifacts...
code: 'ERR_UPDATER_CHANNEL_FILE_NOT_FOUND'
Root cause
Looking at the v0.15.0 release: https://github.com/amirlehmam/wmux/releases/tag/v0.15.0
The release ships:
wmux-0.15.0-win-x64.zip (the binary)
Source code (zip) / Source code (tar.gz) (auto-generated by GitHub)
But it is missing latest.yml, which electron-updater (loaded in src/main/updater.ts via import { autoUpdater } from 'electron-updater') requires to discover update metadata. Without it, electron-updater fetches https://github.com/amirlehmam/wmux/releases/download/v0.15.0/latest.yml and gets a 404.
The autoUpdater.error event listener in initAutoUpdater() (lines 88–90 of src/main/updater.ts) logs the full error, and the error fires on every checkForUpdates() call — which happens on startup and every 6 hours.
Suggested fixes (in order of preference)
1. Ship latest.yml in the release (preferred — the right fix)
electron-builder is configured in electron-builder.json. The release workflow should be generating latest.yml (or latest.yml.gz) and uploading it as a release asset. Verify the build pipeline:
- In CI, the build step should run
electron-builder --win --x64 --publish never (or always) which produces dist/latest.yml alongside the zip.
- The release workflow should upload
dist/latest.yml to the GitHub release as an asset.
Sample latest.yml for v0.15.0:
version: 0.15.0
files:
- url: wmux-0.15.0-win-x64.zip
sha512: <sha512 of the zip>
size: <size in bytes>
path: wmux-0.15.0-win-x64.zip
sha512: <sha512 of the zip>
releaseDate: '2026-07-02T00:00:00.000Z'
For macOS/Linux builds (if/when added), also ship latest-mac.yml and latest-linux.yml as needed.
2. Defensive fix in code: catch + silence the 404
Even with latest.yml shipped, transient GitHub outages or partial releases (e.g. for hot-patch builds) can trigger the same error. Make initAutoUpdater() more defensive:
autoUpdater.on('error', (err) => {
// Channel-file-not-found is expected when the release doesn't ship
// latest.yml (e.g. manual/partial releases). Log a warning, not the full stack.
const msg = err?.message || String(err);
if (msg.includes('ERR_UPDATER_CHANNEL_FILE_NOT_FOUND') ||
msg.includes('Cannot find latest.yml')) {
console.warn('[updater] latest.yml not found in latest release — update check skipped.');
return;
}
console.error('[updater] Auto-updater error:', err);
});
3. Allow disabling the updater via env var
Some users (e.g. air-gapped, corporate, sandboxed) cannot reach GitHub. Add a kill switch:
export function initAutoUpdater(): void {
if (process.env.WMUX_DISABLE_UPDATER === '1') {
console.log('[updater] Disabled via WMUX_DISABLE_UPDATER=1');
return;
}
// ...existing code
}
This is consistent with other env-var overrides already in the codebase (e.g. WMUX_MIN_RELEASE_AGE_DAYS).
Workaround for end users (until fixed)
None clean. The error is purely cosmetic. To suppress it locally, you can patch app.asar (not recommended — lost on every reinstall), or downgrade to a release that ships latest.yml.
Related
Priority
Medium — the app functions correctly, but the error spam is a poor first-launch experience and obscures real problems in the user's terminal scrollback.
[Bug] v0.15.0 release missing
latest.yml— auto-updater throws 404 on every launchSummary
Starting with v0.15.0, wmux's bundled
electron-updaterthrows a noisy 404 on every launch because the GitHub release for v0.15.0 is missing thelatest.ymlmetadata file that electron-updater requires.This is purely cosmetic (the app still works), but the error is printed on startup and every 6 hours thereafter (
RECHECK_INTERVAL_MS = 6 * 60 * 60 * 1000insrc/main/updater.ts).Environment
wmux-0.15.0-win-x64.zip)%LOCALAPPDATA%\wmux\Steps to reproduce
wmux-0.15.0-win-x64.zipfrom https://github.com/amirlehmam/wmux/releases/tag/v0.15.0wmux.exeObserved output
Root cause
Looking at the v0.15.0 release: https://github.com/amirlehmam/wmux/releases/tag/v0.15.0
The release ships:
wmux-0.15.0-win-x64.zip(the binary)Source code (zip)/Source code (tar.gz)(auto-generated by GitHub)But it is missing
latest.yml, whichelectron-updater(loaded insrc/main/updater.tsviaimport { autoUpdater } from 'electron-updater') requires to discover update metadata. Without it, electron-updater fetcheshttps://github.com/amirlehmam/wmux/releases/download/v0.15.0/latest.ymland gets a 404.The
autoUpdater.errorevent listener ininitAutoUpdater()(lines 88–90 ofsrc/main/updater.ts) logs the full error, and the error fires on everycheckForUpdates()call — which happens on startup and every 6 hours.Suggested fixes (in order of preference)
1. Ship
latest.ymlin the release (preferred — the right fix)electron-builderis configured inelectron-builder.json. The release workflow should be generatinglatest.yml(orlatest.yml.gz) and uploading it as a release asset. Verify the build pipeline:electron-builder --win --x64 --publish never(oralways) which producesdist/latest.ymlalongside the zip.dist/latest.ymlto the GitHub release as an asset.Sample
latest.ymlfor v0.15.0:For macOS/Linux builds (if/when added), also ship
latest-mac.ymlandlatest-linux.ymlas needed.2. Defensive fix in code: catch + silence the 404
Even with
latest.ymlshipped, transient GitHub outages or partial releases (e.g. for hot-patch builds) can trigger the same error. MakeinitAutoUpdater()more defensive:3. Allow disabling the updater via env var
Some users (e.g. air-gapped, corporate, sandboxed) cannot reach GitHub. Add a kill switch:
This is consistent with other env-var overrides already in the codebase (e.g.
WMUX_MIN_RELEASE_AGE_DAYS).Workaround for end users (until fixed)
None clean. The error is purely cosmetic. To suppress it locally, you can patch
app.asar(not recommended — lost on every reinstall), or downgrade to a release that shipslatest.yml.Related
latest.ymlformat: https://www.electron.build/configuration/publish#generated-updater-artifactsPriority
Medium — the app functions correctly, but the error spam is a poor first-launch experience and obscures real problems in the user's terminal scrollback.