Skip to content

v0.5.1 — Windows download hotfix

Choose a tag to compare

@Shironex Shironex released this 22 May 09:02
· 73 commits to main since this release

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:
    xattr -cr /Applications/Moekoder.app
    to clear the Gatekeeper quarantine.
  • 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 dated autobuild-* tag that BtbN later deletes. New resolveWindowsSource() queries api.github.com/repos/BtbN/FFmpeg-Builds/releases/tags/latest, selects the stable ffmpeg-n8.1-latest-win64-gpl-8.1.zip asset, and builds the BinaryArchive from its live browser_download_url and the API-reported digest.
  • Verification never silently dropped — resolveWindowsSource() throws a clear, actionable error on any failure (network, missing asset, or a missing/malformed sha256:<hex> digest) rather than degrading to an unverified download. The zip's top-level folder is derived from the asset name, so the ffmpeg.exe / ffprobe.exe entry paths stay correct across rebuilds.
  • macOS unchanged — still a static evermeet.cx pin.

Added

  • fetchGitHubJson<T>() in main/http.ts — gated JSON GET that rides the same per-host rate-limit clock as downloadToFile, sends the User-Agent + Accept: application/vnd.github+json headers 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.com host gate (1000 ms) — spacing keeps a single install's resolution calls clear of GitHub's 60 req/hr/IP unauthenticated ceiling.

Changed

  • getSourceForPlatform is now async — both platform branches share one awaitable call site; ensureInstalled awaits 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 latest release exposing the ffmpeg-n8.1-latest-win64-gpl-8.1.zip asset with an API-reported digest. 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.