v1.4.9 — Auto-update fixed: rate-limit retry, install permission, error surfacing
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.