Skip to content

fix(ios): own gateway setup deep-link delivery#100328

Merged
steipete merged 1 commit into
mainfrom
codex/ios-gateway-setup-owner
Jul 5, 2026
Merged

fix(ios): own gateway setup deep-link delivery#100328
steipete merged 1 commit into
mainfrom
codex/ios-gateway-setup-owner

Conversation

@steipete

@steipete steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

#100258 fixed the omitted TLS-port default from #99887, but repeated live gateway setup links exposed a separate delivery race: any mounted SettingsProTab could consume the app-global one-shot request, including a hidden embedded settings surface. The visible canonical Settings screen could then miss the link entirely.

Why This Change Was Made

  • Make RootTabs the single owner of gateway setup link consumption and routing.
  • Pass a typed, identity-bearing request only to the canonical phone/iPad Settings destination.
  • Clear the request only after that destination acknowledges staging it, preventing both hidden-view consumption and replay.
  • Centralize the TLS/plaintext default-port mapping and cover omitted/explicit ports in focused tests.
  • Remove the now-unused terminal web-content identity overload so the iOS dead-code gate remains green.

User Impact

Repeated openclaw://gateway/setup links now reliably populate the visible gateway settings on both phone and iPad. TLS links without an explicit port use 443, plaintext links use 18789, explicit ports remain unchanged, and an already-applied link is not replayed.

Evidence

  • swift test --package-path apps/shared/OpenClawKit --filter DeepLinksSecurityTests — 21/21 passed.
  • node --import tsx scripts/native-app-i18n.ts check — 2,493 entries, no changes required.
  • xcodebuild -project apps/ios/OpenClaw.xcodeproj -scheme OpenClaw -configuration Debug -destination 'id=E617A5DF-735E-442C-98EC-31C140517359' -derivedDataPath /tmp/pr99887-final-derived build — succeeded.
  • Live exact-app simulator proof: two consecutive unique TLS links applied through the real Connect flow on iPhone and iPad; the second host replaced the first, port was 443, and TLS remained enabled.
  • Fresh branch autoreview: no findings; patch correct, confidence 0.84.
  • git diff --check origin/main...HEAD — clean.

No visual layout or styling changed, so before/after screenshots would not add useful UI evidence.

Follow-up to #99887 and #100258.

@openclaw-barnacle openclaw-barnacle Bot added app: ios App: ios size: M maintainer Maintainer-authored PR labels Jul 5, 2026
@steipete

steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Land-ready proof for exact head 999ab7e210d902e9e3209685a2f35237fc9846a3:

  • Deep review: app navigation now owns the one-shot request and only the canonical phone/iPad Settings destination receives it. Identity-matched acknowledgement prevents replay and cannot clear a newer request.
  • Focused tests: swift test --package-path apps/shared/OpenClawKit --filter DeepLinksSecurityTests — 21/21 passed, including omitted TLS/plaintext ports and explicit-port preservation.
  • Native inventory: node --import tsx scripts/native-app-i18n.ts check — 2,493 entries, unchanged.
  • Build: iOS Debug simulator build succeeded for the exact app scheme.
  • Live phone proof: launched the exact app bundle, applied two consecutive unique TLS setup links through Connect, and verified the second host replaced the first with port 443 and TLS enabled.
  • Live iPad proof: repeated the same real app path with a separate pair of links and verified the same ownership/default behavior.
  • Autoreview: no findings; patch correct, confidence 0.84.
  • Hosted CI: https://github.com/openclaw/openclaw/actions/runs/28741215100 — successful.
  • iOS Periphery: https://github.com/openclaw/openclaw/actions/runs/28741215160 — successful.
  • Native review artifacts: validated with READY FOR /prepare-pr, zero findings.

No visual layout or styling changed; screenshots would not add useful before/after UI evidence.

@steipete
steipete merged commit 9ba14b8 into main Jul 5, 2026
96 of 98 checks passed
@steipete
steipete deleted the codex/ios-gateway-setup-owner branch July 5, 2026 13:01
@steipete

steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Merged via squash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: ios App: ios maintainer Maintainer-authored PR size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant