Skip to content

Releases and Updates

SFG545 edited this page Aug 12, 2026 · 1 revision

Releases and Updates

Automatic updates

Bundled desktop packages check for updates automatically. The updater is electron-updater, wired up in electron/integrations/updater.js.

Channels

Two channels: stable (the default) and beta.

Switch in Settings → Application → Beta channel. Turning it on sets allowPrerelease and points the updater at the prerelease feed. The choice is written to a preferences file in Orchard's per-user data directory and applied on the next check.

Beta builds are prereleases. They get less testing and can regress. Turning the toggle back off returns you to stable, though a beta already installed stays installed until stable catches up to or passes its version.

Which installs update themselves

Package Auto-update
Windows NSIS Yes
macOS ZIP Yes
Linux AppImage Yes
Linux .deb / .rpm / Arch Update through your package manager
Flatpak Update through Flatpak

Packages installed by a system package manager deliberately do not self-update, since that would fight the package manager.

Versioning

Orchard uses semantic version tags: vMAJOR.MINOR.PATCH, with prereleases as v4.0.0-beta.1. The release workflow validates that the tag matches package.json's version before anything builds, so a mismatched tag fails fast rather than shipping a mislabeled build.

Release pipeline

.github/workflows/release.yml runs on a pushed tag, in these jobs:

Job Produces
prepare Tag and version validation, full test suite, mobile unit tests on JDK 17
build-linux AppImage, Flatpak, .deb, .rpm (x86_64)
build-linux (arm64) AppImage and Flatpak on native arm64 runners
build-arch Arch Linux package
build-windows NSIS installer
build-macos ZIP for Apple Silicon and Intel
build-android Orchard Mobile APK
publish Assembles artifacts, checksums, and the release
publish-github-beta Prerelease publishing for beta tags

Two details worth knowing:

  • arm64 builds run on native arm64 runners rather than cross-compiling, and the job includes an explicit step verifying the native addon's architecture. A wrong-architecture addon fails at load time rather than at build time, which is a bad place to find out.
  • macOS universal ZIPs can also be cross-built from Linux with npm run make:mac, which merges per-architecture apps via scripts/merge-macos-apps.mjs.

Update metadata is merged per platform by scripts/merge-windows-update-metadata.mjs, scripts/merge-macos-update-metadata.mjs, and scripts/generate-android-update-metadata.mjs.

Continuous integration

.github/workflows/node.js.yml runs npm ci, npm run build, and npm test on pushes and pull requests. .github/workflows/android.yml covers the Android app, with android-canary-build.yml for canary APKs.

Where releases are published

Signing

Current Windows and macOS builds are unsigned. Your operating system will warn on first launch. Verify checksums, and install only from the official website or the GitHub releases page. See Installation for the per-platform first-launch steps.

Android release builds are signed from ANDROID_KEYSTORE_FILE, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS, and ANDROID_KEY_PASSWORD.

Changelog

The in-app changelog is src/data/changelog.js, shown after an update. Mobile release notes live in mobile/release-notes.md.

Clone this wiki locally