Repository navigation
Self-contained desktop installers with first-run model setup - #9
Merged
Merged
Conversation
Installers now carry a relocatable CPython 3.11 (python-build-standalone via uv) with the core and its analysis dependencies installed, static FFmpeg and ffprobe (ffmpeg-static builds, licence alongside) and the built web app, so a downloaded .exe/.dmg/AppImage works with nothing else installed. - desktop/scripts/bundle.mjs builds desktop/bundle/ for the host platform. - The app runs the bundled core with `python -m metachlorian`, pointing it at the bundled FFmpeg and web app. - First launch runs `models fetch --json` and shows a progress screen; failures offer Try again and keep finished downloads. - desktop/scripts/check-package.mjs checks a packaged app on its own: FFmpeg, native imports, a real clip analysed into shots, the core serving the web app, and the Electron app starting its bundled core. CI runs it on macOS, Windows and Linux for pull requests; the release workflow runs it before uploading installers. - Core ML is now opt-in (METACHLORIAN_COREML=1): it failed at inference on SigLIP's vision head on Apple Silicon, breaking embeddings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
compileall exits non-zero when any file fails to compile, which some standard-library and dependency test files do on Windows. Precompiling only speeds up start-up, so list them instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…edger llm.py imported fcntl at module level, so the core failed to import on Windows (found by the packaged-app check). Lock with msvcrt there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
JeremySNR
changed the base branch from
release/cutawan-process
to
ccr-72c986a6-jv6spo
October 13, 2026 12:55
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Makes the desktop installers work for non-technical people: download the
.exe/.dmg/ AppImage, install, open, and it works. Stacked on #8 — merge that first, and retarget this PR to the default branch before deleting #8's branch (deleting a base branch closes stacked PRs).uv) with the core and its analysis dependencies, static FFmpeg/ffprobe (ffmpeg-static builds, licence and README alongside) and the built web app.desktop/scripts/bundle.mjsbuilds it for the host platform.python -m metachlorian;models fetch --jsonprogress events; Core ML made opt-in (METACHLORIAN_COREML=1) because it fails on SigLIP's vision head on Apple Silicon, breaking embeddings.desktop/scripts/check-package.mjsverifies a packaged app on its own (FFmpeg, native imports, a real clip analysed into shots, the core serving the web app, the Electron app starting its bundled core). CI runs it on macOS/Windows/Linux for PRs; the release workflow runs it before uploading installers.Testing (macOS arm64, locally)
npm run bundle: 522 MB Python + 87 MB FFmpeg + 8 MB web app; packaged app 917 MB; ad-hoc signature verifies (codesign --verify --deep --strict).check-package.mjs: all checks pass; screenshot shows the full library UI served by the bundled core.Windows and Linux are verified by this PR's
desktop appCI jobs.Still needed for a friction-free install
Installers are unsigned (OPEN_QUESTIONS Q3). macOS users must use Privacy & Security → Open Anyway once; Windows shows SmartScreen's More info → Run anyway. Removing those needs an Apple Developer ID (notarisation) and a Windows code-signing certificate; the workflow already reads the secrets.
🤖 Generated with Claude Code