Repository navigation
v0.5.1 — Windows download hotfix
Windows onboarding hotfix. The pinned BtbN autobuild-YYYY-MM-DD-HH-MM ffmpeg download URL started returning 404 — BtbN prunes old dated autobuilds on a rolling schedule, so the snapshot tag hard-coded for v0.5.0 eventually disappeared and first-run ffmpeg auto-install broke on Windows. MoeKoder now resolves the Windows build at runtime against the permanent rolling latest tag and verifies it with the SHA-256 the GitHub Releases API reports per asset, so supply-chain verification is preserved without depending on a tag that can vanish.
Headline fix: fresh Windows installs can download ffmpeg again. No pinned tag to rot, no unverified fallback — the win64 build is resolved live from the BtbN latest release and still SHA-256-checked before it's trusted.
Install
- Windows —
Moekoder-0.5.1-win-x64.exe. Still unsigned; SmartScreen will show More info → Run anyway on first launch. - macOS —
Moekoder-0.5.1-mac-arm64.dmg. Still unsigned; after dragging into/Applications, run:to clear the Gatekeeper quarantine.xattr -cr /Applications/Moekoder.app
- Linux — not shipped this release. Still on the roadmap.
If you're upgrading from v0.5.0, the auto-updater on Windows pulls this release in the background; the next launch comes up on v0.5.1. macOS users grab the DMG manually until code-signing lands. (If your v0.5.0 install never finished its first-run ffmpeg download because of the 404, this is the build that fixes it.)
Windows ffmpeg download
- The 404, fixed —
getSourceForPlatform('win32')no longer points at a datedautobuild-*tag that BtbN later deletes. NewresolveWindowsSource()queriesapi.github.com/repos/BtbN/FFmpeg-Builds/releases/tags/latest, selects the stableffmpeg-n8.1-latest-win64-gpl-8.1.zipasset, and builds theBinaryArchivefrom its livebrowser_download_urland the API-reporteddigest. - Verification never silently dropped —
resolveWindowsSource()throws a clear, actionable error on any failure (network, missing asset, or a missing/malformedsha256:<hex>digest) rather than degrading to an unverified download. The zip's top-level folder is derived from the asset name, so theffmpeg.exe/ffprobe.exeentry paths stay correct across rebuilds. - macOS unchanged — still a static evermeet.cx pin.
Added
fetchGitHubJson<T>()inmain/http.ts— gated JSON GET that rides the same per-host rate-limit clock asdownloadToFile, sends theUser-Agent+Accept: application/vnd.github+jsonheaders the GitHub REST API requires, and throws a host-prefixed error (status + statusText) on any non-2xx so callers never parse an HTML error page as JSON.api.github.comhost gate (1000 ms) — spacing keeps a single install's resolution calls clear of GitHub's 60 req/hr/IP unauthenticated ceiling.
Changed
getSourceForPlatformis now async — both platform branches share one awaitable call site;ensureInstalledawaits the resolved source before downloading. The Windows path is resolved on demand; macOS returns its static source.
Tests
Offline-deterministic coverage — manager.test.ts stubs fetch with a representative latest release payload (throwaway digest) to cover asset selection, the missing-asset throw, and the missing/invalid-digest throw, all without touching the network. Test count: 234 (was 229).
Known limitations
- The Windows resolver depends on the BtbN
latestrelease exposing theffmpeg-n8.1-latest-win64-gpl-8.1.zipasset with an API-reporteddigest. If BtbN renames the asset or stops emitting digests, resolution fails loudly (with an actionable error) rather than falling back — by design, since the alternative is an unverified download. - Same as v0.5.0: the missing-font diagnostic is best-effort string matching and doesn't enumerate system fonts; soft-subbed mux is still v0.6 territory; embedded-font extraction runs per-job (no
<userData>/fonts/<sourceHash>/cache yet). - Same as v0.4.0: binaries are unsigned, auto-updater is Windows-only, no Linux build.
Source under the Moekoder Source Available License.