The repository now contains the committed Gradle wrapper and pinned Grammalecte assets required for normal builds.
A public release should still be produced only from a clean checkout and after all release checks below succeed.
- CI is green on the target commit.
- The working tree is clean.
make checkpasses.tools/check-vendor.shpasses.- Regenerating the pinned Grammalecte assets produces no Git diff.
- Android instrumentation tests pass.
- The release APK or AAB is built from the exact tagged commit.
- The packaged application is inspected for unexpected permissions.
tools/check-apk-permissions.shconfirms that the final APK does not requestandroid.permission.INTERNET.- The application still satisfies the documented offline-only invariant.
- Real spelling and grammar correction are smoke-tested on a physical device.
SpellCheckerService,PROCESS_TEXTand IME setup are checked on the target release build.- Third-party notices and licenses are reviewed.
- The changelog contains all user-visible changes.
- Release metadata records the Android app version and embedded Grammalecte revision.
Release documentation should record at least:
- Gradle version;
- Android Gradle Plugin version;
- Kotlin version;
- JDK version;
- compile SDK;
- minimum Android API;
- Grammalecte version;
- pinned Grammalecte commit.
The Gradle wrapper should be used for release builds.
The wrapper version is deliberately maintained manually.
When upgrading Gradle:
- update
tools/bootstrap-gradle-wrapper.sh; - update its official distribution SHA-256;
- regenerate the wrapper;
- review
gradlew,gradlew.batandgradle/wrapper/*; - run the complete CI suite;
- commit the wrapper update as one reviewed change.
Dependabot does not automatically update the Gradle wrapper.
Use semantic versioning for the Android integration.
Grammalecte's version is tracked separately in tools/grammalecte.env.
Example:
- Android app
0.3.0; - embedded Grammalecte
2.3.0.
An upstream engine update does not automatically require an Android major version bump unless it changes the integration contract or user-visible compatibility policy.
A release tag should identify exactly the commit used to build the published APK or AAB.
Do not rebuild a published version from a later commit under the same version number.
The following project-level items are still expected before declaring a stable public release:
- application icon and final visual identity;
- polished first-run setup;
- compatibility matrix;
- broader Android-version testing;
- IME instrumentation coverage;
- broader end-to-end Android integration coverage for the IME and platform spell-checker paths;
- signed release pipeline;
- reproducibility review;
- final privacy and security review.