feat(ios): refine the chat experience#98953
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 2, 2026, 2:49 AM ET / 06:49 UTC. Summary PR surface: Other +190. Total +190 across 9 files. Reproducibility: not applicable. this is a visual/product feature PR, not a bug with failing steps. Source inspection plus the PR's before/after screenshots and live Gateway proof show the changed behavior being reviewed. Review metrics: none identified. Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this after iOS maintainers approve the visual direction and required CI finishes green; if the direction changes, narrow the visual treatment inside ChatProTab/OpenClawChatUI without touching chat transport or state. Do we have a high-confidence way to reproduce the issue? Not applicable: this is a visual/product feature PR, not a bug with failing steps. Source inspection plus the PR's before/after screenshots and live Gateway proof show the changed behavior being reviewed. Is this the best way to solve the issue? Yes, this is a maintainable implementation shape if maintainers accept the visual direction: it stays in the iOS ChatProTab/OpenClawChatUI presentation layer, preserves the clean/full split, and avoids changing chat transport or state. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 2913d3aee90c. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Other +190. Total +190 across 9 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
|
|
Land-ready at Completed proof:
The PR body contains matched before/after compact and expanded composer screenshots, light-appearance proof, and the live Gateway screenshot. No proof gaps remain. |
|
Merged via squash.
|
* feat(ios): refine the chat experience * feat(ios): refine the chat experience
Closes #98929
AI-assisted: Codex implemented, simulator-tested, live-tested, and autoreviewed this change.
What Problem This Solves
The native iOS chat felt visually heavy and mechanically assembled: duplicated introductory cards dominated the conversation, a large text status badge competed with the agent identity, assistant replies looked like generic containers, and the idle composer was taller and more fragmented than necessary.
Why This Change Was Made
This refines the chat around the conversation itself. Assistant content now uses open typography while user messages retain clear bubbles, transient assistant states keep the same geometry, the header reduces connection status to a compact semantic icon, and the attachment, text, voice, and send controls form one adaptive Liquid Glass surface on iOS 26 with the existing material fallback on older systems.
The composer starts at 44 points, grows through four lines as the user types, and preserves true 44-point hit regions for attachment, voice, and send. Empty, loading, error, and unavailable states are mutually coherent so introductory content no longer appears over operational feedback.
User Impact
Chat is quieter, faster to scan, and more consistent with modern iOS. The default composer no longer consumes unnecessary vertical space, long drafts expand naturally, assistant streaming no longer snaps between visual treatments, and every compact control remains comfortably tappable and accessible.
Evidence
Full chat hierarchy
Adaptive composer
Light appearance
Live Gateway round trip
The app was paired to an isolated local Gateway through the user setup-code path, sent a per-run unique marker through a deterministic OpenAI Responses endpoint, rendered the provider-echoed marker, then relaunched with the paired credentials and opened Control Overview.
Validated on iPhone 17 Pro, iOS 26.0 Simulator:
swift test --package-path apps/shared/OpenClawKit --filter ChatDynamicTypeSourceGuardTestsxcodebuild test-without-building -project apps/ios/OpenClaw.xcodeproj -scheme OpenClaw -destination 'platform=iOS Simulator,id=287E61C4-E15A-4794-A8DF-3E6AC37AAF97' -only-testing:OpenClawUITests/OpenClawSnapshotUITests/testChatComposerStartsCompactAndGrowsWithDraftxcodebuild test-without-building ... -only-testing:OpenClawUITests/OpenClawSnapshotUITests/testChatPresentationInLightAppearancexcodebuild test-without-building ... -only-testing:OpenClawUITests/OpenClawSnapshotUITests/testLiveGatewayChatRoundTripAndControlOverviewpnpm native:i18n:checkconfig/swiftformatgit diff --checkThe compact composer UI test additionally asserts that attachment, Talk, and Send each expose at least a 44 by 44 point hittable region. Local
pnpm check:changedcould not start because the installed Crabbox is 0.15.0 while Blacksmith currently requires 0.22.0; GitHub CI remains the broad changed-surface gate.