Skip to content

Refresh iOS pro UI and gateway flows#87367

Merged
ngutman merged 32 commits into
openclaw:mainfrom
Solvely-Colin:s/ios-pro-ui-refresh-latest
May 28, 2026
Merged

Refresh iOS pro UI and gateway flows#87367
ngutman merged 32 commits into
openclaw:mainfrom
Solvely-Colin:s/ios-pro-ui-refresh-latest

Conversation

@Solvely-Colin

@Solvely-Colin Solvely-Colin commented May 27, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Replaces the legacy iOS shell with the pro tab system for Command, Chat, Agents, and Settings.
  • Wires the pro surfaces to gateway-backed sessions, diagnostics, chat transport, and realtime talk state.
  • Reuses shared design surfaces across tabs and removes obsolete top-level iOS UI shell/status components.
  • Updates gateway/session/talk handling for iOS chat and voice, including scoped chat session aliases and safer gateway capability registration.

Refs #85731

Screenshots

Hosted as external visual-proof artifacts in GitHub Gist https://gist.github.com/Solvely-Colin/350e74c44ec7b7324e83c131e54a295e. These screenshots are not committed to the PR branch or any OpenClaw repo branch.

Tab Light Dark
Command Command tab light mode Command tab dark mode
Chat Chat tab light mode Chat tab dark mode
Agents Agents tab light mode Agents tab dark mode
Settings Settings tab light mode Settings tab dark mode

Local iOS Demo Proof

Local Mantis-style simulator proof is hosted on fork artifact commit f07a478eadc2. These files are not committed to this PR branch or any OpenClaw repo branch.

iOS pro UI connected gateway demo

Covered: gateway connected before recording, Settings/Command/Agents/Chat tabs, fresh chat session via /new, hello send with assistant reply, and realtime talk start/stop. Gateway proof logs showed chat.history, agent.wait, talk.session.create, session.ready, talk.session.appendAudio, and session.closed during the capture.

Verification

  • git diff --check
  • xcodebuildmcp build_sim -skipPackagePluginValidation
    • status: SUCCEEDED
  • xcodebuildmcp test_sim -skipPackagePluginValidation
    • 213 passed, 0 failed, 0 skipped
    • xcresult: /Users/solvely/Library/Developer/XcodeBuildMCP/workspaces/openclaw-41259b75abfe/result-bundles/test_sim_2026-05-27T17-36-31-133Z_pid12709_89151393.xcresult
  • node scripts/run-vitest.mjs src/gateway/server.sessions.create.test.ts src/gateway/talk-realtime-relay.test.ts
    • Test Files 4 passed (4)
    • Tests 56 passed (56)
  • AUTOREVIEW_AUTO_TESTS=0 .agents/skills/autoreview/scripts/autoreview --mode branch
    • autoreview clean: no accepted/actionable findings reported
    • out-of-scope findings were ignored by autoreview because they are outside this branch diff

Latest Proof Update

Patch head: ba8b490a70

  • Rebased the PR branch onto latest origin/main (316fd5b625) so the stale gpt-5.5 CI failure path uses current main's model-catalog/test behavior.
  • Fixed the ClawSweeper P2 protocol finding by verifying generated protocol output is clean on the rebased branch.
  • pnpm protocol:check passed after rebase; it regenerated dist/protocol.schema.json and shared Swift protocol output, then git diff --exit-code found no generated drift.
  • The exact CI failure from checks-node-agentic-agents now passes locally after the rebase: node scripts/run-vitest.mjs src/agents/embedded-agent-runner/model.test.ts -t "builds an openai fallback for gpt-5.5 when the live catalog cache is cold" --reporter=verbose (2 passed | 192 skipped).
  • git diff --check passed.
  • The chat keyboard layout fix remains in this head: focusing the iOS composer moves the composer with the keyboard-safe-area layout instead of letting the chat surface collapse or hide.
  • Previous proof still applies: SwiftFormat/SwiftLint passed on the iOS file list, xcodebuildmcp build_run_sim passed on iPhone 17 Pro simulator for OpenClaw Debug, focused-input simulator smoke kept the composer visible, and local autoreview reported no accepted/actionable findings.

Real Behavior Proof

Behavior addressed: iOS pro UI connects through the gateway for chat, voice, session/status surfaces, and settings diagnostics.

Real environment tested: Colin's iPhone installed with the iOS app, paired to OpenClaw gateway 2026.5.26, plus iPhone 17 Pro simulator visual/build/test pass.

Exact steps or command run after this patch: installed app on phone, sent a chat message, started/stopped voice, checked gateway logs, ran simulator build/test, ran focused gateway tests, captured light/dark screenshots for each tab.

Evidence after fix: external light/dark screenshots are embedded above; gateway runtime proof is copied below.

2026-05-27T12:02:49.605-04:00 ⇄ res ✓ agent.wait 5318ms conn=5454b819…7841 id=BA2125EC…C9A5
2026-05-27T12:02:49.705-04:00 ⇄ res ✓ chat.history 75ms conn=5454b819…7841 id=91A1067B…DB58
2026-05-27T12:02:49.706-04:00 ⇄ res ✓ chat.history 76ms conn=5454b819…7841 id=0485AB49…6267
2026-05-27T12:02:53.553-04:00 ⇄ res ✓ talk.session.create 221ms conn=5454b819…7841 id=DA078AF6…02C4
2026-05-27T12:02:53.885-04:00 talk turn.started session=d0da2b5b-2080-4b2e-af53-b2286372372e provider=openai transport=gateway-relay final=false
2026-05-27T12:02:54.567-04:00 talk session.ready session=d0da2b5b-2080-4b2e-af53-b2286372372e provider=openai transport=gateway-relay final=false
2026-05-27T12:02:54.654-04:00 talk output.audio.done session=d0da2b5b-2080-4b2e-af53-b2286372372e provider=openai transport=gateway-relay final=true
2026-05-27T12:02:56.562-04:00 talk transcript.done session=d0da2b5b-2080-4b2e-af53-b2286372372e provider=openai transport=gateway-relay final=true
2026-05-27T12:02:57.411-04:00 talk output.text.done session=d0da2b5b-2080-4b2e-af53-b2286372372e provider=openai transport=gateway-relay final=true
2026-05-27T12:03:00.438-04:00 talk output.audio.done session=d0da2b5b-2080-4b2e-af53-b2286372372e provider=openai transport=gateway-relay final=true
2026-05-27T12:03:03.111-04:00 talk transcript.done session=d0da2b5b-2080-4b2e-af53-b2286372372e provider=openai transport=gateway-relay final=true
2026-05-27T12:03:03.210-04:00 talk session.closed session=d0da2b5b-2080-4b2e-af53-b2286372372e provider=openai transport=gateway-relay final=true

Observed result after fix: chat send completed through agent.wait, chat history refreshed, realtime talk session was created, produced transcript/text/audio events, and closed cleanly.

What was not tested: App Store/TestFlight distribution; proof is limited to local simulator validation and Colin's directly installed iPhone build.

@openclaw-barnacle openclaw-barnacle Bot added app: ios App: ios gateway Gateway runtime scripts Repository scripts proof: supplied External PR includes structured after-fix real behavior proof. size: XL labels May 27, 2026
@clawsweeper

clawsweeper Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed May 27, 2026, 6:46 PM ET / 22:46 UTC.

Summary
The PR replaces the legacy iOS shell with gateway-backed pro Command, Chat, Agent, and Settings tabs, adds shared chat/session/talk support, updates gateway session/talk handling, and adds focused iOS, Swift, protocol, and gateway tests.

Reproducibility: not applicable. as a feature PR rather than a bug report. The changed behavior is nevertheless demonstrated by contributor-supplied phone/simulator proof and gateway logs.

Review metrics: 2 noteworthy metrics.

  • Shared chat API surface: 2 methods added with default fallbacks. createSession and waitForRunCompletion affect every OpenClawChatTransport implementation even though the extension keeps existing conformers source-compatible.
  • Persisted iOS preference surface: 2 keys added. appearance.preference and talk.speakerphone.enabled add user-visible saved defaults whose upgrade behavior should be accepted before merge.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

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

Rank-up moves:

  • Get explicit maintainer acceptance for iOS upgrade/session behavior and ensure required checks are green or intentionally rerun on ba8b490.

Risk before merge

  • This replaces the shipped iOS root shell and startup/onboarding/settings paths, so existing users with saved gateway, appearance, talk, and onboarding state could experience different upgrade behavior even if fresh-install proof is good.
  • The shared chat transport additions and sessions.create parent-inheritance behavior are API/session-state changes; tests cover the intended path, but maintainers should explicitly accept the contract before merge.
  • The PR has strong local proof, but the live PR context still reports mergeStateStatus unstable, so the exact latest head should have required checks green or intentionally rerun before landing.

Maintainer options:

  1. Accept after upgrade review (recommended)
    Maintainers can land this once they explicitly accept the iOS upgrade behavior, shared chat API shape, and latest-head required check state.
  2. Request focused upgrade proof
    Ask for one more before/after proof pass around saved gateway connection, saved talk settings, and existing chat sessions if maintainers want higher upgrade confidence.
  3. Pause if the iOS direction is not approved
    If the pro shell is not the intended near-term iOS direction, pause or close this broad branch rather than merging only the mechanical gateway fixes from it.

Next step before merge
Human maintainer acceptance is the remaining gate because the branch changes iOS product direction, persisted settings/defaults, and session behavior rather than needing a narrow automated repair.

Security
Cleared: The diff touches local networking, microphone/speech permissions, gateway credential UI, and generated protocol code, but I found no concrete security or supply-chain defect in the inspected patch.

Review details

Best possible solution:

Land the PR only after maintainers accept the iOS product direction and upgrade/session contract, keep the focused regression coverage, and require latest-head CI or an explicit maintainer proof override before merge.

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

Not applicable as a feature PR rather than a bug report. The changed behavior is nevertheless demonstrated by contributor-supplied phone/simulator proof and gateway logs.

Is this the best way to solve the issue?

Yes, if maintainers accept the product direction: the branch is cohesive and has focused regression coverage for the risky chat/session/talk paths. It is not a narrow bug-fix path, so maintainer upgrade and UX acceptance are the right remaining gates.

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 77fe36bb98ea.

Label changes

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body supplies structured real behavior proof, gateway logs, screenshots, and a video artifact; the prepared contact sheet visibly shows the connected iOS pro UI, chat, /new, keyboard, and response flow after the patch.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (recording): The PR body supplies structured real behavior proof, gateway logs, screenshots, and a video artifact; the prepared contact sheet visibly shows the connected iOS pro UI, chat, /new, keyboard, and response flow after the patch.
  • remove rating: 🦐 gold shrimp: Current PR rating is rating: 🐚 platinum hermit, so this older rating label is no longer current.
  • remove status: ⏳ waiting on author: Current PR status label is status: 👀 ready for maintainer look.

Label justifications:

  • P2: The branch is a normal-priority but broad iOS/gateway improvement with proof and tests, not an emergency or narrow polish-only change.
  • merge-risk: 🚨 compatibility: The PR changes iOS startup/onboarding/settings behavior, persisted preferences/defaults, Info.plist networking permissions, and shared chat transport API shape.
  • merge-risk: 🚨 session-state: The PR changes chat session aliases, /new session creation fallback, sessions.create parent inheritance, and realtime talk relay state handling.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • feature: ✨ showcase: ClawSweeper spotlight: unusually compelling feature idea for maintainer attention. The idea is a substantial user-facing iOS step: one gateway-backed pro shell for command status, chat, agents, settings, and realtime talk.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (recording): The PR body supplies structured real behavior proof, gateway logs, screenshots, and a video artifact; the prepared contact sheet visibly shows the connected iOS pro UI, chat, /new, keyboard, and response flow after the patch.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body supplies structured real behavior proof, gateway logs, screenshots, and a video artifact; the prepared contact sheet visibly shows the connected iOS pro UI, chat, /new, keyboard, and response flow after the patch.
  • proof: 🎥 video: Contributor real behavior proof includes video or recording evidence. The PR body supplies structured real behavior proof, gateway logs, screenshots, and a video artifact; the prepared contact sheet visibly shows the connected iOS pro UI, chat, /new, keyboard, and response flow after the patch.
Evidence reviewed

What I checked:

  • Repository policy read: Read the full root AGENTS.md and scoped scripts/gateway/protocol/server-methods guides; their compatibility/session-state guidance applies because this PR changes iOS startup/settings, shared chat transport APIs, gateway sessions, and generated protocol output. (AGENTS.md:18, 77fe36bb98ea)
  • Current PR head available locally: The checked-out main is 77fe36b and the PR head ba8b490 exists locally with merge-base 316fd5b, so review could compare the branch against current main and the actual PR base lineage. (ba8b490a702b)
  • iOS root surface evidence: The PR switches the app entry to RootTabs, applies the appearance preference, wires scene phase into the gateway controller, and routes URL handling through the new root flow. (apps/ios/Sources/OpenClawApp.swift:619, ba8b490a702b)
  • Shared chat API evidence: OpenClawChatTransport adds createSession and waitForRunCompletion while providing default fallbacks, making the shared API additive but compatibility-sensitive for other chat transports. (apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatTransport.swift:12, ba8b490a702b)
  • Session-state evidence: sessions.create now inherits parent runtime/model/auth selection when creating a child session without an explicit model, which is useful for iOS /new but changes session-state behavior. (src/gateway/server-methods/sessions.ts:155, ba8b490a702b)
  • Realtime relay evidence: The realtime relay changes auto-response/interrupt flags, records transcripts, and suppresses likely assistant echo transcripts before scheduling forced agent consults. (src/gateway/talk-realtime-relay.ts:328, ba8b490a702b)

Likely related people:

  • @mbelinky: Mariano has extensive recent history across iOS, gateway, sessions, chat UI, protocol generation, and auto-reply surfaces that overlap this PR's main risk areas. (role: recent area contributor; confidence: high; commits: 7299c5695317, 0bcddb3d4f09, 9476dda9f617; files: apps/ios/Sources/RootTabs.swift, apps/ios/Sources/Model/NodeAppModel.swift, apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift)
  • 狼哥: The shallow current checkout blames the central iOS/shared/gateway files to b789e71, which introduced the current baseline being replaced or extended here. (role: current-main code introducer; confidence: medium; commits: b789e71e57d9; files: apps/ios/Sources/RootTabs.swift, apps/ios/Sources/Model/NodeAppModel.swift, apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.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.

@Solvely-Colin Solvely-Colin marked this pull request as ready for review May 27, 2026 17:48
Copilot AI review requested due to automatic review settings May 27, 2026 17:48

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

Note

Copilot was unable to run its full agentic suite in this review.

This PR expands realtime talk + session management behavior on the gateway, and introduces a substantial iOS “Pro” UI refresh with new chat/talk transport capabilities.

Changes:

  • Gateway: record realtime transcripts to suppress assistant echo loops; optionally force agent consult routing on final transcripts.
  • Gateway sessions: inherit runtime model/provider selection from parent sessions when model is omitted.
  • iOS: add new Pro UI components/tabs, chat transport enhancements (sessions.create + agent.wait), appearance preferences, and updated UX scaffolding.

Reviewed changes

Copilot reviewed 85 out of 86 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/gateway/talk-realtime-relay.ts Records final transcripts and filters assistant-echo user transcripts; toggles provider auto-response based on consult routing.
src/gateway/talk-realtime-relay.test.ts Updates relay tests and adds coverage for echo transcript suppression and consult routing behavior.
src/gateway/server.sessions.create.test.ts Adds test coverage for inheriting parent runtime model selection when model is omitted.
src/gateway/server-methods/sessions.ts Implements runtime selection inheritance from parent sessions during sessions.create.
scripts/protocol-gen-swift.ts Avoids generating unreachable default switch case for fully-covered Bool discriminators.
apps/swabble/Package.resolved Updates Swift package lockfile with new dependencies.
apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift Removes unreachable decoding default for Bool discriminated union (generated output).
apps/shared/OpenClawKit/Sources/OpenClawKit/ShareToAgentSettings.swift Changes default share instruction fallback behavior (now empty by default).
apps/shared/OpenClawKit/Sources/OpenClawKit/ShareToAgentDeepLink.swift Avoids emitting “Shared from iOS” / instruction lines when there is no real content.
apps/shared/OpenClawKit/Sources/OpenClawKit/Resources/CanvasScaffold/scaffold.html Updates scaffold theme colors/visual styling.
apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayNodeSession.swift Adds send(method:paramsJSON:) helper for fire-and-forget gateway messages.
apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayChannel.swift Increases connect timeout for slow/remote gateways.
apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel+SessionKeys.swift Adds session-key matching/alias handling utilities.
apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel+Attachments.swift Adds image attachment loading + preprocessing helpers.
apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift Adds “clean” composer chrome, assistant identity/avatars, foreground resume handling, and new empty/loading states.
apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatTransport.swift Extends transport with createSession + waitForRunCompletion (with default implementations).
apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatTheme.swift Adds adaptive iOS palette + new background/panel styling.
apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatModels.swift Adds create-session response model.
apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift Adds assistant avatar view + incorporates avatar chrome into message/typing/streaming bubbles.
apps/ios/project.yml Updates iOS entitlements/usage strings (local networking, mic/speech descriptions).
apps/ios/Tests/TalkModeConfigParsingTests.swift Updates parsing expectations and adds new tests for relay defaults + redacted config parsing.
apps/ios/Tests/SwiftUIRenderSmokeTests.swift Updates smoke tests to new Settings tab and adds light/dark render coverage.
apps/ios/Tests/ShareToAgentDeepLinkTests.swift Resets instruction defaults in tests to avoid cross-test leakage.
apps/ios/Tests/SettingsNetworkingHelpersTests.swift Adds tests for Settings diagnostics issue calculation.
apps/ios/Tests/RootCanvasPresentationTests.swift Renames suite + switches to RootTabs presentation logic.
apps/ios/Tests/OnboardingStateStoreTests.swift Updates onboarding tests for new hasSavedGatewayConnection parameter.
apps/ios/Tests/NodeAppModelInvokeTests.swift Refactors tests for new screen mounting + robustness improvements.
apps/ios/Tests/IOSGatewayChatTransportTests.swift Adds tests for new transport helpers (agent.wait, params encoding).
apps/ios/Tests/GatewayConnectionControllerTests.swift Adds tests for location availability + manual endpoint fallback + config equality.
apps/ios/SwiftSources.input.xcfilelist Updates source list for new Pro UI, onboarding steps, talk relay session, etc.
apps/ios/Sources/Voice/VoiceTab.swift Removes old Voice tab UI.
apps/ios/Sources/Voice/TalkModeManager+Permissions.swift Adds async permission request + message helpers for mic/speech.
apps/ios/Sources/Voice/TalkModeGatewayConfig.swift Adjusts realtime transport/mode mapping (webrtc -> relay on iOS; managed-room -> native).
apps/ios/Sources/Voice/TalkGatewayPermissionState.swift Adds talk permission state modeling.
apps/ios/Sources/Voice/TalkDefaults.swift Adds speakerphone preference helpers.
apps/ios/Sources/Voice/RealtimeTalkRelaySession.swift Adds RMS/barge-in handling + richer logging for realtime relay audio/transcript events.
apps/ios/Sources/Status/VoiceWakeToast.swift Switches toast styling to new Pro glass surface.
apps/ios/Sources/Status/StatusPill.swift Removes old connection status pill.
apps/ios/Sources/Status/StatusGlassCard.swift Removes old glass card modifier.
apps/ios/Sources/Status/StatusActivityBuilder.swift Removes pill activity builder tied to removed status pill.
apps/ios/Sources/Status/GatewayStatusBuilder.swift Introduces GatewayDisplayState and updates status derivation.
apps/ios/Sources/Screen/ScreenTab.swift Removes old Screen tab UI.
apps/ios/Sources/RootView.swift Uses RootTabs and applies preferred color scheme.
apps/ios/Sources/OpenClawApp.swift Uses RootTabs, applies appearance preference to windows, and refines URL routing.
apps/ios/Sources/Onboarding/OnboardingWizardView.swift Extracts intro/welcome steps into new reusable step views.
apps/ios/Sources/Onboarding/OnboardingWizardSteps.swift Adds extracted onboarding step views.
apps/ios/Sources/Onboarding/OnboardingStateStore.swift Adds explicit hasSavedGatewayConnection control for onboarding presentation logic.
apps/ios/Sources/Model/NodeAppModel.swift Adds focused chat session key + safer reconnect logic + speakerphone toggle + operator status normalization.
apps/ios/Sources/Info.plist Adds local networking ATS setting and updates permission strings ordering.
apps/ios/Sources/Gateway/GatewayProblemView.swift Updates banner styling to new material/shadow rules.
apps/ios/Sources/Gateway/GatewayConnectionController.swift Adds manual endpoint fallback and async permission computation; refactors autoconnect logic.
apps/ios/Sources/Gateway/GatewayConnectConfig.swift Adds semantic equality (hasSameConnectionInputs) for reconnect decisions.
apps/ios/Sources/Gateway/ExecApprovalPromptDialog.swift Updates approval prompt card to use new Pro panel surface.
apps/ios/Sources/Design/SettingsProTabSupport.swift Adds settings routes/layout/diagnostics and networking helpers for Pro settings.
apps/ios/Sources/Design/SettingsProTab.swift Introduces new Pro Settings tab UI with gateway + talk + diagnostics controls.
apps/ios/Sources/Design/OpenClawProScreens.swift Adds placeholder to organize Pro UI screens by tab.
apps/ios/Sources/Design/OpenClawProComponents.swift Adds shared Pro UI components (backgrounds, cards, glass surfaces, metrics, etc.).
apps/ios/Sources/Design/OpenClawBrand.swift Adds appearance preference + brand palette + helper chrome styles.
apps/ios/Sources/Design/CommandCenterSupport.swift Adds shared Command Center UI components/rows.
apps/ios/Sources/Design/ChatProTab.swift Adds Pro Chat tab that hosts OpenClawChatUI with custom chrome/talk control.
apps/ios/Sources/Design/AgentProTab.swift Adds Pro Agent tab shell with overview state and navigation routes.
apps/ios/Sources/Design/AgentProTab+Usage.swift Adds Agent usage UI cards and daily list rendering.
apps/ios/Sources/Design/AgentProTab+GatewayData.swift Adds gateway data fetch, normalization, and overview refresh logic.
apps/ios/Sources/Design/AgentProTab+DetailComponents.swift Adds shared detail metric/empty-state helpers for Agent tab.
apps/ios/Sources/Design/AgentProTab+Destinations.swift Adds Agent tab destinations (skills/nodes/cron/usage/dreaming).
apps/ios/Sources/Design/AgentProTab+Cron.swift Adds cron status + job list UI and cron actions.
apps/ios/Sources/Design/AgentProNodesDestination.swift Adds node presence list + node detail views.
apps/ios/Sources/Design/AgentProModels.swift Adds lightweight decodable models for overview/skills/cron/dreaming/usage.
apps/ios/Sources/Chat/IOSGatewayChatTransport.swift Adds sessions.create + agent.wait, centralizes param encoding, and adds diagnostics logging.
apps/ios/Sources/Chat/ChatSheet.swift Removes old chat sheet view.
apps/ios/Sources/Assets.xcassets/OpenClawIcon.imageset/Contents.json Adds image set metadata for OpenClaw icon.
Comments suppressed due to low confidence (5)

apps/ios/Sources/Voice/TalkModeManager+Permissions.swift:1

  • permissionMessage(kind:status:) returns “permission denied” even for the .granted case, which is logically incorrect and will misreport microphone permission state. Update the .granted branch to return a “granted/allowed” message (or remove it if callers only use this for failures).
    apps/ios/Sources/Voice/TalkModeManager+Permissions.swift:1
  • permissionMessage(kind:status:) returns “permission denied” for .authorized, which will mislead users and any UI/state that depends on this message. Change the .authorized branch to a “granted/allowed” message (or avoid returning a failure message for non-failure states).
    src/gateway/server-methods/sessions.ts:1
  • inheritedSelection is spread after patched.entry, so inherited parent values will override values explicitly set by the current sessions.create call whenever p.model is omitted (e.g., a request sets providerOverride but leaves model empty and gets the parent’s provider instead). To make inheritance behave as “fill missing fields”, spread inheritedSelection before patched.entry or apply per-field inheritance only when the patched entry doesn’t already define that field.
    src/gateway/talk-realtime-relay.ts:1
  • relay.transcript grows monotonically, but echo detection only needs a short lookback window (RELAY_TRANSCRIPT_ECHO_LOOKBACK_MS). This can lead to unnecessary memory usage for long-lived sessions. Consider pruning transcript entries older than the lookback window (or enforcing a max entry count) immediately after recording so the array stays bounded.
    apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift:1
  • The Equatable conformance ignores assistantAvatarTint. If the tint changes (theme/agent change), SwiftUI may skip updating this view because it still compares equal. Include assistantAvatarTint in the equality check (and any other appearance-affecting fields) to ensure updates re-render correctly.

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

Copy link
Copy Markdown

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: a09a51933b

ℹ️ 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".

Comment thread apps/ios/Sources/Model/NodeAppModel.swift Outdated
Comment thread apps/ios/Sources/Voice/RealtimeTalkRelaySession.swift Outdated
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels May 27, 2026
@clawsweeper

clawsweeper Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

✨ Hatched: 🌱 uncommon Gilded Branchling

Hatch command

Comment @clawsweeper hatch when this PR is hatchable.

Hatchability rules:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.

Rarity: 🌱 uncommon.
Trait: guards the happy path.
Image traits: location diff observatory; accessory review stamp; palette plum, gold, and soft gray; mood mischievous; pose balancing on a branch marker; shell glossy opal shell; lighting cool dashboard glow; background tiny artifact crates.
Share on X: post this hatch
Copy: My PR egg hatched a 🌱 uncommon Gilded Branchling in ClawSweeper.

What is this egg doing here?
  • Eggs appear after the PR passes real-behavior proof. It is here for vibes, not verdicts: it does not change labels, ratings, merge decisions, or automation.
  • The shell reacts to review momentum: open follow-up work warms it up, re-review makes it wobble, and a clean final review lets it hatch.
  • Hatchability usually comes from sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness. A merged PR is already final, so merge makes the egg hatchable independently.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 27, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels May 27, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 27, 2026
@Solvely-Colin

Copy link
Copy Markdown
Contributor Author

Addressed the current review blockers in b2808e6f92:

  • Preserved the persisted talk.enabled preference on NodeAppModel initialization and added a regression test for launch-time preservation.
  • Reset realtime relay output timing when output playback finishes, with a regression test covering the next response start timestamp.
  • Restored apps/swabble/Package.resolved to the manifest-backed dependency graph from origin/main.

Validation after the patch:

  • git diff --check
  • xcodebuildmcp test_sim -skipPackagePluginValidation — 214 passed, 0 failed, 0 skipped
  • node scripts/run-vitest.mjs src/gateway/server.sessions.create.test.ts src/gateway/talk-realtime-relay.test.ts — 4 files / 56 tests passed

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 27, 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.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels May 27, 2026
@Solvely-Colin

Copy link
Copy Markdown
Contributor Author

Addressed the updated ClawSweeper /new finding in d01a22e2de.

What changed:

  • Kept the iOS fresh-session behavior when transport.createSession is supported.
  • Added a shared fallback so /new calls the existing reset path when a shared transport still returns the default sessions.create not supported by this transport error.
  • Added regression coverage proving /new does not surface the unsupported create-session error and instead resets/reloads history for legacy/shared transports.

Validation after the patch:

  • git diff --check
  • swift test --filter ChatViewModelTests from apps/shared/OpenClawKit — 52 tests passed
  • swift test --filter ChatViewModelTests/newTriggerFallsBackToResetWhenCreateSessionIsUnsupported from apps/shared/OpenClawKit — targeted regression passed

Note: a full swift test in apps/shared/OpenClawKit still hits the existing unrelated TalkConfigContractTests.selectionFixtures failure. The focused shared chat suite is green and covers the changed path.

@clawsweeper re-review

@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 27, 2026
@clawsweeper

clawsweeper Bot commented May 27, 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.

Re-review progress:

@Solvely-Colin Solvely-Colin force-pushed the s/ios-pro-ui-refresh-latest branch from 77e43aa to ba8b490 Compare May 27, 2026 22:38
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 27, 2026
@Solvely-Colin

Copy link
Copy Markdown
Contributor Author

Updated for ba8b490a70.

What changed:

  • Rebased the PR branch onto latest origin/main (316fd5b625) to pick up the current model-catalog/test behavior from main.
  • Re-validated the ClawSweeper P2 protocol finding on the rebased branch.
  • No additional iOS product behavior changes beyond the already-pushed keyboard layout fix.

Validation after the rebase:

  • pnpm protocol:check — passed; generated protocol output is clean and git diff --exit-code found no drift.
  • node scripts/run-vitest.mjs src/agents/embedded-agent-runner/model.test.ts -t "builds an openai fallback for gpt-5.5 when the live catalog cache is cold" --reporter=verbose — passed, 2 passed | 192 skipped.
  • git diff --check — passed.

The prior checks-node-agentic-agents failure was not a local-machine issue and not from this iOS patch. It was a stale-base CI/code-path failure around openai/gpt-5.5; after rebasing onto latest main, the exact failing test passes locally.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 27, 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.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed 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. labels May 27, 2026
@ngutman ngutman merged commit f6e51ff into openclaw:main May 28, 2026
135 of 143 checks passed
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 29, 2026
Summary:
- Replace the legacy iOS shell with Pro Command, Chat, Agents, and Settings tabs.
- Wire iOS chat/session/settings/diagnostics and realtime Talk flows through gateway-backed APIs.
- Add gateway/session and shared chat coverage for the new iOS flow.

Verification:
- git diff --check
- node scripts/run-vitest.mjs src/gateway/server.sessions.create.test.ts src/gateway/talk-realtime-relay.test.ts
- swift test --filter ChatViewModelTests (apps/shared/OpenClawKit)
- xcodebuild build for Nimrod's iPhone succeeded; install succeeded; launch was blocked because the phone was locked

Known follow-up:
- Preserve traceLevel in sessions.create parent runtime inheritance and keep the changelog credit in the follow-up patch.
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request May 31, 2026
…026.5.28) (#759)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/openclaw/openclaw](https://openclaw.ai) ([source](https://github.com/openclaw/openclaw)) | patch | `2026.5.27` → `2026.5.28` |

---

### Release Notes

<details>
<summary>openclaw/openclaw (ghcr.io/openclaw/openclaw)</summary>

### [`v2026.5.28`](https://github.com/openclaw/openclaw/blob/HEAD/CHANGELOG.md#2026528)

[Compare Source](openclaw/openclaw@v2026.5.27...v2026.5.28)

##### Highlights

- Agent and Codex runtime recovery is steadier: subagents keep cwd/workspace separation, hook context stays prompt-local, session locks release on timeout abort while live OpenClaw locks survive cleanup, stale restart continuations are avoided, and Codex app-server/helper failures no longer tear down shared runtime state. ([#&#8203;87218](openclaw/openclaw#87218), [#&#8203;86875](openclaw/openclaw#86875), [#&#8203;87409](openclaw/openclaw#87409), [#&#8203;87399](openclaw/openclaw#87399), [#&#8203;87375](openclaw/openclaw#87375), [#&#8203;88129](openclaw/openclaw#88129))
- Channel delivery and session identity got safer across outbound plugin hooks, Matrix room ids, iMessage reactions/approvals, Slack final replies, Discord recovered tool warnings, runtime-config message actions, WhatsApp profile auth roots, Telegram polling, and Microsoft Teams service URL trust checks. ([#&#8203;73706](openclaw/openclaw#73706), [#&#8203;75670](openclaw/openclaw#75670), [#&#8203;87366](openclaw/openclaw#87366), [#&#8203;87451](openclaw/openclaw#87451), [#&#8203;87334](openclaw/openclaw#87334), [#&#8203;84535](openclaw/openclaw#84535), [#&#8203;82492](openclaw/openclaw#82492), [#&#8203;83304](openclaw/openclaw#83304), [#&#8203;87160](openclaw/openclaw#87160))
- Mobile and chat surfaces got a broader refresh: the iOS Pro UI, hosted push relay default, realtime Talk tab playback, Gateway chat transport, onboarding, Talk permissions, WebChat reconnect delivery, and session picker behavior now preserve more state across reconnects and empty searches. ([#&#8203;87367](openclaw/openclaw#87367), [#&#8203;87531](openclaw/openclaw#87531), [#&#8203;87682](openclaw/openclaw#87682), [#&#8203;88096](openclaw/openclaw#88096), [#&#8203;88105](openclaw/openclaw#88105)) Thanks [@&#8203;ngutman](https://github.com/ngutman) and [@&#8203;BunsDev](https://github.com/BunsDev).
- Browser, channel, and automation inputs are stricter: Browser tool timeouts, viewport/tab indices, Gateway ports, cron retry handling, Discord component ids, schema array refs, Telegram callback pages, and channel progress callbacks now reject malformed values earlier and preserve the intended delivery context. ([#&#8203;82887](openclaw/openclaw#82887))
- Provider, media, and document coverage expands with Claude Opus 4.8, Fal Krea image schemas, NVIDIA featured models, MiniMax streaming music responses, encrypted PDF extraction, voice model catalogs, GitHub Copilot agent runtime support, and a Codex Supervisor plugin path for delegated Codex workflows. ([#&#8203;87845](openclaw/openclaw#87845), [#&#8203;87890](openclaw/openclaw#87890), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764), [#&#8203;87751](openclaw/openclaw#87751), [#&#8203;87794](openclaw/openclaw#87794))
- CLI, auth, doctor, and provider paths fail faster and recover more clearly: malformed numeric/version options are rejected, workspace dotenv provider credentials are ignored, heartbeat defaults, OAuth/token lifetimes, and local service startup requests are bounded, agent auth health labels are clearer, legacy `api_key` auth profiles migrate to canonical form, and restart guidance is actionable. ([#&#8203;87398](openclaw/openclaw#87398), [#&#8203;86281](openclaw/openclaw#86281), [#&#8203;87361](openclaw/openclaw#87361), [#&#8203;88133](openclaw/openclaw#88133), [#&#8203;83655](openclaw/openclaw#83655), [#&#8203;87559](openclaw/openclaw#87559), [#&#8203;88088](openclaw/openclaw#88088), [#&#8203;85924](openclaw/openclaw#85924)) Thanks [@&#8203;vincentkoc](https://github.com/vincentkoc) and [@&#8203;giodl73-repo](https://github.com/giodl73-repo).
- Plugin and Gateway hot paths do less repeated work while preserving cache correctness for install records, config JSON parsing, tool search catalogs, session stores, manifest model rows, auto-enabled plugin config, browser tokens, viewer assets, and release-split external plugin packages. ([#&#8203;86699](openclaw/openclaw#86699))
- Release, QA, and E2E validation now bound more log, artifact, harness, and cross-OS waits so failing lanes produce proof instead of hanging or false-greening.

##### Changes

- Status: show active subagent details in status output.
- Diffs: split the default language pack and expand default Diffs language coverage while keeping the host floor aligned. ([#&#8203;87370](openclaw/openclaw#87370), [#&#8203;87372](openclaw/openclaw#87372)) Thanks [@&#8203;RomneyDa](https://github.com/RomneyDa).
- ClawHub: add plugin display names plus skill verification and trust surfaces. ([#&#8203;87354](openclaw/openclaw#87354), [#&#8203;86699](openclaw/openclaw#86699)) Thanks [@&#8203;thewilloftheshadow](https://github.com/thewilloftheshadow) and [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- iOS: refresh the dev app with Pro Command, Chat, Agents, Settings, hosted push relay defaults, and realtime Talk playback wired to gateway sessions, diagnostics, chat, and realtime Talk. ([#&#8203;87367](openclaw/openclaw#87367), [#&#8203;88096](openclaw/openclaw#88096), [#&#8203;88105](openclaw/openclaw#88105)) Thanks [@&#8203;Solvely-Colin](https://github.com/Solvely-Colin) and [@&#8203;ngutman](https://github.com/ngutman).
- Docs: clarify Codex computer-use setup, paste-token stdin auth setup, macOS gateway sleep troubleshooting, native Codex hook relay recovery, container model auth, install deployment cards, device-token admin gating, CLI setup flow compatibility, Notte cloud browser CDP setup, and backport targets. ([#&#8203;87313](openclaw/openclaw#87313), [#&#8203;63050](openclaw/openclaw#63050), [#&#8203;87685](openclaw/openclaw#87685)) Thanks [@&#8203;bdjben](https://github.com/bdjben), [@&#8203;liaoandi](https://github.com/liaoandi), and [@&#8203;thewilloftheshadow](https://github.com/thewilloftheshadow).
- PDF/tools: use ClawPDF for PDF extraction, support encrypted PDF extraction, and surface MCP structured content in agent tool results. ([#&#8203;87670](openclaw/openclaw#87670), [#&#8203;87751](openclaw/openclaw#87751))
- Providers: add Claude Opus 4.8 support, Fal Krea image model schemas, NVIDIA featured model catalogs, MiniMax streaming music responses, and provider-backed voice model catalogs. ([#&#8203;87845](openclaw/openclaw#87845), [#&#8203;87890](openclaw/openclaw#87890), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764), [#&#8203;87794](openclaw/openclaw#87794)) Thanks [@&#8203;eleqtrizit](https://github.com/eleqtrizit) and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Codex/GitHub: add the GitHub Copilot agent runtime and the Codex Supervisor plugin package.
- Plugins: externalize GitHub Copilot and Tokenjuice as official install-on-demand plugins with npm and ClawHub publish metadata.
- Workboard: add agent coordination tools for tracking and handing off active agent work.
- Discord: show commentary in progress drafts so live Discord runs expose useful in-progress context. ([#&#8203;85200](openclaw/openclaw#85200))
- Plugin SDK: add a reply payload sending hook for plugins that need to deliver channel-owned replies and flatten package types for SDK declarations. ([#&#8203;82823](openclaw/openclaw#82823), [#&#8203;87165](openclaw/openclaw#87165)) Thanks [@&#8203;piersonr](https://github.com/piersonr) and [@&#8203;RomneyDa](https://github.com/RomneyDa).
- Policy: add policy comparison, ingress-channel conformance, and sandbox-posture conformance checks. ([#&#8203;85572](openclaw/openclaw#85572), [#&#8203;85744](openclaw/openclaw#85744), [#&#8203;86768](openclaw/openclaw#86768))

##### Fixes

- Agents: fall back to local config pruning when the optional `agents delete` Gateway probe cannot authenticate, so offline installs can still delete agents without removing shared workspaces.
- Tighten phone-control mutation authorization \[AI]. ([#&#8203;87150](openclaw/openclaw#87150)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987).
- Clarify directive persistence authorization policy \[AI]. ([#&#8203;86369](openclaw/openclaw#86369)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987).
- Agents/Codex: keep spawned agent cwd/workspace state separated, forward ACP spawn attachments, keep hook context prompt-local, release session locks on timeout abort and runtime teardown without deleting live OpenClaw-owned locks during cleanup, avoid session event queue self-wait, clean up exec abort listeners, stream assistant deltas incrementally, recover raw missing-thread compaction failures, preserve rotated compaction session identity, keep compaction-timeout snapshots continuable, preserve shared app-server state across startup or helper failures, keep native hook relay alive across restarts and prune stale bridge files, close native hook relay replacement races, keep Claude live tool progress visible for watchdog recovery, suppress abandoned requester completion handoff, route workspace memory through tools, resolve Codex runtime models first, report quarantined dynamic tools, format `skills` command output, bind node auto-review to prepared plans, retry Claude CLI transcript probes, and bound compaction/steering retries. ([#&#8203;87218](openclaw/openclaw#87218), [#&#8203;86875](openclaw/openclaw#86875), [#&#8203;86123](openclaw/openclaw#86123), [#&#8203;88129](openclaw/openclaw#88129), [#&#8203;87399](openclaw/openclaw#87399), [#&#8203;87375](openclaw/openclaw#87375), [#&#8203;72574](openclaw/openclaw#72574), [#&#8203;87383](openclaw/openclaw#87383), [#&#8203;87400](openclaw/openclaw#87400), [#&#8203;83022](openclaw/openclaw#83022), [#&#8203;87671](openclaw/openclaw#87671), [#&#8203;87738](openclaw/openclaw#87738), [#&#8203;87747](openclaw/openclaw#87747), [#&#8203;87706](openclaw/openclaw#87706), [#&#8203;87546](openclaw/openclaw#87546), [#&#8203;87541](openclaw/openclaw#87541), [#&#8203;81048](openclaw/openclaw#81048)) Thanks [@&#8203;mbelinky](https://github.com/mbelinky), [@&#8203;Alix-007](https://github.com/Alix-007), [@&#8203;luoyanglang](https://github.com/luoyanglang), [@&#8203;yetval](https://github.com/yetval), [@&#8203;sjf](https://github.com/sjf), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;benjamin1492](https://github.com/benjamin1492), [@&#8203;c19354837](https://github.com/c19354837), [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev), [@&#8203;pfrederiksen](https://github.com/pfrederiksen), and [@&#8203;dodge1218](https://github.com/dodge1218).
- Codex Supervisor: keep real-home app-server MCP session listing on the loaded state path, bound stored history scans, and close WebSocket probes cleanly.
- Channels: thread canonical session keys into outbound hooks, preserve Matrix room-id case, keep fallback tool warnings mention-inert, retain delivered Slack final replies during late cleanup, continue iMessage polling after denied reactions, suppress duplicate native exec approvals, resolve Gateway message actions against the active runtime config, preserve Telegram SecretRef prompt config and polling keepalives, preserve WhatsApp profile auth roots, QR display, document filenames, and plugin hook config, suppress Discord recovered tool warnings, preserve the Discord voice outbound helper, cap Discord/Signal/Zalo channel request and container timeouts, and block untrusted Teams service URLs while keeping TeamsSDK patterns aligned. ([#&#8203;73706](openclaw/openclaw#73706), [#&#8203;75670](openclaw/openclaw#75670), [#&#8203;87366](openclaw/openclaw#87366), [#&#8203;87451](openclaw/openclaw#87451), [#&#8203;87465](openclaw/openclaw#87465), [#&#8203;87334](openclaw/openclaw#87334), [#&#8203;84535](openclaw/openclaw#84535), [#&#8203;76262](openclaw/openclaw#76262), [#&#8203;83304](openclaw/openclaw#83304), [#&#8203;82492](openclaw/openclaw#82492), [#&#8203;87581](openclaw/openclaw#87581), [#&#8203;77114](openclaw/openclaw#77114), [#&#8203;86426](openclaw/openclaw#86426), [#&#8203;85529](openclaw/openclaw#85529), [#&#8203;87160](openclaw/openclaw#87160)) Thanks [@&#8203;zeroaltitude](https://github.com/zeroaltitude), [@&#8203;lukeboyett](https://github.com/lukeboyett), [@&#8203;jarvis-mns1](https://github.com/jarvis-mns1), [@&#8203;xiaotian](https://github.com/xiaotian), [@&#8203;funmerlin](https://github.com/funmerlin), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;eleqtrizit](https://github.com/eleqtrizit), [@&#8203;heyitsaamir](https://github.com/heyitsaamir), [@&#8203;amittell](https://github.com/amittell), [@&#8203;lidge-jun](https://github.com/lidge-jun), [@&#8203;liorb-mountapps](https://github.com/liorb-mountapps), [@&#8203;masatohoshino](https://github.com/masatohoshino), [@&#8203;bladin](https://github.com/bladin), and [@&#8203;giodl73-repo](https://github.com/giodl73-repo).
- CLI/auth/doctor/providers: reject malformed numeric/timeout/subcommand-version inputs, ignore workspace dotenv provider credentials, wait for respawn child shutdown, bound heartbeat defaults plus Codex, GitHub Copilot, OpenAI, Anthropic, Google, Feishu, LM Studio, MiniMax, Xiaomi TTS, and local-provider OAuth/token/model requests, harden Codex auth probes, label auth health by agent, preserve explicit agentRuntime pins during Codex model migration, warm provider auth off the main thread, honor Codex response timeouts, stop migrating current Claude Haiku 4.5 profiles to Sonnet, bound local service startup, resolve GPT-5.5 without cached catalog, migrate legacy memory auto-provider config, rewrite non-canonical `api_key` auth profiles, and make doctor restart follow-ups actionable. ([#&#8203;87398](openclaw/openclaw#87398), [#&#8203;86281](openclaw/openclaw#86281), [#&#8203;87361](openclaw/openclaw#87361), [#&#8203;88133](openclaw/openclaw#88133), [#&#8203;83655](openclaw/openclaw#83655), [#&#8203;87559](openclaw/openclaw#87559), [#&#8203;87719](openclaw/openclaw#87719), [#&#8203;88088](openclaw/openclaw#88088), [#&#8203;85924](openclaw/openclaw#85924), [#&#8203;84362](openclaw/openclaw#84362)) Thanks [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@&#8203;samzong](https://github.com/samzong), [@&#8203;giodl73-repo](https://github.com/giodl73-repo), [@&#8203;alkor2000](https://github.com/alkor2000), [@&#8203;mmaps](https://github.com/mmaps), [@&#8203;nxmxbbd](https://github.com/nxmxbbd), and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Gateway/security/session state: expire browser tokens after auth rotation, scope assistant idempotency dedupe, drain probe client closes, avoid stale restart continuation reuse, preserve retry-after fallbacks and stale rate-limit cooldown probes, bound webchat image and artifact transcript scans, include seconds in inbound metadata timestamps, clear completed session active runs, clear stale chat stream buffers, and evict current plugin-state namespaces at row caps. ([#&#8203;87810](openclaw/openclaw#87810), [#&#8203;87833](openclaw/openclaw#87833), [#&#8203;75089](openclaw/openclaw#75089)) Thanks [@&#8203;joshavant](https://github.com/joshavant) and [@&#8203;litang9](https://github.com/litang9).
- Config/parsing/network: reject partial numeric parsing, parse provider/Discord retry headers and dates strictly, honor IPv6 and bare IPv6 `no_proxy` entries, preserve empty plugin allowlists, canonicalize secret target array indexes, and reject malformed media content lengths, inspected TCP ports, marketplace content lengths, cron epochs, sandbox stat fields, unsafe duration values, empty config path segments, noncanonical schema array refs, unsafe Telegram callback pages, and invalid Teams attachment-fetch DNS targets. ([#&#8203;87883](openclaw/openclaw#87883)) Thanks [@&#8203;zhangguiping-xydt](https://github.com/zhangguiping-xydt).
- Browser/input hardening: reject invalid tab indexes, excessive viewport resizes, explicit zero CDP ports, malformed geolocation options, unsafe screenshot or permission-grant timeouts, loose response-body limits, invalid cookie expiries, and non-finite Browser tool delays/timeouts.
- Cron/automation: retry recurring jobs after transient model rate limits before waiting for the next scheduled slot, and preflight model fallbacks before skipping scheduled work. ([#&#8203;82887](openclaw/openclaw#82887)) Thanks [@&#8203;chen-zhang-cs-code](https://github.com/chen-zhang-cs-code).
- Auto-reply/directives: respect provider and relayed channel metadata during directive persistence so channel-originated decisions keep their intended context. ([#&#8203;87683](openclaw/openclaw#87683))
- WhatsApp: resolve the auth directory from the active profile so profile-scoped WhatsApp installs do not drift to the wrong credential root. ([#&#8203;82492](openclaw/openclaw#82492)) Thanks [@&#8203;lidge-jun](https://github.com/lidge-jun).
- Gateway/session state: clear completed session active runs, avoid cold-loading providers for MCP inventory, cache single-session child indexes, cap handshake timers, and bound preauth, auth-guard, media, transcript, readiness, and port options.
- Channels/replies: preserve channel-owned progress callbacks when verbose output is off, keep group-room progress suppression intact, prefer external session delivery context, escape Discord component id delimiters, force final TUI chat repaints, show Slack reasoning previews, and normalize Discord/Matrix/Mattermost channel numeric options. ([#&#8203;87476](openclaw/openclaw#87476), [#&#8203;87423](openclaw/openclaw#87423))
- Agents/tool args: harden smart-quoted argument repair for edit arrays and exact escaped arguments so model-produced tool calls recover without corrupting valid input. ([#&#8203;86611](openclaw/openclaw#86611)) Thanks [@&#8203;ferminquant](https://github.com/ferminquant).
- Providers/agents: preserve seeded Anthropic signatures, preserve signed thinking payloads, concatenate signature-delta chunks, preserve DeepSeek `reasoning_content` replay across tier suffixes, apply OpenRouter strict9 ids to Mistral routes, promote Ollama plain-text tool calls, load NVIDIA featured model catalogs, stream MiniMax music generation responses, and recover empty preflight compaction. ([#&#8203;87593](openclaw/openclaw#87593), [#&#8203;87493](openclaw/openclaw#87493), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764)) Thanks [@&#8203;Pluviobyte](https://github.com/Pluviobyte) and [@&#8203;eleqtrizit](https://github.com/eleqtrizit).
- Media/images: skip CLI image cache refs when resolving generated images, allow trusted generated HTML attachments, and bound generated video downloads so stale refs and slow providers fail cleanly. ([#&#8203;87523](openclaw/openclaw#87523), [#&#8203;87982](openclaw/openclaw#87982))
- File transfer: handle late tar stdin pipe errors after archive validation or unpacking has already settled.
- Performance: trust install-record caches between reloads, prefer native JSON parsing, reuse unchanged tool-search catalogs, reuse gateway session and plugin metadata paths, skip unchanged store serialization, patch single-entry session writes, add precomputed session patch writers, reduce store clone allocations, cache manifest model catalog rows and auto-enabled plugin config, avoid full session snapshots for entry reads, defer configured Slack full startup, prefer bundled plugin dist entries, and slim current metadata identity caches. ([#&#8203;87760](openclaw/openclaw#87760))
- Docker/release/QA: package runtime workspace templates, stream cross-OS served artifacts, preserve sparse Crabbox run artifacts, isolate npm plugin installs per package, reject incompatible package plugin API installs, drop the leftover root Sharp dependency from package manifests after the Rastermill migration, bound OpenClaw instance logs, plugin gauntlet relay logs, MCP channel buffers, kitchen-sink scans, agent-turn assertions, QA-Lab credential broker calls, QA Matrix substrate requests, and release scenario logs, and keep release/google live guards current. ([#&#8203;87647](openclaw/openclaw#87647), [#&#8203;87477](openclaw/openclaw#87477)) Thanks [@&#8203;rohitjavvadi](https://github.com/rohitjavvadi) and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Release/CI: bound manual git fetches, ClawHub verifier responses, ClawHub owner metadata, dependency-guard error bodies, Parallels limits, startup/test/memory budget parsing, and diffs viewer build warnings so release lanes fail with useful proof instead of hanging. ([#&#8203;87839](openclaw/openclaw#87839))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/759
SYU8384 pushed a commit to SYU8384/openclaw that referenced this pull request Jun 3, 2026
Summary:
- Replace the legacy iOS shell with Pro Command, Chat, Agents, and Settings tabs.
- Wire iOS chat/session/settings/diagnostics and realtime Talk flows through gateway-backed APIs.
- Add gateway/session and shared chat coverage for the new iOS flow.

Verification:
- git diff --check
- node scripts/run-vitest.mjs src/gateway/server.sessions.create.test.ts src/gateway/talk-realtime-relay.test.ts
- swift test --filter ChatViewModelTests (apps/shared/OpenClawKit)
- xcodebuild build for Nimrod's iPhone succeeded; install succeeded; launch was blocked because the phone was locked

Known follow-up:
- Preserve traceLevel in sessions.create parent runtime inheritance and keep the changelog credit in the follow-up patch.
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
Summary:
- Replace the legacy iOS shell with Pro Command, Chat, Agents, and Settings tabs.
- Wire iOS chat/session/settings/diagnostics and realtime Talk flows through gateway-backed APIs.
- Add gateway/session and shared chat coverage for the new iOS flow.

Verification:
- git diff --check
- node scripts/run-vitest.mjs src/gateway/server.sessions.create.test.ts src/gateway/talk-realtime-relay.test.ts
- swift test --filter ChatViewModelTests (apps/shared/OpenClawKit)
- xcodebuild build for Nimrod's iPhone succeeded; install succeeded; launch was blocked because the phone was locked

Known follow-up:
- Preserve traceLevel in sessions.create parent runtime inheritance and keep the changelog credit in the follow-up patch.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: ios App: ios feature: ✨ showcase ClawSweeper spotlight: unusually compelling feature idea for maintainer attention. gateway Gateway runtime merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. proof: 🎥 video Contributor real behavior proof includes video or recording evidence. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. scripts Repository scripts size: XL status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants