-
released this
2026-07-28 14:09:10 +03:00 | 17 commits to main since this releasev2.3.0 raised the packaged lifecycle contract. Every installed app
validates a downloaded package against the contract it was built for,
so it rejected the release — and then deferred that release's APK
behind the module it had just rejected, on the rule that an app must
not run ahead of a module that never landed. That rule is right when
the package is suspect. Here the package was fine and the app was the
stale half, so the deferral removed the only in-app way out and left
sideloading the APK by hand as the sole path forward.A raised contract is now recognized as its own outcome before the
generic invalid-package verdict, and it alone keeps the APK from being
deferred: the app beside that module is exactly what can read it. The
rejected module is dropped rather than staged, so nothing installs a
package this build cannot drive, and the message says the app is being
updated and the module update should be repeated afterwards instead of
claiming the package failed an integrity check.Devices still on an app older than this cannot benefit from it — their
build already made this decision — and need the APK installed once by
hand.Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
Source code (ZIP)