Build and Release
Local build and CI release process.
Local Build
Desktop
uv sync
uv run scripts/deploy.pyArtifacts are under dist/. Windows/Linux use the Ghost-Downloader-3.dist/ directory; macOS uses the .app bundle.
Local builds only produce runnable programs. Installers, DMG, deb, and AppImage are packaged by CI.
Browser Extension
cd browser_extension/app
npm install
npm run buildArtifacts are under dist/.
After changing the message format between the desktop app and the extension, build and test both sides together.
Build Failure Troubleshooting
| Issue | Fix |
|---|---|
| ModuleNotFoundError reported at startup after compilation | Add the missing module to EXTRA_INCLUDE_MODULES in scripts/deploy.py |
| FeaturePack not in the artifacts | Confirm manifest.toml exists in the pack directory |
CI Release
.github/workflows/build.yml, manually triggered.
Choose build_target (windows / macos / linux / android / all) and whether to create_release.
| Platform | Artifacts |
|---|---|
| Windows | .exe installer + .zip portable (x64 + arm64) |
| macOS | .dmg (arm64 + x64) |
| Linux | .deb + .AppImage + .tar.xz (x64 + arm64) |
| Android | .apk (arm64, no BT/eD2k) |
Translation sync: crowdin.yml (desktop) and crowdin-browser.yml (extension), manually triggered push/pull.