Skip to content

Releases

Every artifact built from this repository has a corresponding entry on the GitHub Releases page. That page is the authoritative feed for what has shipped, when, and what changed.

All releases — web apps, the API, and native apps — are listed at github.com/jonot-io/jonot/releases.

Native apps — semantic version tags, pushed manually by the engineer cutting the release:

  • apps/host (desktop): host-v<semver> — e.g. host-v1.2.3
  • apps/native-kiosk: android-kiosk-v<semver> — e.g. android-kiosk-v1.4.0
  • apps/native-desk: android-desk-v<semver> — e.g. android-desk-v1.4.0

Web apps and API — timestamped rolling markers created automatically after each successful production deploy:

  • apps/api (Worker): api-r<YYYYMMDD-HHMM>-<sha7> — e.g. api-r20260523-1542-abc1234
  • Web SPAs (9 apps): web-<app>-r<YYYYMMDD-HHMM>-<sha7> — e.g. web-admin-r20260523-1542-abc1234

Native apps (host, android-kiosk, android-desk)

Section titled “Native apps (host, android-kiosk, android-desk)”

Releases for native artifacts are triggered by pushing a tag matching the artifact's prefix. The CI workflow builds, signs, and publishes to the appropriate store, then creates a GitHub Release with attached binaries.

To cut a release:

Terminal window
git tag host-v1.0.0
git push origin host-v1.0.0

Replace host with android-kiosk or android-desk as appropriate, and bump the version to match the versionName / libs.versions.toml entry in the app.

Each GitHub Release for a native app includes:

  • android-kiosk / android-desk — signed AAB, ProGuard mapping, and the Play Store changelog (whatsnew-en-US.txt).
  • host.deb, .rpm, SHA256SUMS, and SHA256SUMS.asc (GPG-signed).

Pushes to main deploy automatically to the development environment. Production is promoted by force-moving a movable release tag to the desired commit and pushing it:

Terminal window
# Ship everything (all nine SPAs + API):
git tag -f release <sha> && git push -f origin release
# Ship the API only:
git tag -f release-api <sha> && git push -f origin release-api
# Ship a single SPA (e.g. admin):
git tag -f release-admin <sha> && git push -f origin release-admin

The umbrella release tag ships all nine SPAs and the API in a single push, sidestepping the GitHub limit that suppresses CI when more than three tags are pushed at once. Unrecognised tag names fail the resolve step rather than silently deploying.

A web-<app>-r… or api-r… release marker is created after each successful production deployment and tagged --prerelease so it does not displace the native semver "Latest release" badge. These markers are the authoritative changelog — records of what shipped, not gates.

The API release also attaches a migrations.txt asset listing every D1 migration file present at that commit, so you can answer "did migration N ship?" from the Releases UI.

Release notes are auto-generated by GitHub from the merged pull request titles between the previous release tag and the current one. Conventional Commit prefixes (feat:, fix:, perf:, …) in PR titles group changes visually within the notes body.