Skip to content

NexaFlow v3.81.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 09:15
· 612 commits to main since this release

Added

  • Package operations migrated to the semantic router (Phase B). Force-stop
    (APPLICATION_CLOSE_APP, SYSTEM_FORCE_STOP_APP), clear-data
    (SYSTEM_CLEAR_APP_DATA), and package enable/disable (SYSTEM_ENABLE_APP,
    SYSTEM_DISABLE_APP) now execute as typed semantic operations
    (PACKAGE_FORCE_STOP, PACKAGE_CLEAR_DATA, PACKAGE_SET_ENABLED_STATE)
    through the Shizuku and Root typed strategies — closed pm/am argv over
    the UserService AIDL, never workflow-supplied shell text.
  • Real package-state read-back. A new bounded ReadPackageEnabledState
    privileged operation (pm list packages -d, one deterministic output line)
    gives verification and UNKNOWN-reconciliation an actual post-condition read;
    the public-API strategy contributes PackageManager enabled-setting reads,
    so a Shizuku/Root-originated UNKNOWN can be settled through the Android API
    when available. Unexpected output shapes stay honest-null, never guesses.
  • Honest failure semantics. A package dispatch that may have landed before
    a transport drop surfaces as UNKNOWN and reconciles by reading state instead
    of blind re-execution; PACKAGE_CLEAR_DATA is registered with
    UNSUPPORTED compensation (data destruction is irreversible) and HIGH risk.
  • Legacy-config compatibility. The historical package/packageName
    config aliases resolve in the mapper; SYSTEM_ENABLE_APP/SYSTEM_DISABLE_APP
    carry their intent in the action type for pre-configVersion automations;
    unparseable explicit flags are rejected rather than defaulted.

Changed

  • OperationRegistry grows to 32 registered operations (28 state pairs plus
    the four package operations); parity gates extended with a package
    counterpart test, an honest-compensation assertion for clear-data, and the
    documented privileged-only exception for package writes.

Quality evidence

The tag workflow gates publication on the following automated checks. Consult the exact tag run and validation record for results; these checks do not establish physical-device coverage:

  • Android Lint (zero-tolerance: UnusedResources, MissingTranslation, ExtraTranslation,
    UnusedIds, CheckResult, HardcodedText, TypographyDashes) and Detekt static analysis.
  • Catalog parity gates: every TriggerType and ActionType enum value must exist
    exactly once in the builder picker (restricted entries are pinned explicitly).
  • Full unit-test suite, including Room migration, scheduler, lifecycle, and recovery
    regression coverage.
  • Release build with R8 full shrinking, APK signature verification (v2/v3 schemes and
    certificate-fingerprint match against the production keystore), 16 KB page-size
    alignment check, zipalign verification, bundletool AAB validation, and Gradle
    dependency verification (SHA-256 checksums for every artifact).
  • Tag hygiene: the tag must match the newest CHANGELOG.md entry, so the notes below
    are the actual, reviewed change record for this release.

Install

  • Download NexaFlow-<version>.apk from the assets below and install it.
  • Android updates require a compatible version code and the same signing certificate.
    Back up important tasks before upgrading.
  • Pre-release tags (alpha / beta / rc) are marked as pre-releases automatically.

Documentation