Skip to content

ADFA-4971: don't misread a live restore as a killed install + confine… - #317

Merged
luisguzman-adfa merged 2 commits into
mainfrom
feat/ADFA-4961-ui-polish
Aug 1, 2026
Merged

ADFA-4971: don't misread a live restore as a killed install + confine…#317
luisguzman-adfa merged 2 commits into
mainfrom
feat/ADFA-4961-ui-polish

Conversation

@luisguzman-adfa

Copy link
Copy Markdown
Collaborator

… Back

A healthy restore reached Home and showed 'Installation interrupted — reinstall the app', and reopening landed on the boot gate instead of the restore screen. Both come from one miscalc: restore holds InstallGuard (correct), but LibraryActivity.recovering didn't exclude a live deep-op, so it read the restore as a killed install — firing the recovery AND (via the !recovering guard) blocking the backup/restore return-to-op routing.

  • LibraryActivity: recovering += !EnvironmentLock.ownerHeld(this). Kills the false 'reinstall' and unblocks the return-to-op routing, so a reopen/notification tap lands directly on the restore screen. A truly killed restore (process dead -> ownerHeld self-heals) still enters recovery.
  • BackupJobFragment: confine Back like the module index — first Back shows the soft hint, every Back after sends the app to the background (moveTaskToBack), never in-app navigation to a server-down Home.

… Back

A healthy restore reached Home and showed 'Installation interrupted — reinstall the app', and
reopening landed on the boot gate instead of the restore screen. Both come from one miscalc: restore
holds InstallGuard (correct), but LibraryActivity.recovering didn't exclude a live deep-op, so it read
the restore as a killed install — firing the recovery AND (via the !recovering guard) blocking the
backup/restore return-to-op routing.

- LibraryActivity: recovering += !EnvironmentLock.ownerHeld(this). Kills the false 'reinstall' and
  unblocks the return-to-op routing, so a reopen/notification tap lands directly on the restore screen.
  A truly killed restore (process dead -> ownerHeld self-heals) still enters recovery.
- BackupJobFragment: confine Back like the module index — first Back shows the soft hint, every Back
  after sends the app to the background (moveTaskToBack), never in-app navigation to a server-down Home.
The Back confinement was active during the pre-service restore copy+validate phase too, where there's
no DeepOpService notification yet (it starts at confirm) and nothing is destructive — so backgrounding
there left no way back. Gate the confinement on DeepOpProgressRepository running for this owner; before
that (copy/validate) a Back just cancels to the bifurcation.
@luisguzman-adfa
luisguzman-adfa merged commit a7d027a into main Aug 1, 2026
3 checks passed
@luisguzman-adfa
luisguzman-adfa deleted the feat/ADFA-4961-ui-polish branch August 1, 2026 01:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant