Skip to content

Release Scripts

The scripts/release/ directory contains automated release pipelines for both server and mobile.

Server Release (release/server.ts)

Interactive pipeline that tests, bumps the version, builds, and pushes a tagged release.

bash
bun commit                            # interactive (prompts for type + message)
bun commit patch                      # prompts for message only
bun commit patch "Fix important bug"  # runs directly

Pipeline:

  1. Prompt for bump type (major / minor / patch) and commit message
  2. Run server tests (bun test)
  3. Run contract tests (scripts/test/contracts.ts)
  4. Bump VERSION and BUILD_DATE in server/src/server.ts
  5. Build (frontend + embeds + Linux binaries via scripts/build/server.sh)
  6. Binary smoke test (included in build step)
  7. Git commit, tag (vX.Y.Z), and push

If any step fails, the pipeline aborts before the git commit — a broken build never gets tagged.

Mobile Release (release/mobile.ts)

Interactive pipeline for mobile app releases.

bash
bun release:mobile                            # interactive
bun release:mobile patch                      # prompts for message only
bun release:mobile patch "Fix navigation bug" # runs directly

Pipeline:

  1. Prompt for bump type and commit message
  2. Run server tests
  3. Run contract tests
  4. Run Flutter analyze
  5. Run Flutter tests
  6. Bump version and build in mobile/pubspec.yaml
  7. Build Android AAB (if SDK configured)
  8. Build iOS IPA (macOS only, if Xcode signing configured)
  9. Git commit, tag (mobile-vX.Y.Z), and push
  10. Print store upload checklist (Google Play + App Store)

Version Sources

  • Server version: const VERSION in server/src/server.ts
  • Mobile version: version: field in mobile/pubspec.yaml
  • Both use semantic versioning (MAJOR.MINOR.PATCH)