Skip to content

feat(ios): harvest shared chat capabilities — verbosity, trace toggle, live talk level, sessions entry#110254

Merged
steipete merged 2 commits into
mainfrom
claude/ios-chat-harvest
Jul 18, 2026
Merged

feat(ios): harvest shared chat capabilities — verbosity, trace toggle, live talk level, sessions entry#110254
steipete merged 2 commits into
mainfrom
claude/ios-chat-harvest

Conversation

@steipete

Copy link
Copy Markdown
Contributor

What Problem This Solves

Several capabilities that already exist in the shared chat package or on macOS never reached iOS: the session verbosity setting is silently dropped by the iOS transport, assistant reasoning/tool traces cannot be shown at all, the talk button gives no visual feedback while listening or speaking, and reaching session management requires leaving the chat tab.

Why This Change Was Made

iOS and macOS share OpenClawKit; this harvests recent shared-package work for iOS with small host wiring (audit-verified injection points):

  • IOSGatewayChatTransport now forwards verboseLevel in sessions.patch instead of dropping it (parity with the macOS transport fix in feat: align native macOS chat with the web chat capability set #109712).
  • The chat actions menu gains a persisted "Show reasoning & tool activity" toggle using the same openclaw.webchat.showAssistantTrace key and default-on semantics as macOS — iOS previously never passed the flag, so traces were permanently hidden.
  • The shared talk button now animates with the live level: microphone level while listening, playback level while speaking (both already observable on TalkModeManager).
  • A "Sessions…" menu item presents the existing sessions screen as a sheet directly from chat; selecting a session closes the sheet and focuses it.

User Impact

iPhone/iPad chat gains visible reasoning and tool activity on demand, a live talk waveform, /verbose settings that actually stick, and in-place session management — using code that already shipped for macOS and the shared package.

Evidence

  • Focused simulator tests: xcodebuild … test -only-testing:OpenClawTests/IOSGatewayChatTransportTests -only-testing:OpenClawTests/OpenClawTypographyTests — 23 tests, 0 failures (includes new verbosity set/clear coverage).
  • CI-equivalent build: IOS_DEST='generic/platform=iOS Simulator' pnpm ios:build — BUILD SUCCEEDED.
  • pnpm format:swift, pnpm lint:swift, pnpm native:i18n:check, Apple/Android catalog tests — clean; the two new strings translated across all 21 locales.
  • Structured review (uncommitted mode) — clean, no findings.
  • Not exercised: live paired-gateway session selection and talk audio on the offline simulator; wiring is unit-tested and mirrors the macOS-proven paths.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation app: ios App: ios size: M maintainer Maintainer-authored PR labels Jul 18, 2026
@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: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Jul 18, 2026
@clawsweeper

clawsweeper Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed July 17, 2026, 9:40 PM ET / July 18, 2026, 01:40 UTC.

Summary
The branch forwards iOS session verbosity updates and wires shared-chat trace visibility, live talk-level animation, and a chat-local Sessions sheet into the iOS app.

PR surface: Docs +1, Other +340. Total +341 across 28 files.

Reproducibility: not applicable. as a bug reproduction: this PR adds iOS capability wiring. The supplied unit test clearly covers the verbosity request shape, but no real iOS runtime artifact demonstrates the new UI flows.

Review metrics: 1 noteworthy metric.

  • Persisted UI preference: 1 added. The new @AppStorage trace preference changes iOS upgrade/default behavior and needs an explicit user-facing contract before merge.

Merge readiness
Overall: 🦪 silver shellfish
Proof: 🦪 silver shellfish
Patch quality: 🦐 gold shrimp
Result: blocked until real behavior proof from a real setup is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Attach redacted simulator or device evidence showing trace toggle persistence, live talk-level feedback, and session selection.
  • Confirm fresh-install and upgrade semantics for the default-on persisted trace preference.

Proof guidance:

  • [P1] Needs real behavior proof before merge: The PR reports tests, build, lint, and CI-equivalent checks, but does not provide inspectable after-fix iOS runtime evidence. Attach redacted simulator/device screenshots, a recording, terminal output, or runtime logs; redact private endpoints, IP addresses, keys, and personal data. Updating the PR body should trigger re-review, or a maintainer can request @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Risk before merge

  • [P1] Merging changes the iOS default from traces being unavailable to a persisted, default-on trace-display preference; maintainers should explicitly confirm that upgrade behavior and privacy/UX contract before landing.
  • [P1] The PR has no inspectable after-fix iOS runtime proof for the trace toggle, live talk animation, or in-chat session selection, so host wiring remains unverified outside tests and build output.

Maintainer options:

  1. Confirm parity and capture iOS proof (recommended)
    Before merge, confirm the default-on persisted trace contract and attach redacted simulator/device evidence for the changed iOS chat flows.
  2. Accept a different iOS default
    If iOS should not expose traces by default on upgrade, revise the preference default and document the deliberate platform difference.

Next step before merge

  • [P1] The remaining blocker is maintainer product judgment on the new persisted iOS preference, plus contributor-supplied real behavior proof; neither is a safe automated repair task.

Maintainer decision needed

  • Question: Should iOS adopt the same persisted, default-on assistant trace preference as macOS, changing its prior always-hidden trace behavior?
  • Rationale: The branch creates a new visible persisted setting and changes the default iOS presentation of assistant reasoning/tool activity; tests can verify wiring but cannot decide the intended user-facing preference contract.
  • Likely owner: steipete — They introduced the closely related merged native-chat parity implementation and can clarify the intended cross-client preference contract.
  • Options:
    • Adopt macOS parity with proof (recommended): Confirm the default-on local trace preference for iOS and require redacted fresh-install/upgrade runtime proof before merge.
    • Keep traces hidden by default: Retain the current hidden-by-default iOS behavior and expose trace visibility only through a separately approved opt-in design.

Security
Cleared: The reviewed change is native UI, transport parameter forwarding, tests, docs, and localization data; no concrete security or supply-chain regression is evident.

Review details

Best possible solution:

Confirm that iOS should adopt the macOS-style default-on local trace preference, then attach redacted simulator or device proof showing the trace toggle, talk-level animation, session selection, and persisted verbosity behavior.

Do we have a high-confidence way to reproduce the issue?

Not applicable as a bug reproduction: this PR adds iOS capability wiring. The supplied unit test clearly covers the verbosity request shape, but no real iOS runtime artifact demonstrates the new UI flows.

Is this the best way to solve the issue?

Unclear. Reusing the merged macOS/shared-chat pattern is a narrow implementation path, but a maintainer must confirm that its persisted default-on trace preference is the intended iOS product contract.

AGENTS.md: unclear because the file could not be read completely.

Codex review notes: model internal, reasoning high; reviewed against cf63c83bf68c.

Label changes

Label changes:

  • add rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦐 gold shrimp.
  • remove rating: 🧂 unranked krab: Current PR rating is rating: 🦪 silver shellfish, so this older rating label is no longer current.

Label justifications:

  • P2: This is a bounded, user-visible iOS chat improvement with no demonstrated emergency regression.
  • merge-risk: 🚨 compatibility: A new persisted default changes what existing iOS users see after upgrading, so preference and upgrade semantics need confirmation.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦐 gold shrimp.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The PR reports tests, build, lint, and CI-equivalent checks, but does not provide inspectable after-fix iOS runtime evidence. Attach redacted simulator/device screenshots, a recording, terminal output, or runtime logs; redact private endpoints, IP addresses, keys, and personal data. Updating the PR body should trigger re-review, or a maintainer can request @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed

PR surface:

Docs +1, Other +340. Total +341 across 28 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 0 0 0 0
Docs 1 1 0 +1
Config 0 0 0 0
Generated 0 0 0 0
Other 27 363 23 +340
Total 28 364 23 +341

What I checked:

  • Proposed transport fix: The patch adds verboseLevel to the iOS sessions.patch request, matching the existing gateway session-setting contract instead of silently omitting verbosity. (apps/ios/Sources/Chat/IOSGatewayChatTransport.swift:208, caa83875cdcd)
  • Persisted UI preference and host wiring: The patch introduces an @AppStorage trace preference with a default of true, passes it to the shared chat view, and adds a Sessions sheet entry from the iOS chat screen; this is a visible behavior and preference-contract change rather than a transport-only repair. (apps/ios/Sources/Design/ChatProTab.swift:11, caa83875cdcd)
  • Focused regression coverage: The proposed iOS transport test exercises both a non-null verbosity value and an explicit clear (NSNull) for sessions.patch. (apps/ios/Tests/IOSGatewayChatTransportTests.swift:147, caa83875cdcd)
  • Related merged feature history: The related merged native-chat parity work introduced the same verboseLevel forwarding and trace-toggle semantics for macOS/shared chat; this PR is an iOS host-surface follow-on, not a duplicate of the merged work. (apps/ios/Sources/Design/ChatProTab.swift:165, bf754b8a344a)
  • Proof remains mock-only: The PR body reports focused simulator tests, a build, lint, and catalog checks, but includes no inspectable simulator/device recording, screenshots, terminal output, logs, or linked runtime artifact for the changed iOS flows. (caa83875cdcd)

Likely related people:

  • steipete: The merged related PR established the macOS/shared-chat behavior that this iOS host wiring follows, including verbosity forwarding and trace visibility. (role: introduced related native-chat parity work; confidence: medium; commits: bf754b8a344a; files: apps/ios/Sources/Chat/IOSGatewayChatTransport.swift, apps/ios/Sources/Design/ChatProTab.swift)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.
Review history (2 earlier review cycles)
  • reviewed 2026-07-18T00:05:28.869Z sha 02b3082 :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-18T00:45:44.178Z sha 28c75c2 :: needs real behavior proof before merge. :: none

@steipete
steipete force-pushed the claude/ios-chat-harvest branch from 02b3082 to 28c75c2 Compare July 18, 2026 00:42
@steipete
steipete force-pushed the claude/ios-chat-harvest branch from 28c75c2 to caa8387 Compare July 18, 2026 01:36
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jul 18, 2026
@steipete
steipete merged commit 125934a into main Jul 18, 2026
97 of 99 checks passed
@steipete
steipete deleted the claude/ios-chat-harvest branch July 18, 2026 02:27
@steipete

Copy link
Copy Markdown
Contributor Author

Merged via squash.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 18, 2026
…, live talk level, sessions entry (openclaw#110254)

* feat(ios): wire verbosity, assistant trace toggle, live talk level, and chat-local sessions entry

* chore(i18n): translate new iOS chat strings and regenerate catalogs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: ios App: ios docs Improvements or additions to documentation maintainer Maintainer-authored PR merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P2 Normal backlog priority with limited blast radius. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. size: M 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.

1 participant