feat(ios): add Live Activity + Dynamic Island support#27488
feat(ios): add Live Activity + Dynamic Island support#27488leepokai wants to merge 3 commits intoopenclaw:mainfrom
Conversation
Greptile SummaryAdds Live Activity support to the iOS app, enabling Dynamic Island and Lock Screen notifications that display real-time agent status updates. The implementation introduces a persistent activity that starts when the gateway connects and transitions through states (thinking, tool execution, streaming, done, idle, disconnected). Key features include 1s debounced updates for streaming content, on-device AI-powered task title generation, and comprehensive tool classification with friendly labels and SF Symbol icons. The code integrates cleanly with the existing Architecture is sound with clear separation between the main app ( Confidence Score: 5/5
Last reviewed commit: 2d4e77f |
47d2ac8 to
862e6ab
Compare
Show agent progress on Lock Screen and Dynamic Island while app is backgrounded. States: thinking, streaming, tool execution, done, idle, and disconnected. - ActivityWidget extension with compact/expanded Dynamic Island views and Lock Screen banner - LiveActivityManager singleton with 1s debounce and idle persistence - Disconnected state (red) vs idle state (gray) for gateway status - watchOS 11+ automatically mirrors via Smart Stack (no watch changes) Co-Authored-By: Claude Opus 4.6 <[email protected]>
Show orange "Connecting..." in Dynamic Island and Lock Screen while the gateway is establishing a connection. Transitions to gray "Idle" once connected. Previously the activity started directly in Idle state even while still connecting. Co-Authored-By: Claude Opus 4.6 <[email protected]>
- End duplicate activities from previous app launches on init and before starting a new one (fixes multiple Dynamic Islands) - Idle (connected, no AI running): green dot + green text - Connecting: gray dot + gray text + spinner Co-Authored-By: Claude Opus 4.6 <[email protected]>
9dc7233 to
a3dc8ef
Compare
Add lock-screen/Dynamic Island connection health states and prune duplicate/stale activities before reuse. This intentionally excludes AI/title generation and heavier UX rewrites from #27488. Co-authored-by: leepokai <[email protected]>
* feat(ios): add live activity connection status and cleanup Add lock-screen/Dynamic Island connection health states and prune duplicate/stale activities before reuse. This intentionally excludes AI/title generation and heavier UX rewrites from #27488. Co-authored-by: leepokai <[email protected]> * fix(ios): treat ended live activities as inactive * chore(changelog): add PR reference and author thanks --------- Co-authored-by: leepokai <[email protected]>
Summary
Changes
New files
ActivityWidget/— WidgetKit extension with Dynamic Island + Lock Screen viewsSources/LiveActivity/LiveActivityManager.swift— Activity lifecycle managementSources/LiveActivity/OpenClawActivityAttributes.swift— Shared ActivityAttributes definitionSources/LiveActivity/TaskSummaryService.swift— AI-powered task summary for activity titlesModified files
project.yml— AddedOpenClawActivityWidgettarget +NSSupportsLiveActivitiesConfig/Signing.xcconfig— AddedOPENCLAW_ACTIVITY_WIDGET_BUNDLE_IDSources/Model/NodeAppModel.swift— Gateway event subscription for live activity updatesSources/Info.plist— AddedNSSupportsLiveActivities+ alphabetized keysTests/Info.plist— Fixed indentationSwiftSources.input.xcfilelist— Added new Swift source filesTest plan
xcodegen generate && xcodebuild -scheme OpenClaw🤖 Generated with Claude Code