You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In-app auto-update (Sparkle-compatible). CODEC now checks for new releases and can update itself. A pure-Python client (codec_update.py) reads a signed Sparkle appcast and verifies every download's Ed25519 signature against the embedded SUPublicEDKey before installing — a tampered build is refused. New dashboard endpoints GET /api/update/check + POST /api/update/download, plus an in-app update banner ("Download & open") that polls on load and every 6h.
GitHub-hosted update feed. Each release (signed .dmg + appcast) is published to AVADSA25/codec-updates; the app polls a permanent releases/latest/download/appcast.xml URL that always resolves to the newest version. Host is a one-line switch (sparkle_feed_url config / CODEC_APPCAST_PREFIX) for a later move to a custom domain or Cloudflare R2.
Appcast generation in the release pipeline.release_macos.sh regenerates the Ed25519-signed feed automatically after building the DMG.
Fixed
Gatekeeper signing. Bundled Python now lives under Contents/Resources/python instead of Frameworks/ — a bare Python tree under Frameworks/ is treated as a nested bundle and broke the code-signing seal (Gatekeeper rejected the app). Launcher, signing, and bundler scripts updated to match.
Release pipeline. Corrected a false "(dry run)" status line; the DMG is now notarized + stapled so it opens cleanly on a never-online Mac.
CI green + clean. Resolved stacked CI gate failures (ruff lint, trusted-skill manifest regen after the UI-TARS port fix, stale packaging-test assertions) and removed a phantom codec submodule gitlink that tripped actions/checkout on every run.
Changed
Unified model port. All Qwen MLX endpoints reconciled to :8083 (was split :8081/:8082); the UI-TARS vision model is served from the same unified server.