fix(ios): back from settings details returns to the originating screen#98898
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed July 2, 2026, 3:06 AM ET / 07:06 UTC. Summary PR surface: Other +88. Total +88 across 7 files. Reproducibility: yes. by source inspection, not by a simulator run: current main routes the affected phone and hub shortcuts through Settings-tab selection or path replacement. The PR adds a UI test, but its back-button selector needs repair before it can serve as reliable proof. Review metrics: 1 noteworthy metric.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Keep the local-stack navigation fix, repair the UI-test back-button selector, then add redacted iPhone simulator or device proof for Gateway, Voice, and Notifications Back flows. Do we have a high-confidence way to reproduce the issue? Yes by source inspection, not by a simulator run: current main routes the affected phone and hub shortcuts through Settings-tab selection or path replacement. The PR adds a UI test, but its back-button selector needs repair before it can serve as reliable proof. Is this the best way to solve the issue? No as a mergeable PR yet: the local NavigationStack direction is the right owner-boundary fix, but the test selector and missing real iOS proof must be resolved before merge. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against be5906e19dd7. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Other +88. Total +88 across 7 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
85a9451 to
61a93c6
Compare
|
@openclaw-mantis visual task: verify on iPhone that Back from Gateway, Voice, and Notifications returns to the originating Chat, Talk, Control, or Approvals screen. |
f4faafe to
d350799
Compare
OpenClaw QA ArtifactsSummaryPR #98898 iOS before/after proof
Gateway from Chat
Back from Gateway
Files
Evidence
|
Land-ready maintainer verificationExact head: Maintainer repair completed before landing:
Before / after
Verification
Known proof gaps: none. |
Detail views reachable from multiple places (gateway, voice, notifications settings) previously opened by switching to the canonical Settings tab, so Back landed on the Settings root instead of the screen the user came from. Phone tabs now push SettingsRoute details on their own NavigationStack via PhoneTabSettingsHost, the Control hub pushes the gateway detail onto its own stack, and the Approvals->Notifications shortcut appends instead of replacing the path (phone and iPad). Global flows (deep links, onboarding, problem banner, notification dialog) still jump to the canonical Settings tab.
3f10827 to
32c6f14
Compare
|
Merged via squash.
|
openclaw#98898) * fix(ios): back from settings details returns to the originating screen Detail views reachable from multiple places (gateway, voice, notifications settings) previously opened by switching to the canonical Settings tab, so Back landed on the Settings root instead of the screen the user came from. Phone tabs now push SettingsRoute details on their own NavigationStack via PhoneTabSettingsHost, the Control hub pushes the gateway detail onto its own stack, and the Approvals->Notifications shortcut appends instead of replacing the path (phone and iPad). Global flows (deep links, onboarding, problem banner, notification dialog) still jump to the canonical Settings tab. * chore(i18n): sync native app i18n inventory line references * test(ios): prove settings back navigation * test(ios): prove settings back navigation --------- Co-authored-by: Peter Steinberger <[email protected]>
openclaw#98898) * fix(ios): back from settings details returns to the originating screen Detail views reachable from multiple places (gateway, voice, notifications settings) previously opened by switching to the canonical Settings tab, so Back landed on the Settings root instead of the screen the user came from. Phone tabs now push SettingsRoute details on their own NavigationStack via PhoneTabSettingsHost, the Control hub pushes the gateway detail onto its own stack, and the Approvals->Notifications shortcut appends instead of replacing the path (phone and iPad). Global flows (deep links, onboarding, problem banner, notification dialog) still jump to the canonical Settings tab. * chore(i18n): sync native app i18n inventory line references * test(ios): prove settings back navigation * test(ios): prove settings back navigation --------- Co-authored-by: Peter Steinberger <[email protected]>




What Problem This Solves
Fixes an issue where users opening a settings detail view from another screen would be returned to the wrong place when pressing Back. For example, tapping the connection status pill on the Chat tab opens the Gateway detail, but Back landed on the Settings tab root instead of returning to Chat. The same canonical-back behavior affected every gateway entrance (Talk, Agent, all Control hub screens, Docs), the voice-settings entrances on the Talk tab, and the Approvals screen's "Open Notifications" shortcut (which reset Back to the Settings root on both iPhone and iPad).
Why This Change Was Made
On the iPhone, settings detail entrances previously navigated by switching the whole app to the Settings tab with the route pre-pushed, so the back stack always unwound inside Settings. Each phone tab (Chat, Talk, Agent) now owns a
NavigationStack(PhoneTabSettingsHost) that pushesSettingsRoutedetails locally, and the Control hub pushes the gateway detail onto its own stack (openGatewayDetail), so Back pops to the exact screen the user came from — including nested cases like Control > Usage > Gateway. Cross-route settings shortcuts now append to the path instead of replacing it. Deliberately unchanged: global flows (deep links, onboarding auto-open, the gateway problem banner, the exec-approval notification dialog) still jump to the canonical Settings tab, and the iPad sidebar keeps its selection model (no Back button is involved there).User Impact
Pressing Back from the Gateway, Voice, or Notifications settings details now returns users to the screen they navigated from — Chat stays Chat, Talk stays Talk, and Control hub screens keep their place — instead of dumping them on the Settings tab. Tab-bar behavior, iPad layout, and deep-link/onboarding flows are unchanged.
Evidence
IOS_DEST="generic/platform=iOS Simulator" pnpm ios:build→** BUILD SUCCEEDED **.apps/ios/Sources(allopenSettings/openChat/openSessions/gatewayAction/navigateToRouteclosures,NavigationLink/navigationDestinationregistrations, and path mutations); the four multi-entrance detail views (gateway, voice, notifications, sessions) are the complete set — sessions already pushed locally and is untouched.RootTabsSourceGuardTestspin the new wiring: gateway is never opened as a root-tab handoff from the hub, cross-route shortcuts append rather than replace, and phone tab order is preserved; all string assertions were mechanically re-checked against the final sources.NavigationLinks inside pushedSettingsProTab(directRoute:)work unchanged, as they already did on the iPad sidebar stack).