Conversation
|
Codex review: needs maintainer review before merge. Summary Reproducibility: yes. by source inspection. Current Android main still rejects private-LAN cleartext manual/scanned endpoints and persists bootstrap handoff tokens only on loopback or TLS; I did not establish a live-device repro. Real behavior proof Next step before merge Security Review detailsBest possible solution: Rebase onto current main, preserve the mainline Swift/TypeScript behavior, land the remaining Android/docs/protocol alignment, and merge only after maintainer sign-off plus live mobile pairing proof. Do we have a high-confidence way to reproduce the issue? Yes, by source inspection. Current Android main still rejects private-LAN cleartext manual/scanned endpoints and persists bootstrap handoff tokens only on loopback or TLS; I did not establish a live-device repro. Is this the best way to solve the issue? Mostly yes, but not merge-ready. The narrow code direction matches the remaining Android/docs gap while preserving public and tailnet plaintext rejection, but the stale draft branch needs rebase, conflict review, and live pairing proof. Acceptance criteria:
What I checked:
Likely related people:
Remaining risk / open question:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 60171e863882. Re-review progress:
|
|
Closing this draft as superseded by #78807, which recreates the relevant mobile private LAN pairing/auth fixes from a fresh current main branch with a single verified signed commit and fresh verification notes. |
Summary
Fixes the private-LAN mobile pairing policy for #47887 without opening public or tailnet plaintext routes.
ws://setup/manual endpoints only for loopback, private LAN, link-local, ULA, and.localhosts across iOS setup/manual paths, Android setup/manual paths, the setup-code generator, and the device-pair pluginwss://or a tunnel/Serve/Funnel path.local, public, tailnet, and Android session persistence coverage for the changed clients and setup-code pathsVerification
pnpm test src/gateway/client.test.ts extensions/device-pair/index.test.ts src/pairing/setup-code.test.ts src/cli/qr-cli.test.tspassed locallyswift test --package-path apps/shared/OpenClawKit --filter 'DeepLinksSecurityTests|GatewayNodeSessionTests'passed locally at77b48f43b1with 26 testsfbd0c6afdb:cd apps/android && ./gradlew :app:testPlayDebugUnitTest --tests ai.openclaw.app.gateway.GatewaySessionInvokeTest.bootstrapHandoffPersistenceTrustsPrivateLanCleartextEndpoints --tests ai.openclaw.app.ui.GatewayConfigResolverTest --tests ai.openclaw.app.node.ConnectionManagerTestpnpm check:changedpassed in Testbox atfbd0c6afdbadb/emulator is available locally, connected iOS devices are unavailable, and the iOS simulator app target still fails before launch on unrelatedapps/ios/Sources/Settings/SettingsTab.swiftissues (SwiftFormat drift on the branch state; after a local formatting experiment, Swift type-check timeout at line 423). The formatting experiment was reverted and is not part of this PR.Fixes #47887.