joshavant
fcedd37067
test(ios): guard local network permission trigger points
2026-06-23 14:48:33 -05:00
joshavant
8efed50c4e
fix: gate ios push enrollment on notification consent
2026-06-23 01:38:24 -05:00
joshavant
d4f666874f
feat: harden ios app store push release mode
2026-06-23 00:01:20 -05:00
joshavant
93c7ec645a
fix(ios): remove stale notification authorization seam
2026-06-21 23:40:56 -04:00
joshavant
920bd04e19
fix(ios): make notification guidance suppression a button
2026-06-21 23:40:56 -04:00
joshavant
c3ab1feb61
test(ios): cover notification permission UX
2026-06-21 23:40:56 -04:00
Josh Avant
5d1e649aea
fix: route mobile exec approvals to reviewer device ( #95175 )
...
* fix: route mobile exec approvals to reviewer device
* fix: surface iOS approval events in foreground
* fix: forward codex approval reviewer device
* test: harden approval reviewer device contract
* test: cover reviewer approval fallback resolvers
2026-06-21 08:47:52 -05:00
joshavant
f7f415f26b
fix(ios): wire share extension app group signing
2026-06-19 12:53:45 +02:00
Sash Zats
17106b4844
fix(ios): clean up notification settings state ( #91923 )
...
Summary:
- The branch replaces iOS notification permission display-string state with a typed SettingsNotificationStatus ... n value, and opens the app notification Settings page with UIApplication.openNotificationSettingsURLString.
- PR surface: Other +51. Total +51 across 5 files.
- Reproducibility: yes. Current main has a source-level reproduction path where the Notifications settings act ... n display strings and opens the general app Settings URL instead of the notification-specific Settings URL.
Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.
Validation:
- ClawSweeper review passed for head 1a2fdeeac5 .
- Required merge gates passed before the squash merge.
Prepared head SHA: 1a2fdeeac5
Review: https://github.com/openclaw/openclaw/pull/91923#issuecomment-4669439195
Co-authored-by: Sash Zats <sash@zats.io >
2026-06-19 05:51:28 +00:00
Colin Johnson
c45c87acca
feat(ios): add watch action surface ( #93387 )
...
* feat(ios): add watch action surface
* fix: harden watch action surface
* fix: clean watch codegen lint
* fix(ios): scope watch chat commands to gateway
---------
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
2026-06-16 15:22:16 +02:00
joshavant
1ffda5d3ca
fix: migrate ios identifiers to openclawfoundation
2026-06-15 19:27:55 +02:00
joshavant
379de52b59
fix: use canonical ios bundle identifiers
2026-06-15 19:27:55 +02:00
Sash Zats
233b48daaa
refactor: prune unused iOS code ( #91996 )
...
Prune unused iOS surfaces and regenerate the Xcode project. Add a scoped Periphery PR gate with hardened artifact handling and stale-status cleanup.
Co-authored-by: Sash Zats <sash@zats.io >
2026-06-15 02:07:15 -07:00
Colin Johnson
e58310b000
fix(ios): force stale foreground gateway reconnects ( #92552 )
2026-06-13 20:33:39 +02:00
Colin Johnson
bf89552e67
Improve iPad and iPhone control surfaces ( #91557 )
...
* feat(ios): expand iPad layout support
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
* feat: improve iPad and iPhone control surfaces
* fix: preserve workboard dispatch compatibility
* fix: keep Talk reachable on iPad
* fix: add universal iPad app icons
* fix: address ready-review iOS feedback
* fix: avoid workboard board id shadowing
* fix ios sidebar separators
---------
Co-authored-by: Solvely-Colin <211764741+Solvely-Colin@users.noreply.github.com >
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
2026-06-09 21:46:02 -05:00
Nimrod Gutman
47dbc675e9
feat(ios): clarify talk realtime fallback ( #91201 )
...
Merged via squash.
Prepared head SHA: b6fd32ed6e
Local prep note: pnpm build passed. pnpm check hit the npm shrinkwrap guard because @anthropic-ai/sdk@0.100 .1 is no longer resolvable before 2026-05-24T20:18:43Z; the same shrinkwrap guard failure reproduces on current origin/main at 66b91d78fe , and this PR does not touch dependency manifests or lockfiles.
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Reviewed-by: @ngutman
2026-06-07 20:21:34 +03:00
Nimrod Gutman
59ed6413d9
[codex] Add iOS Apple Review demo mode ( #90919 )
...
Merged via squash.
Prepared head SHA: e7f7db3cb5
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Reviewed-by: @ngutman
2026-06-06 17:43:48 +03:00
joshavant
2ef0d274fa
fix(ios): hide agent sessions from recent sessions
2026-06-06 04:41:33 -05:00
joshavant
e8c0d92015
fix(ios): clarify agent chat session
2026-06-06 04:41:32 -05:00
joshavant
67dc71983c
fix(ios): show focused session agent
2026-06-06 04:41:32 -05:00
joshavant
5c07f7ccf0
Fix iOS selected agent chat routing
2026-06-06 04:41:32 -05:00
joshavant
1746319db5
fix ios operator scope upgrade state
2026-06-06 04:41:32 -05:00
joshavant
19e827c969
fix ios operator admin scope requests
2026-06-06 04:41:32 -05:00
joshavant
1447a4507a
fix(ios): keep talk unavailable without config
2026-06-04 22:52:52 -05:00
joshavant
cb4f6af504
fix ios canvas presentation
2026-06-04 10:15:32 -07:00
joshavant
81c8f525eb
fix ios gateway forced reconnect
2026-06-04 10:15:32 -07:00
joshavant
d5d3e9983e
fix: harden mobile a2ui bridge trust
2026-06-03 16:50:08 -07:00
Peter Steinberger
772d13c19d
fix: handle iOS global agent transcripts
2026-05-31 18:01:17 +01:00
Yuval Dinodia
a6ee3dbbdd
fix(ios): update group chats in realtime
...
Subscribe the iOS gateway chat transport to per-session transcript events so group chats update when other clients send messages. Constrain local user echo adoption to the optimistic row tied to the still-pending send run, so repeated same-content user messages from other clients append instead of replacing history.
Fixes #80231 .
Co-authored-by: Yuval Dinodia <yetvald@gmail.com >
2026-05-31 17:24:59 +01:00
Colin Johnson
f6e51ff99a
feat(ios): refresh pro UI and gateway flows ( #87367 )
...
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.
2026-05-28 17:23:26 +03:00
Nimrod Gutman
19e4c37c37
feat(ios): show Talk voice mode ( #86798 )
...
Merged via squash.
Prepared head SHA: bd24da3f3b
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Reviewed-by: @ngutman
2026-05-26 17:31:31 +03:00
Nimrod Gutman
9ca52ce3d9
[codex] improve iOS realtime talk mode ( #86355 )
...
Merged via squash.
Prepared head SHA: 3f5aedb265
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Reviewed-by: @ngutman
2026-05-25 13:27:37 +03:00
Colin Johnson
e730e9bd0b
feat(ios): add realtime talk relay mode
...
Adds realtime Gateway Talk relay support for iOS, including OpenAI realtime provider selection and voice selection controls.
Maintainer fixups preserved provider auth fallback resolution, kept setup-code/manual auth through TLS trust prompts, recomputed pairing auth from current form fields, fixed the realtime voice label Swift compile issue, added provider auth regression coverage, and refreshed shrinkwrap metadata for the current CI merge base.
Verification:
- `fnm exec --using 24.15.0 pnpm deps:shrinkwrap:check`
- `git diff --check`
- `swiftformat --lint --config config/swiftformat --unexclude apps/ios/Sources apps/ios/Sources/Gateway/GatewayConnectionController.swift apps/ios/Sources/Onboarding/GatewayOnboardingView.swift apps/ios/Sources/Onboarding/OnboardingWizardView.swift apps/ios/Sources/Settings/SettingsTab.swift apps/ios/Sources/Voice/TalkModeGatewayConfig.swift`
- `swiftlint lint --config apps/ios/.swiftlint.yml apps/ios/Sources/Gateway/GatewayConnectionController.swift apps/ios/Sources/Onboarding/GatewayOnboardingView.swift apps/ios/Sources/Onboarding/OnboardingWizardView.swift apps/ios/Sources/Settings/SettingsTab.swift apps/ios/Sources/Voice/TalkModeGatewayConfig.swift`
- `AUTOREVIEW_AUTO_TESTS=0 .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main`
- GitHub CI clean for `8a76c829611c0eb70d4c3b5328f1868aaf3516e1` (cancelled `auto-response` ignored)
Co-authored-by: Colin Johnson <colin@solvely.net >
2026-05-22 17:34:06 +01:00
Val Alexander
6db2ee6583
fix(ios): restore privacy permission prompts
...
Restores first-use iOS authorization prompts for Contacts, Calendar, and Reminders by adding the missing usage descriptions, requesting access from `.notDetermined` in the service paths, and adding Settings Privacy & Access status/actions.
Verification:
- `plutil -lint apps/ios/Sources/Info.plist apps/ios/Tests/Info.plist apps/ios/ShareExtension/Info.plist apps/ios/ActivityWidget/Info.plist apps/ios/WatchApp/Info.plist apps/ios/WatchExtension/Info.plist`
- `swiftformat --lint apps/ios/Sources/Permissions/PermissionRequestBridge.swift apps/ios/Sources/Contacts/ContactsService.swift apps/ios/Sources/Calendar/CalendarService.swift apps/ios/Sources/Reminders/RemindersService.swift apps/ios/Sources/Settings/PrivacyAccessSectionView.swift apps/ios/Sources/Settings/SettingsTab.swift apps/ios/Sources/Onboarding/GatewayOnboardingView.swift apps/shared/OpenClawKit/Sources/OpenClawKit/DeepLinks.swift --config config/swiftformat`
- `swiftlint lint --config apps/ios/.swiftlint.yml apps/ios/Sources/Permissions/PermissionRequestBridge.swift apps/ios/Sources/Contacts/ContactsService.swift apps/ios/Sources/Calendar/CalendarService.swift apps/ios/Sources/Reminders/RemindersService.swift apps/ios/Sources/Settings/PrivacyAccessSectionView.swift apps/ios/Sources/Settings/SettingsTab.swift apps/ios/Sources/Onboarding/GatewayOnboardingView.swift apps/ios/Tests/PermissionRequestBridgeTests.swift`
- `git diff --check origin/main...HEAD`
- `rg '<<<<<<<|=======|>>>>>>>' CHANGELOG.md apps/ios apps/shared/OpenClawKit/Sources/OpenClawKit/DeepLinks.swift`
- `pnpm ios:build`
- `xcodebuild test -project apps/ios/OpenClaw.xcodeproj -scheme OpenClaw -destination 'platform=iOS Simulator,name=iPhone 17' -configuration Debug -only-testing:OpenClawTests/PermissionRequestBridgeTests`
- Fresh-erased iPhone 17 simulator proof for Contacts denial/Open Settings, Calendar add-only/full-access upgrade, and Reminders authorization prompts.
Not tested: physical device, or a paired gateway command invocation after onboarding.
2026-05-13 23:45:35 -05:00
Nimrod Gutman
00a0858fd9
fix(ios): recover rotated gateway certificates
...
## Summary
- allow iOS to trust system-valid rotated gateway certificates
- rebuild active gateway sessions after replacing the stored TLS pin
- expose certificate trust recovery from gateway problem banners
## Verification
- swift test --filter 'GatewayErrorsTests|GatewayNodeSessionTests/changedSessionBoxRebuildsExistingGatewayChannel'
- xcodebuild build -scheme OpenClaw -destination 'platform=iOS,id=00008140-000848A92EE3001C'
- installed and launched OpenClaw on attached iPhone with devicectl
- verified iOS gateway log connected to wss://gutsy-home.tail06a72.ts.net:443 after trust/pairing recovery
2026-05-10 21:10:35 +03:00
Val Alexander
36df0d93b9
fix: repair iOS LAN pairing
...
Fix iOS LAN/setup-code pairing policy for #47887 .
- Allow explicit private LAN and .local plaintext ws:// setup/manual connects where policy allows it.
- Keep public hosts, .ts.net, and Tailscale CGNAT plaintext fail-closed.
- Prefer explicit passwords over stale bootstrap tokens in Swift and TypeScript gateway clients.
- Update setup-code/device-pair coverage, docs, and changelog with source credit for #65185 .
Verification:
- pnpm install
- git diff --check origin/main..HEAD
- pnpm exec oxfmt --check --threads=1 src/gateway/client.ts src/gateway/client.test.ts src/pairing/setup-code.ts src/pairing/setup-code.test.ts extensions/device-pair/index.ts extensions/device-pair/index.test.ts
- pnpm format:docs:check
- pnpm test src/gateway/client.test.ts src/pairing/setup-code.test.ts extensions/device-pair/index.test.ts
- cd apps/shared/OpenClawKit && swift test --filter 'DeepLinksSecurityTests|GatewayNodeSessionTests'
- pnpm lint:swift passes with the existing TalkModeRuntime.swift type-body-length warning
Blocked locally:
- iOS app-target xcodebuild tests require unavailable watchOS 26.4 runtime here.
- Testbox check:changed previously failed because the image lacks swiftlint; local swiftlint passes.
2026-05-05 21:07:19 -05:00
Peter Steinberger
466f718320
feat: wire talk handoff into native nodes
2026-05-06 02:39:15 +01:00
Val Alexander
b2efd19648
fix(ios): harden gateway pairing setup
...
Harden iOS gateway setup-code pairing by rejecting non-loopback plaintext ws:// setup URLs before bootstrap token issuance, consolidating iOS setup parsing, and adding QR scan support from Settings.
Verification:
- pnpm test extensions/device-pair/index.test.ts
- swift test --package-path apps/shared/OpenClawKit --filter DeepLinksSecurityTests
- XcodeBuildMCP OpenClawLogicTests/DeepLinkParserTests
- targeted SwiftLint for touched iOS/OpenClawKit files
- pnpm exec oxfmt --check --threads=1 extensions/device-pair/index.ts extensions/device-pair/index.test.ts
- git diff --check origin/main...HEAD
- GitHub PR checks green on 58e5e60a5c
2026-05-04 02:11:47 -05:00
Peter Steinberger
bdba90a20b
feat: add authenticated iOS background presence beacon ( #73330 )
...
* feat: add iOS background presence beacon
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
* fix: keep iOS background reconnects ahead of beacon throttle
* build: refresh gateway protocol swift models
* fix: emit swift protocol string enums
---------
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
2026-04-28 08:10:35 +01:00
Peter Steinberger
02f3e9cfa2
fix(talk): honor configured speech locale
2026-04-25 21:05:24 +01:00
Nimrod Gutman
f3c304917a
revert: undo background alive review findings fix
2026-04-08 14:02:49 +03:00
Nimrod Gutman
b328c66115
fix: resolve background alive beacon review findings
2026-04-08 13:46:39 +03:00
Nimrod Gutman
6380c872bc
feat(ios): improve gateway connection error ux ( #62650 )
...
* feat(ios): improve gateway connection error ux
* fix(ios): address gateway problem review feedback
* feat(ios): improve gateway connection error ux (#62650 ) (thanks @ngutman)
2026-04-07 21:53:22 +03:00
Nimrod Gutman
6f566585d8
fix(ios): harden watch exec approval review ( #61757 )
...
* fix(ios): harden watch exec approval review
* fix(ios): address watch approval review feedback
* fix(ios): finalize watch approval background recovery
* fix(ios): finalize watch approval background recovery (#61757 ) (thanks @ngutman)
2026-04-06 17:42:42 +03:00
Nimrod Gutman
28955a36e7
feat(ios): add exec approval notification flow ( #60239 )
...
* fix(auth): hand off qr bootstrap to bounded device tokens
* feat(ios): add exec approval notification flow
* fix(gateway): harden approval notification delivery
* docs(changelog): add ios exec approval entry (#60239 ) (thanks @ngutman)
2026-04-05 16:33:22 +03:00
Nimrod Gutman
226ca1f324
fix(auth): address qr bootstrap review feedback
2026-04-04 15:57:38 +09:00
Nimrod Gutman
a9140abea6
fix(auth): hand off qr bootstrap to bounded device tokens
2026-04-04 15:57:38 +09:00
Agustin Rivera
49d08382a9
iOS: restrict A2UI action dispatch to trusted canvas URLs ( #58471 )
...
* fix(ios): restrict a2ui bridge trust
* test(ios): cover fragment-strip trust and document raw-string equality
* fix(ios): normalize capability URL before trust comparison in canvas commands
* fix(ios): trim canvas.navigate url before trust comparison
* chore: add changelog for iOS A2UI trust boundary
---------
Co-authored-by: Devin Robison <drobison@nvidia.com >
2026-04-02 11:51:09 -06:00
Nimrod Gutman
69fe999373
fix(pairing): restore qr bootstrap onboarding handoff ( #58382 ) (thanks @ngutman)
...
* fix(pairing): restore qr bootstrap onboarding handoff
* fix(pairing): tighten bootstrap handoff follow-ups
* fix(pairing): migrate legacy gateway device auth
* fix(pairing): narrow qr bootstrap handoff scope
* fix(pairing): clear ios tls trust on onboarding reset
* fix(pairing): restore qr bootstrap onboarding handoff (#58382 ) (thanks @ngutman)
2026-03-31 21:11:35 +03:00
Nimrod Gutman
496176d738
feat(ios): add onboarding welcome pager ( #45054 )
...
* feat(ios): add onboarding welcome pager
* feat(ios): add onboarding welcome pager (#45054 ) (thanks @ngutman)
2026-03-13 14:24:15 +02:00