Skip to content

NexaFlow v3.78.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 00:04
· 618 commits to main since this release

Changed

  • Product-neutral codebase (vendor decoupling) — NexaFlow no longer names
    commercial ROMs, OEMs or devices anywhere in its code, resources, UI or docs.
    The engine reasons about capability tiers, never products:
    • RomFamily redefined from 27 vendor-named entries to 8 neutral
      capability tiers (CUSTOM_ROM_PRIVILEGED, CUSTOM_ROM_PRIVACY,
      OEM_SKIN_PRIVILEGED, OEM_SKIN, OEM_STOCK, STOCK_GOOGLE, AOSP,
      OTHER) describing what a build can do, not what it is called.
    • RomDetectionMatrix keeps every detection fingerprint (version
      properties, brand constraints, manufacturer fallbacks) as protocol evidence
      in one reviewed table, now mapping to the neutral tiers.
    • Files renamed: EvolutionXSettingsBridgeCustomSettingsBridge,
      EvolverCatalogRomSettingCatalog, EvoActionHandler
      RomSettingsActionHandler, EvolverSettingPickerDialog
      RomSettingPickerDialog; the vendor autostart deep-link resolver now picks
      the first vendor gate activity that actually resolves on the device.
    • Serialized action-type names neutralized with full backward
      compatibility: EVO_* actions are now ROM_*
      (ROM_CUSTOM_SETTING, ROM_QS_TILES, ROM_STATUS_BAR, ROM_LOCKSCREEN,
      ROM_NAVIGATION, ROM_THEME, ROM_AMBIENT_AOD, ROM_NOTIFICATIONS,
      ROM_BATCH) and SYSTEM_OPEN_GALAXY_STORE is now
      SYSTEM_OPEN_DEVICE_STORE. Legacy @JsonNames aliases keep every existing
      saved automation, backup and execution record readable.
    • All user-facing strings (11 languages) reworded neutrally — the custom
      ROM settings picker, the device-store action and the ROM-setting trigger no
      longer advertise any product; per-locale translations re-verified.
    • Real device setting keys are preserved as protocol surface (evo_*,
      sysui_*, lineage_* prefixes) so the picker and the ROM-setting monitor
      keep working against actual on-device settings providers.

Added

  • Vendor-neutrality CI gate (scripts/check_vendor_neutrality.py, wired
    into the lint job with a self-test): any commercial ROM/OEM/device name
    outside the protocol-allowlisted files fails CI, so vendor coupling cannot
    silently return.

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