Semantic versioning and releases
Araru Server, Web, Docs, Android, and Desktop start at 0.1.0 and follow Semantic Versioning independently. Matching initial numbers do not couple their lifecycles; compatibility is expressed through documented API contracts.
Version meaning
Section titled “Version meaning”Given MAJOR.MINOR.PATCH:
- PATCH fixes compatible behavior, security, documentation, or internal defects without adding a public capability.
- MINOR adds backward-compatible functionality.
- MAJOR introduces an incompatible public API, persisted-data, configuration, operational, or user-facing contract change.
Pre-release identifiers such as 3.0.0-beta.1 may be used for explicitly unstable releases. Published stable versions are never reused or overwritten.
Conventional Commits
Section titled “Conventional Commits”Release Please derives the next version and changelog from commits merged into main:
fix: prevent duplicate reading progress # patchfeat: add series filtering # minorfeat!: replace the authentication contract # majorA breaking change can also use a BREAKING CHANGE: footer. Common non-release types include docs, test, ci, build, refactor, style, and chore; they do not bump a version unless they contain a breaking-change marker.
Scopes are encouraged when useful, for example fix(reader): release PDF resources. A pull request may contain multiple commits, but every user-visible change should be represented by an accurate Conventional Commit.
Automated release flow
Section titled “Automated release flow”- Changes merge into
mainafter repository CI passes. - Release Please evaluates commits since the last release.
- It opens or updates a release pull request containing the next version and
CHANGELOG.mdentries. - Maintainers review and merge that release pull request.
- Release Please creates the
vMAJOR.MINOR.PATCHtag and GitHub Release. - Server and Web validate again and publish GHCR images for the exact version,
MAJOR.MINOR,MAJOR, andlatest. - Docs deploy remains independent: GitHub Pages publishes from
main, while semantic tags describe documentation releases.
Do not run npm version, edit the Release Please manifest manually, or create a competing version tag during the normal flow. Emergency manual releases must preserve alignment between package.json, lockfile, changelog, manifest, tag, and image.
Container versions
Section titled “Container versions”Production deployments should pin exact images such as ghcr.io/araruoss/araru-server:0.1.0 and ghcr.io/araruoss/araru-web:0.1.0. The mutable latest, major, and minor aliases are convenient discovery channels, not reproducible deployment locks.
Server and Web versions are configured separately because they have independent lifecycles. Before upgrading, read both release notes and confirm API/configuration compatibility, migrations, backup requirements, and rollback instructions.
Reserved repositories
Section titled “Reserved repositories”Android and Desktop currently contain no released application, but their release automation and 0.1.0 baseline are already prepared. They only advance when eligible commits reach their own main branches. The organization/profile repository and local runtime workspace are not distributable products; they reference independently versioned artifacts.
