NexaFlow v3.82.0
Fixed
- Wear OS sync no longer stays on "Connecting". Two root causes closed:
the phone now declares a Data Layer capability (nexaflow.sync) and
re-pushes the automation snapshot whenever a wearable node connects
(previously a single fire-and-forgetDataItempush at process start was
silently lost if the watch was not reachable at that moment); and the watch
now actively requests a sync via the MessageClient pull-request protocol
when the app is opened or resumed, instead of waiting for a push that may
never come. Together the watch recovers in every order of events — watch
opens first, phone restarts while watch is away, or a transient GMS failure.
Added
- ALL/ANY trigger matching (community request). Automations with multiple
triggers previously always fired when any trigger fired (implicit OR).
A new per-automationtriggerMatchpolicy — exposed in the builder as a
selector above the trigger list — lets users require ALL conditions to
hold simultaneously: e.g. enable DND only when charging AND between
22:00–07:00. In ALL mode the engine verifies the remaining triggers' live
state (viaTriggerStateEvaluator) after the initiating trigger fires;
event-only trigger types (notification, screen-off, package install/uninstall,
boot, …) cannot be confirmed after the fact and therefore disqualify ALL
matching for that automation, falling back to documented OR semantics.
Serialized as an optional field — existing automations and backups keep
their historical ANY behavior unchanged.
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
TriggerTypeandActionTypeenum 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.mdentry, so the notes below
are the actual, reviewed change record for this release.
Install
- Download
NexaFlow-<version>.apkfrom 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.