Polish iOS onboarding and chat critique fixes#99243
Conversation
|
ClawSweeper review: did not complete due to Codex infrastructure failure. Reviewed July 4, 2026, 3:35 AM ET / 07:35 UTC. Summary PR surface: Tests +23, Other +2653. Total +2676 across 18 files. Reproducibility: unclear. The review failed before ClawSweeper could establish a reproduction path. Review metrics: none identified. Merge readiness This is a ClawSweeper/Codex infrastructure failure, not a PR readiness or patch-quality verdict. Risk before merge
Maintainer options:
Next step before merge
Review detailsBest possible solution: Retry the Codex review after fixing the execution failure. Do we have a high-confidence way to reproduce the issue? Unclear. The review failed before ClawSweeper could establish a reproduction path. Is this the best way to solve the issue? Unclear. Retry the review first so ClawSweeper can evaluate the actual issue and fix direction. AGENTS.md: unclear because the file could not be read completely. Codex review notes: model internal, reasoning high; reviewed against c4083e32f55c. Label changesLabel changes:
Evidence reviewedPR surface: Tests +23, Other +2653. Total +2676 across 18 files. View PR surface stats
What I checked:
Likely related people:
How this review workflow works
Review history (1 earlier review cycle)
|
|
@clawsweeper re-review Added the generated native i18n inventory in Local proof after the original UI patch: |
|
🦞🧹 I asked ClawSweeper to review this item again. |
620e1fe to
9968797
Compare
|
@clawsweeper re-review Rebased onto current Current CI proof for the previously failing check: |
|
🦞🧹 I asked ClawSweeper to review this item again. |
Simulator before / after proofBefore: Pincushion mobile critique baseline. The original branch was treated as an idea baseline, not landed verbatim: overlapping or misleading changes (collapsed Talk navigation, a generic More control that only accepted images, switch visuals for exclusive choices, hidden trust disclosure, and the nonexistent After — iPhone empty chat and sent starter response
After — pairing command copy confirmation and successful completion to Chat
After — iPad empty chat and sent starter response
Visual inspection: no clipping or duplicate rows; the copied state is readable without label overlap; connected success shows one endpoint and a real Go to Chat transition. Simulator clipboard independently returned exactly Automated proof: iPhone UI 2/2, iPad UI 1/1, focused OpenClawKit reconciliation tests 4/4, iOS unit tests 5/5. Exact commands and exact-head CI will follow after the repaired branch is pushed. |
9968797 to
307e754
Compare
Land-ready verificationExact reviewed head: The contributor branch was used as a baseline and rebuilt around current Exact-head local proof:
The final structured Codex autoreview found no actionable issues (0.99 confidence). A focused negative control temporarily disabled exact user identity matching and made the transformed/stale-history regression fail deterministically; restoring the fix returned the 105-test suite to green. Native review artifacts validate against this exact pushed head. Fresh exact-head screenshots were exported from the passing phone and iPad result bundles and visually inspected: changed surfaces have no clipping, overlap, broken localization, or dead controls. Before/after simulator screenshots and the accepted/rejected baseline split: #99243 (comment) Hosted exact-head CI: https://github.com/openclaw/openclaw/actions/runs/28699011663 Known proof boundary: the deterministic simulator transport proves app routing, rendering, localized payloads, copy state, send/reconciliation behavior, and phone/iPad layout; it does not claim a physical-camera or live external Gateway round trip. Physical QR scanning remains separately gated on #99572. |
307e754 to
e43ee98
Compare
5e87fa4 to
8efedf4
Compare
c3e2273 to
e972174
Compare
Co-authored-by: Josh <[email protected]>
e972174 to
050f187
Compare
|
Merged via squash.
|
* fix(ios): polish onboarding and empty chat Co-authored-by: Josh <[email protected]> * fix(ios): correlate pending chat echoes * fix(ios): ship localized chat starters * fix(ios): preserve chat echo identity * fix(ios): adopt late correlated chat echoes * fix(ios): reconcile reused chat runs * fix(ios): preserve transformed chat history --------- Co-authored-by: Peter Steinberger <[email protected]>






What Problem This Solves
The iOS critique baseline identified real friction in two user paths: a connected but empty chat gave no useful starting point, and onboarding exposed pairing/completion controls whose outcomes were unclear. It also exposed a chat refresh bug during simulator verification: an immediate send acknowledgement could render both the optimistic user row and its canonical history row.
This PR uses the original contribution as an idea baseline while preserving the stock SwiftUI navigation/settings work already landed in #99231.
Why This Change Was Made
The useful findings belong at three existing owners:
The original branch is not landed verbatim. The repair intentionally rejects overlapping or misleading changes: collapsing Talk into Chat, renaming an image-only attachment control to More, switch visuals for mutually exclusive choices, hiding the device-trust disclosure, and the nonexistent
openclaw pair tokencommand.User Impact
?agent emoji is treated as missing, allowing the existing initials fallback to render./pair qrhas a real copy action with readable and accessible copied feedback.Go to Chatactually selects Chat before dismissing onboarding.Evidence
Exact repaired head:
307e754e8794b3334491cb3b29fa774c0ba18d2fswift test --package-path apps/shared/OpenClawKit --filter 'does not duplicate user message when refresh returns canonical timestamp'— 1 passed.swift test --package-path apps/shared/OpenClawKit --filter 'optimistic user message'— 3 passed.xcodebuild ... -only-testing:OpenClawTests/GatewayStatusBuilderTests test— 5 passed.node --import tsx scripts/native-app-i18n.ts check—entries=2465 changed=false.git diff --check origin/main...HEAD— clean.Before / After
The simulator flows exercise the real app UI, navigation, clipboard, and chat state machinery with the repository's local review fixture. They do not claim a live external Gateway round trip.