Skip to content

NexaFlow v3.83.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 16:41
· 341 commits to main since this release

Fixed

  • Edited trigger removals now persist reliably. The automation builder waits for
    its ViewModel-owned save job to finish before leaving the navigation stack.
    Previously the screen could pop immediately after Save, clear the destination
    ViewModel, and cancel the in-flight Room write; removed triggers could then
    reappear when the task was opened again. A regression test now guards the
    post-save ordering. Fixes #7.

Changed

  • Trigger-match ALL mode is now a full evaluation policy, not just a
    multi-trigger gate.
    The dedicated TriggerMatchPolicy centralizes the
    ANY/ALL combination (truth table: ANY requires at least one verifiably
    satisfied condition; ALL requires every condition verifiably satisfied;
    an empty condition list can never start a run under either mode), and the
    execution engine routes every trigger evaluation through it. A task with a
    single condition in ALL mode is now live-evaluated like any other —
    the firing monitor only starts the evaluation and is never treated as
    proof that its condition still holds.
  • Honest typed condition results for state-read adapters. CHARGER and
    AIRPLANE_MODE are classified as definitive-false-when-false state reads
    (like TIME and DEVICE): a false answer is a verified current state and
    an unreadable state surfaces as Unknown, so the ALL gate and the manual
    run gate no longer over-report unverifiable conditions.

Added

  • Builder advisory for event-only triggers in ALL mode. When a task set
    to "all conditions" contains a momentary trigger that can never be
    re-verified from device state (notification, boot, NFC tag scan, SMS,
    webhook, sensor, plugin, geofence, ...), the builder shows an explicit
    warning that such a condition will keep the task from running in ALL mode,
    instead of failing silently at runtime. Localized across all 10 supported
    languages.

Tests

  • Complete ANY/ALL truth-table policy suite (17 cases) including 3-condition
    combinations, the empty-condition guard, and event-only advisory
    classification.
  • Cross-midnight time-range matrix: 22:00–07:00 is satisfied at 22:30,
    01:00 and 06:59 and unsatisfied at 12:00, 18:00 and 07:01, plus the
    charging-at-night acceptance scenario.
  • Engine gate tests for ALL mode with a single condition (both the skip and
    the run path) proving a firing monitor is not current truth.

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