Development and releases
Local checks
App CI runs Java unit tests, Android lint, debug build, API-17 compatibility, geometry tests, documentation parity and three strict Zensical builds. Integration CI runs pytest, Ruff, type checking, frontend tests, viewport snapshots, Hassfest, HACS validation and schema contract tests. Shared vectors protect the protocol contract.
Versioning
The app uses versionName 0.1.17; tag v0.1.17 produces versionCode 1017. Integration version 0.1.14 appears in pyproject.toml and custom_components/rustyhama/manifest.json. An app-only change needs no integration release while protocol and integration code remain compatibly unchanged. 1.0.0 marks the first jointly stable protocol.
Publishing
Forgejo is authoritative for both repositories. An app tag builds signed APK, F-Droid metadata, screenshots and all three documentation editions and publishes GitPages. An integration tag mirrors commit and tag to GitHub and creates rustyhama.zip for HACS. Tag and manifest.json must contain exactly the same integration version.
Documentation gate
docs/page-manifest.json defines every expected page. CI requires identical paths, heading structure, JSON field coverage and internal links in DE/EN/FR, explicit ASCII anchors and no unfinished markers. Assets exist once under docs/assets and are copied into all three Zensical outputs.