NianJiu
067edbcb2d
fix(ios): make Talk audio lifecycle-safe ( #103072 )
...
* fix(ios): cancel queued push-to-talk invokes
* fix(ios): make push-to-talk cancellation lifecycle-safe
* style(ios): use switch expression for PTT result
* fix(ios): bind audio capture to lifecycle owners
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* style(ios): format rebased lifecycle changes
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* fix(ios): preserve routing hydration across reconnects
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* fix(ios): cancel routing hydration on target switch
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* chore(ios): refresh native i18n inventory
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* fix(i18n): preserve native localization IDs
* chore: leave changelog to release automation
* refactor(apple): split lifecycle and gateway helpers
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* fix(ios): make lifecycle parsing nonisolated
* fix(ios): consume canonical Talk events
---------
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 15:03:40 +01:00
Peter Steinberger
54f45a950b
feat(watchos): connect directly to Gateway as a node ( #102893 )
...
* feat(watchos): add direct gateway node
* docs: refresh watch node docs map
* chore: leave release notes to release workflow
* chore(ios): refresh native localization inventory
* fix(watchos): keep direct node policy bounded
2026-07-09 15:53:02 +01:00
Peter Steinberger
6621ead871
improve(ios): manage notifications from Privacy ( #102733 )
...
* improve(ios): manage notifications from privacy
Co-authored-by: Sahil Satralkar <62758655+sahilsatralkar@users.noreply.github.com >
* fix(ios): make notification status returns explicit
---------
Co-authored-by: Sahil Satralkar <62758655+sahilsatralkar@users.noreply.github.com >
2026-07-09 12:35:29 +01:00
Peter Steinberger
5d8293c1fe
feat(ios): read-only offline cache for chat sessions and transcripts ( #100219 )
...
* feat(ios): read-only offline cache for chat sessions and transcripts
Cache-first cold open for the iOS chat tab: the last known transcript and
session list render immediately from a local SQLite cache, then live gateway
history replaces them wholesale through the existing reconciliation path.
When the gateway is unreachable, recent sessions and transcripts stay
browsable read-only; sending remains gated by the existing connection state.
- New OpenClawChatTranscriptCache protocol seam plus SQLite-backed store in
OpenClawChatUI (raw SQLite3, no new dependencies), scoped per gateway
stableID so transcripts never leak across paired gateways.
- Bounds: 50 sessions, 50 transcripts, 200 messages per session; text rows
only (attachment/binary payloads and tool arguments are stripped).
- Disposable cache: schema versioned via user_version; any open/schema/decode
mismatch drops and rebuilds silently. File protection
completeUntilFirstUserAuthentication on iOS.
- View model pre-paints from cache only until a live response applies
(hasAppliedLiveHistory/hasAppliedLiveSessions guards); write-through is
chained and off the render path.
- iOS wiring keys the chat view model identity on transport mode plus cache
gateway ID so switching paired gateways rebuilds the view model.
Part of #100194
* fix(ios): harden offline transcript cache
* fix(ios): expose offline cached sessions
* fix(ios): isolate transcript caches by gateway
* chore(i18n): sync native inventory
* fix(ios): allow cache extension to replace messages
2026-07-06 01:02:15 +01:00
PollyBot13
a320f775f0
fix(ios): defer QR pairing after scanner dismissal ( #99572 )
...
* fix(ios): defer QR pairing after scanner dismissal
* fix(ios): process QR pairing after scanner dismissal
* fix(ios): harden QR scanner handoff
* fix(ios): give QR scanner dismissal more time
* fix(ios): keep onboarding open for QR trust prompt
* fix(ios): keep QR trust prompt owned by onboarding
* fix(ios): recover operator pairing after QR bootstrap
* fix(ios): cancel stale QR scanner handoffs
Co-authored-by: PollyBot13 <pollybot13@gmail.com >
* fix(ios): defer QR setup until onboarding closes
* fix(ios): keep QR setup links with visible settings
* fix(ios): consume setup links during onboarding
* fix(ios): handle setup links during onboarding launch
* fix(ios): route setup links through active onboarding
* fix(ios): harden QR gateway handoff
* fix(ios): cancel superseded gateway attempts
* fix(ios): serialize scanner result delivery
* fix(ios): prevent stale gateway reconnects
* fix(ios): serialize gateway target handoff
* fix(ios): disable stale gateway relaunch route
* fix(ios): await staged bootstrap reset
* test(ios): bound gateway reset handoff
* fix(ios): preserve explicit gateway handoff
* fix(ios): harden gateway lifecycle ownership
* chore(ios): sync native i18n inventory
* test(ios): align gateway ownership assertions
* refactor(ios): remove superseded gateway helpers
* fix(ios): keep gateway auth route scoped
* fix(ios): restore gateway target review state
* fix(protocol): refresh Swift plugin approval model
* test(ios): isolate state directory overrides
* fix(ios): preserve watch alerts across gateway switches
* fix(ios): bind deferred work to gateway ownership
* docs(changelog): credit iOS gateway handoff fix
* chore(i18n): sync native app inventory
* test(ios): remove unused Watch approval hooks
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-05 12:31:53 -07:00
Peter Steinberger
70f2bef6b4
fix(ios): persist queued Watch replies ( #100372 )
...
* fix(ios): persist queued watch replies
Route Apple Watch quick replies through the durable, gateway-scoped Watch message outbox with restart-safe routing and deduplication.
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* fix(ios): preserve pre-upgrade Watch replies
Bind shipped notification prompts without routing metadata to the current Gateway once, while keeping explicit and persisted Gateway owners fail-closed.
---------
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
2026-07-05 09:14:49 -07:00
Marvin Kaunda
5370f64cf0
improve: native iOS look with stock SwiftUI navigation, forms, chat, and talk visualizer ( #99231 )
...
* improve(ios): adopt native SwiftUI chrome across the app
* fix(ios): keep phone chat on the native navigation bar
* fix(ios): render licenses screen as native settings rows
* fix(ios): complete native interface polish
* fix(ios): preserve branded native interface
* test(ios): align gateway badge source guard
* fix(ios): center onboarding on iPad
* fix(ios): remove dead reskin symbols
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-03 18:17:09 -07:00
joshavant
52ed5eca49
Fix iOS branded typography dynamic type refresh
2026-07-03 18:45:45 -05:00
joshavant
b4c5cd511a
fix(ios): apply typography to native chrome
2026-07-03 18:45:45 -05:00
Peter Steinberger
c230ab3c92
improve(ios): clarify Control and Talk visual hierarchy ( #98423 )
...
* feat(ios): refine control and talk visual hierarchy
* feat(ios): refine control and talk visual hierarchy
* feat(ios): refine control and talk visual hierarchy
2026-07-01 06:19:58 +01:00
joshavant
8bddafba65
fix(ios): defer local network discovery until onboarding
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
Sash Zats
5d9daea2b0
fix(ios): centralize app accent colors ( #94627 )
...
Move iOS accent and status colors through design tokens so raw SwiftUI color literals are blocked outside token definitions.
Set the app-wide tint in SwiftUI and UIKit from code, without relying on Assets.xcassets AccentColor.
2026-06-22 20:20:37 +00:00
joshavant
0bd2aa8ee0
feat(ios): consolidate notification permission UX
2026-06-21 23:40:56 -04:00
joshavant
377f6181a9
feat: add ios screenshot fixture mode
2026-06-15 19:27:55 +02:00
joshavant
379de52b59
fix: use canonical ios bundle identifiers
2026-06-15 19:27:55 +02:00
joshavant
c932bf377b
chore: update ios configuration
2026-06-15 19:27:54 +02:00
Peter Steinberger
551c9637d8
fix(ios): polish iPad gateway setup
2026-06-01 03:47:09 +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
Peter Steinberger
b294f7c467
fix: harden ios app build hygiene
2026-04-28 01:42:10 +01: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
b77b7485e0
feat(push): add iOS APNs relay gateway ( #43369 )
...
* feat(push): add ios apns relay gateway
* fix(shared): avoid oslog string concatenation
# Conflicts:
# apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayChannel.swift
* fix(push): harden relay validation and invalidation
* fix(push): persist app attest state before relay registration
* fix(push): harden relay invalidation and url handling
* feat(push): use scoped relay send grants
* feat(push): configure ios relay through gateway config
* feat(push): bind relay registration to gateway identity
* fix(push): tighten ios relay trust flow
* fix(push): bound APNs registration fields (#43369 ) (thanks @ngutman)
2026-03-12 18:15:35 +02:00
Peter Steinberger
cd011897d0
refactor(ios): dedupe status, gateway, and service flows
2026-03-02 11:32:20 +00:00
Peter Steinberger
c35368c6dd
fix(ios): eliminate Swift warnings and clean build logs
2026-02-26 22:42:23 +00:00
Mariano Belinky
d06d8701fd
iOS: normalize watch quick actions and fix test signing
2026-02-24 15:16:11 +00:00
Mariano
f52476f18c
iOS Watch: bridge mirrored notification actions into quick replies ( #22123 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 401fbe8a7a
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-02-20 19:04:58 +00:00
Mariano
e98ccc8e17
iOS/Gateway: stabilize background wake and reconnect behavior ( #21226 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 7705a7741e
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-02-19 20:20:28 +00:00
Mariano
e67da1538c
iOS/Gateway: wake disconnected iOS nodes via APNs before invoke ( #20332 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 7751f9c531
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-02-18 21:00:17 +00:00
Mariano
c2d12b7e31
iOS: add APNs registration and notification signing config ( #20308 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 614180020e
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-02-18 19:37:03 +00:00
Mariano
9a1e168685
iOS: port gateway connect/discovery stability + onboarding reset ( #18164 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 8165ec5bae
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-02-16 16:07:22 +00:00
Mariano Belinky
4ab814fd50
Revert "iOS: wire node services and tests"
...
This reverts commit 7b0a0f3dac .
2026-02-02 17:36:49 +00:00
Mariano Belinky
ff6114599e
iOS: update onboarding and gateway UI
2026-02-02 16:42:18 +00:00
Peter Steinberger
9a7160786a
refactor: rename to openclaw
2026-01-30 03:16:21 +01:00