Skip to content

fix(ios): focus missing gateway credentials#98189

Merged
steipete merged 2 commits into
openclaw:mainfrom
Solvely-Colin:codex/ios-onboarding-p2-flow
Jul 13, 2026
Merged

fix(ios): focus missing gateway credentials#98189
steipete merged 2 commits into
openclaw:mainfrom
Solvely-Colin:codex/ios-onboarding-p2-flow

Conversation

@Solvely-Colin

@Solvely-Colin Solvely-Colin commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

iOS onboarding previously treated a missing gateway password like a generic credential rejection. Users could land on the authentication step without the app selecting the credential field that actually needs attention.

Why This Change Was Made

The original onboarding proposal was rewritten on current main, which already contains the newer QR, setup-code, LAN/Tailscale discovery, and multi-gateway flows. The focused replacement preserves the useful auth-recovery work: it classifies missing tokens and passwords separately, keeps generic unauthorized failures distinct, and selects the matching credential field only on the first transition into authentication so later status updates do not steal focus.

The rewrite stays inside the iOS onboarding owner boundary and keeps the existing localized UI copy. Colin remains credited as co-author.

User Impact

When a gateway reports a missing token or password, onboarding opens the authentication step with the corresponding field selected. Missing-credential status remains accurate; only actual unauthorized states use rejection wording.

Evidence

  • Testbox tbx_01kxcphq1a8mfdr65fa2mnmzyf: pnpm check:changed apps lane passed on the final dirty tree.
  • pnpm native:i18n:check equivalent: 4,200 entries, 21 locale artifacts, no inventory drift.
  • SwiftFormat lint and git diff --check: passed.
  • Fresh autoreview loop: two findings fixed; final review clean with no actionable findings.
  • Hosted iOS build and Swift tests: required on the rewritten exact head before merge.

Copilot AI review requested due to automatic review settings June 30, 2026 14:32
@openclaw-barnacle openclaw-barnacle Bot added app: ios App: ios size: XL maintainer Maintainer-authored PR labels Jun 30, 2026
@clawsweeper

clawsweeper Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Codex review: stale review; fresh review needed.

Summary
The latest durable ClawSweeper review was for head b17a074a99c63b53eab8dffea81ec99d19523172, but the PR head is now a69e91cbba26bddc6be5b7160c8ff57d7f1976f2. Its old verdict and PR readiness labels are no longer current.

Next step
Run or wait for a fresh ClawSweeper review on the current PR head.

Review history (3 earlier review cycles)
  • reviewed 2026-06-30T16:15:19.809Z sha 6711d25 :: needs changes before merge. :: [P2] Remove unused Tailscale TLS parameter
  • reviewed 2026-07-13T03:58:22.049Z sha 04ce9bf :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-13T05:08:51.157Z sha 5d1dc0a :: needs real behavior proof before merge. :: none

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates iOS onboarding to make gateway connection paths clearer (QR/setup code vs LAN discovery vs Tailscale/remote vs manual), while tightening security around when plaintext tailnet CGNAT (100.64/10) connections are allowed and improving auth recovery messaging.

Changes:

  • Replaces the initial onboarding step with a connection-path chooser and adds a dedicated Tailscale entry path (MagicDNS/Serve and raw 100.x handling gated by tailnet presence).
  • Persists a allowTailscalePlaintext flag through last-connection storage and threads it through manual connect + autoconnect decision logic.
  • Improves gateway auth issue detection/copy (token missing vs password missing vs generic unauthorized) and expands relevant test coverage.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
apps/shared/OpenClawKit/Tests/OpenClawKitTests/DeepLinksSecurityTests.swift Minor test hardening by using #require for URL construction.
apps/ios/Tests/SwiftUIRenderSmokeTests.swift Adds render smoke coverage for the new onboarding connection-path UI.
apps/ios/Tests/GatewaySettingsStoreTests.swift Adds/updates tests for allowTailscalePlaintext persistence and legacy migration defaults.
apps/ios/Tests/GatewayConnectionSecurityTests.swift Extends TLS/plaintext enforcement tests for tailnet CGNAT gating and removes unnecessary async markers.
apps/ios/Tests/GatewayConnectionIssueTests.swift Adds detection tests for password-missing gateway auth states.
apps/ios/Tests/GatewayConnectionControllerTests.swift Updates tests for new last-connection shape and uses #require for URLs.
apps/ios/Sources/Onboarding/OnboardingWizardView.swift Implements new onboarding entry screen, Tailscale connect/probe flow, and improved auth recovery messaging.
apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift Introduces OnboardingConnectionPathStep UI with discovery/QR/setup/manual path selection.
apps/ios/Sources/Onboarding/OnboardingStateStore.swift Updates the user-facing title for the remote/Tailscale connection mode.
apps/ios/Sources/Gateway/GatewaySettingsStore.swift Extends last-connection storage to include allowTailscalePlaintext and improves diagnostic logging formatting.
apps/ios/Sources/Gateway/GatewayConnectionIssue.swift Adds passwordMissing issue type and updates detection logic for structured/unstructured errors.
apps/ios/Sources/Gateway/GatewayConnectionController.swift Threads allowTailscalePlaintext through manual connect, last-known connect, and autoconnect TLS enforcement logic.

Comment thread apps/ios/Sources/Gateway/GatewayConnectionController.swift Outdated
Comment thread apps/ios/Sources/Onboarding/OnboardingWizardView.swift Outdated
Comment thread apps/ios/Sources/Gateway/GatewayConnectionIssue.swift Outdated
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 30, 2026
@Solvely-Colin

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: 🎥 video Contributor real behavior proof includes video or recording evidence. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Jun 30, 2026
@Solvely-Colin

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 30, 2026
@clawsweeper clawsweeper Bot removed proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. proof: 🎥 video Contributor real behavior proof includes video or recording evidence. labels Jul 8, 2026
@steipete steipete self-assigned this Jul 13, 2026
@steipete
steipete force-pushed the codex/ios-onboarding-p2-flow branch from 24585f0 to 04ce9bf Compare July 13, 2026 03:12
@steipete steipete changed the title feat(ios): improve onboarding gateway connection flow fix(ios): focus missing gateway credentials Jul 13, 2026
@clawsweeper clawsweeper Bot added proof: 🎥 video Contributor real behavior proof includes video or recording evidence. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jul 13, 2026
@openclaw-barnacle openclaw-barnacle Bot added the app: macos App: macos label Jul 13, 2026
@clawsweeper clawsweeper Bot removed the proof: 🎥 video Contributor real behavior proof includes video or recording evidence. label Jul 13, 2026
@steipete
steipete force-pushed the codex/ios-onboarding-p2-flow branch from 5d1dc0a to b17a074 Compare July 13, 2026 05:14
@clawsweeper

clawsweeper Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper status: review started.

I am starting a fresh review of this pull request: fix(ios): focus missing gateway credentials This is item 1/1 in the current shard. Shard 0/1.

This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking.

Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted.

@steipete
steipete force-pushed the codex/ios-onboarding-p2-flow branch from b17a074 to a69e91c Compare July 13, 2026 05:50
@clawsweeper clawsweeper Bot removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jul 13, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a69e91cbba

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

.font(OpenClawType.footnote)
.foregroundStyle(.secondary)
} else if self.issue.needsAuthCredentials {
Text(verbatim: self.connectMessage ?? self.statusLine)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep credential guidance while auth issue is sticky

When the status-only path is used (no lastGatewayProblem) and a missing token/password has been detected, updateConnectionIssue deliberately keeps the auth issue sticky across later non-auth statuses, but it still copies every non-empty status into connectMessage afterward. Because this branch now renders that volatile message, reconnect churn can make the auth screen say things like “Connecting…” or “Offline” instead of telling the user which credential is missing; render stable copy from issue or avoid overwriting the message while the sticky auth issue is retained.

Useful? React with 👍 / 👎.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jul 13, 2026
@steipete

Copy link
Copy Markdown
Contributor

Land-ready proof for a69e91cbba26bddc6be5b7160c8ff57d7f1976f2:

  • Rewrote the stale onboarding branch on current main, preserving contributor credit. Missing token/password states now focus the matching credential field only on the first auth transition; repeated status updates no longer steal focus.
  • Added focused GatewayConnectionIssueTests; native i18n sync reports 4,200 entries with no drift.
  • Testbox changed-surface gate passed: tbx_01kxcphq1a8mfdr65fa2mnmzyf.
  • Fresh structured autoreview completed clean with no accepted/actionable findings.
  • Exact-head hosted CI release gate passed on attempt 3: https://github.com/openclaw/openclaw/actions/runs/29227342174
  • Repo-native OPENCLAW_TESTBOX=1 scripts/pr prepare-run 98189 passed and accepted the exact-head fallback. The scheduled PR run remains capacity-queued; no proof gap remains for the prepared head.

Ready to merge.

@steipete
steipete merged commit 6242842 into openclaw:main Jul 13, 2026
452 of 464 checks passed
@steipete

Copy link
Copy Markdown
Contributor

Merged via squash.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 13, 2026
* fix(ios): focus missing gateway credentials

Co-authored-by: Colin <[email protected]>

* test(macos): let main actor polling suspend

---------

Co-authored-by: Peter Steinberger <[email protected]>
wm0018 pushed a commit to wm0018/openclaw that referenced this pull request Jul 14, 2026
* fix(ios): focus missing gateway credentials

Co-authored-by: Colin <[email protected]>

* test(macos): let main actor polling suspend

---------

Co-authored-by: Peter Steinberger <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: ios App: ios app: macos App: macos maintainer Maintainer-authored PR P2 Normal backlog priority with limited blast radius. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. size: S status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants