Check for mobile app updates on launch - #4958
Conversation
- Add tested OTA update and rollback handling - Trigger manual checks after five version-row taps
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
ApprovabilityVerdict: Needs human review This PR introduces new runtime behavior by adding automatic update checks on app launch and changes the manual update trigger from an explicit button to a hidden 5-tap gesture. These are new user-facing features that warrant human review despite the well-tested implementation. You can customize Macroscope's approvability policy. Learn more. |
Prevent launch and manual update checks from running the Expo update flow concurrently, and cover the shared guard with a regression test. Co-authored-by: codex <codex@users.noreply.github.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
Bugbot Autofix is ON, but a cloud agent failed to start.
Reviewed by Cursor Bugbot for commit 9166f7d. Configure here.
- Notify coalesced manual checks of state changes and failures - Add coverage for launch/manual check overlap
- Prevent reentrant checks from starting duplicate update requests - Add regression coverage for synchronous state callback re-entry
## What's Changed * docs: split user and maintainer docs, fix 100+ stale claims by @t3dotgg in pingdotgg/t3code#4807 * fix(web): server updates no longer look like warnings by @t3dotgg in pingdotgg/t3code#4992 * fix(connect): reboots no longer strand the relay link, 403s now say why by @t3dotgg in pingdotgg/t3code#4988 * Add project file picker (⌘P) and project content search (⇧⌘F) by @jakeleventhal in pingdotgg/t3code#4855 * Check for mobile app updates on launch by @juliusmarminge in pingdotgg/t3code#4958 **Full Changelog**: pingdotgg/t3code@v0.0.32-nightly.20260730.956...v0.0.32-nightly.20260730.957 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.32-nightly.20260730.957

What Changed
@legendapp/listto3.2.0and updated its patch accordingly.Why
Mobile builds now detect and apply available Expo updates at launch while preserving a deliberate manual fallback in Settings. The update logic is isolated and tested so rollback and failure cases behave consistently. The Legend List version change and iOS cleanup keep the mobile build aligned with the supported implementation.
UI Changes
The Settings version row no longer displays an update icon or embedded/OTA bundle label. Manual update checks remain available through five taps on the version row. No before/after screenshots or video are included.
Checklist
Note
Medium Risk
Automatic OTA check/download/reload on launch can restart the app for users when an update is available; logic is tested and coalesced but still affects startup behavior app-wide.
Overview
Centralizes Expo OTA update logic in
app-updatesand runs a single check when the home route mounts, with concurrent launch and manual callers sharing one in-flight operation (including rollback-to-embedded and failure reporting).Settings no longer shows the refresh spinner, embedded/OTA bundle label, or one-tap “check for updates.” Manual checks now require five taps on the version row; status text still appears briefly while checking or when up to date.
Adds unit tests for download/restart, rollback, coalescing, launch deduplication, failures, and the hidden tap gesture.
Reviewed by Cursor Bugbot for commit 9bdfdcb. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Check for app updates on launch and gate manual update checks behind five taps
checkForAppUpdateOnLaunchcalled once whenHomeRouteScreenmounts, replacing ad-hoc update logic with a single-shot launch check that runs at most once per JS runtime.runAppUpdateCheckwith coalescing: concurrent callers share a single in-flight check and receive state updates and failures via callbacks rather than starting duplicate operations.SettingsRouteScreennow require five taps on the version row viaregisterHiddenUpdateTap; the refresh icon is removed and failures surface as anAlert.checking → downloading → restartingwith rollback handling; the settings status label shows transient states or 'Up to date' then clears.Macroscope summarized 9bdfdcb.