Skip to content

v1.4.9 — Auto-update fixed: rate-limit retry, install permission, error surfacing

Choose a tag to compare

@doesthings doesthings released this 17 Jul 11:16

v1.4.9 — Auto-update fixed

The auto-update was completely broken. Here's what was wrong and how it's fixed:

Rate-limit retry bug (critical)
After a failed update check (no Wi-Fi, timeout, etc.), the Retry button was a silent no-op for 1 hour. The timestamp was saved before the fetch, so any failure consumed the rate-limit window. Now the timestamp is saved only on success — failed checks can be retried immediately. The Retry button also bypasses the rate-limit entirely.

Install permission (critical for RC2)
The RC2 controller blocks in-app APK installation unless "Install unknown apps" is granted per-app. FreeFCC was firing the installer intent without checking this permission, so the install silently failed. Now it:

  • Checks canRequestPackageInstalls() before installing
  • Opens the Settings page to grant the permission if missing
  • Falls back to telling the user to install via SD card + FileManager if Settings is unavailable (DJI hides it on some firmware)

Install reliability

  • Copies the APK to external storage before installing (the RC2's installer may not handle content:// URIs from app-private cache)
  • Checks that a package installer exists before launching (tells user to sideload �1_PackageInstaller if missing)
  • Grants URI permission to all resolved installer activities

Error surfacing
All errors were silently swallowed (catch (_: Exception) { null }). Now:

  • UpdateChecker logs the actual exception class + message
  • Install failures show on the Update page, not just in the log
  • Download failure message mentions Wi-Fi (the RC2 has no SIM)

Update-available banner
Added a banner on the main FCC page showing "Update available — vX.Y" so users don't have to manually check the Update tab.

Full changelog

v1.4.8...v1.4.9