Peter Steinberger
125934addc
feat(ios): harvest shared chat capabilities — verbosity, trace toggle, live talk level, sessions entry ( #110254 )
...
* feat(ios): wire verbosity, assistant trace toggle, live talk level, and chat-local sessions entry
* chore(i18n): translate new iOS chat strings and regenerate catalogs
2026-07-18 03:27:45 +01:00
joshavant
1c16005cd7
fix(ios): identify Apple Health integration
2026-07-17 12:16:44 -07:00
Peter Steinberger
28a3540f32
feat: add native inline widget support ( #109212 )
...
* feat: add native inline widget support
* refactor: simplify plugin surface refresh
* fix: preserve plugin surface refresh API
* fix: reload widgets after WebKit termination
* fix: harden native widget refresh
* fix: bound native widget recovery
* docs: defer native widget release note
* chore: refresh native i18n inventory
* fix: harden native widget delivery
* refactor: simplify native widget API surface
* fix: serialize native widget capability refresh
* fix: harden native widget recovery
* fix: recover native widget capabilities
* style: format widget refresh role selection
* fix: correct widget refresh formatting
* fix: harden cross-platform widget recovery
* fix: bind widget trust and recovery to routes
* chore: refresh native i18n inventory
* chore: regenerate Android gateway protocol
* test: remove unused release workflow read
2026-07-16 19:24:41 -07:00
Peter Steinberger
a9f82837a1
feat: inspect background tasks across web and mobile ( #109150 )
...
* feat: add background task details across clients
* fix: refresh background task clients and translations
* fix: keep background task details fresh
* fix: ignore deleted background task details
* refactor: split background task rendering
* fix: use canonical background task ids
* refactor: extract background task view types
* fix(apps): regenerate task localizations
* fix(ios): remove unused task screen import
* fix(apps): refresh task localization inventory
2026-07-16 13:08:42 -07:00
Peter Steinberger
aebea4891e
feat(ios): render plugin approvals as native Allow/Deny notifications ( #108709 )
...
* feat(ios): render plugin approvals as native Allow/Deny notifications
Extend the iOS approval handling from exec to plugin approvals so the native
push the gateway now sends (#108505 ) shows a phone notification with Allow/Deny.
Extract a shared ApprovalNotificationBridge with exec/plugin wrappers owning
their own kind constants and category; tag the parsed prompt with its kind;
register the plugin category and route plugin pushes in the app delegate; add a
.plugin case that maps the plugin presentation (title/description/pluginId/
severity) into the existing prompt and widens the exec-only validation, current,
cache-restore, and resolve guards to accept plugin; parameterize the dialog copy
by kind. Watch snapshot publication stays exec-only; the phone notification still
mirrors to the watch via WatchConnectivity. Reuses the unified approval.get/
approval.resolve RPCs (already kind-generic); no server or protocol changes.
* chore(i18n): sync native inventory after rebase
* chore(ios): drop accidentally committed local Version.xcconfig build override
* fix(ios): sync Apple i18n catalog and remove dead approval-bridge methods
Sync apps/ios/Resources/Localizable.xcstrings for the new plugin-approval
strings (native inventory sync alone did not cover the Apple catalog).
Remove the superseded per-bridge registerCategory variants and the redundant
exec parseResolvedPush wrapper flagged by the iOS Periphery dead-code scan;
registration uses ApprovalNotificationBridge.registerCategories and the shared
parse helpers.
* chore(ios): drop generated SwiftSources filelist; reconcile native i18n inventory
* chore(ios): drop generated Xcode project from tracking
Codex generated OpenClaw.xcodeproj for its simulator test run and the initial
apps/ios directory commit force-added it; xcodegen regenerates it in CI, so it
must not be tracked (matches main).
* chore(ios): reconcile native i18n inventory after rebase
2026-07-16 09:50:42 -07:00
Peter Steinberger
6b79db8b7d
feat(ios): mascot moods for onboarding and gateway quick setup ( #108900 )
...
* feat(ios): mascot moods for onboarding and gateway quick setup
The activation glyph now takes a mood: the onboarding welcome step
shows the hard-hat working mascot while connecting, the success step
celebrates, and the gateway quick-setup header derives working/sad/
curious/idle from its connect state.
* fix(ios): quick-setup mood reflects app-level gateway problems too
The sheet renders two error surfaces — the local connect error and the
app-level gateway problem banner — and the mascot now goes sad for
either instead of only the sheet-local failure.
2026-07-16 08:56:18 -07:00
Peter Steinberger
93c9d2a20c
fix(ios): stop fresh setup from failing after pairing ( #108779 )
...
* fix(ios): make setup keychain handoff atomic
* fix(ios): refresh native i18n inventory
2026-07-16 03:50:54 -07:00
NianJiu
727f9e0a7e
fix(ios): preserve active chat across foreground reconnects ( #108241 )
...
* fix(ios): preserve chat focus across reconnects
* chore(ios): sync native i18n inventory
* test(ios): strengthen reconnect ownership coverage
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
---------
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 01:38:45 -07:00
Peter Lee
e08e1a0ca8
fix(ios): attach EKAlarm to reminders.add so due-time notifications fire ( #106376 )
...
* fix(ios): attach EKAlarm to reminders.add so due-time notifications fire
EKReminder.dueDateComponents only sets the deadline; without an explicit
EKAlarm, iOS does not produce lock-screen or banner notifications.
Closes #105523
* fix(ios): configure reminder due alerts
Co-authored-by: xialonglee <li.xialong@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 01:14:40 -07:00
Vincent Koc
1185db56c0
refactor(ios): remove write-only talk provider state ( #106881 )
...
* refactor(ios): remove write-only talk provider state
* chore(ios): sync native i18n inventory
2026-07-14 08:46:46 +08:00
joshavant
cac32bb5d1
fix(ios): declare Health update purpose
2026-07-13 19:12:21 -05:00
Peter Steinberger
334e7f3f21
feat(apps): add native mobile Automations parity ( #106355 )
...
* fix(apps): address native Skills review feedback
* feat(apps): add native Automations parity
* fix(ios): preserve automation editor selection
* fix(android): page automation discovery
* chore(apps): refresh native source inventory
* fix(ios): refresh invalid automation diagnostics
* chore(apps): sync native localization
* fix(cron): stabilize paginated snapshots
* refactor(cron): split pagination helpers
* fix(apps): address final native review feedback
* chore(apps): refresh native source inventory
* fix(ios): dedupe automation list actions
* chore: keep release note in PR context
* fix(ci): repair current main architecture gates
* fix(ios): default new skill requirement fields
* fix(ios): retain queued automation reservations
2026-07-13 15:35:32 -07:00
Peter Steinberger
9b64c861e5
fix(chat): prevent reasoning races after model changes ( #106534 )
...
* fix(chat): serialize session setting changes
* fix(chat): bind settings mutations to gateway routes
* fix(chat): align settings lanes with shared requests
* fix(ios): preserve injected session mutations
* fix(chat): preserve authoritative settings refreshes
* fix(chat): reconcile authoritative settings state
* fix(ci): satisfy session settings quality gates
* fix(android): regenerate native string resources
* fix(ci): update session settings export baseline
* fix(ci): reconcile dead export baseline
* fix(android): resume outbox after settings lane
* chore(i18n): refresh native source inventory
* chore(i18n): refresh rebased native inventory
* chore(i18n): sync control UI locales
* chore: keep release notes in pull request
* style(macos): fix settings comment format
* fix(ai): keep Google thinking type internal
2026-07-13 14:27:54 -07:00
Peter Steinberger
e1a92c99cf
fix(ios): persist chat thinking selections ( #106287 )
...
* refactor(apple): share chat gateway requests
* fix(ci): sync native app inventory
* docs: keep Apple release note in PR body
2026-07-13 05:44:08 -07:00
Peter Steinberger
6c5084f1ad
feat(xai): add realtime voice provider ( #106267 )
...
* feat(xai): add realtime voice provider
Co-authored-by: Vitor Cepeda Lopes <vitor@vitorcepedalopes.com >
* fix(xai): satisfy realtime voice validation
* fix(xai): harden realtime relay boundaries
* chore: drop release-owned changelog edit
* chore(i18n): refresh native voice catalogs
* chore(i18n): refresh Control UI raw-copy baseline
* chore(plugin-sdk): refresh API baseline hashes
* chore(i18n): use canonical main catalogs
* chore(i18n): refresh realtime voice source inventory
* chore: refresh xai voice landing head [skip ci]
* chore: refresh integrated protocol artifacts [skip ci]
---------
Co-authored-by: Vitor Cepeda Lopes <vitor@vitorcepedalopes.com >
2026-07-13 05:17:24 -07:00
Peter Steinberger
73a0bf4b7c
refactor(apple): share chat gateway payload mapping ( #106154 )
...
* refactor(apple): share chat gateway payload mapping
* test(apple): track shared event mapping
2026-07-13 02:39:01 -07:00
Peter Steinberger
938d41014f
feat(mobile): default pairing to full node access ( #105928 )
...
* feat(mobile): default pairing to full node access
* chore: leave release notes to release workflow
* refactor(mobile): bound pairing helpers
* chore(i18n): refresh mobile access inventory
* chore(ci): lower mobile pairing LOC baseline
* fix(mobile): complete pairing validation artifacts
* ci: remove stale transcript target export baseline
* fix(ios): wrap access upgrade guidance
* fix(ios): preserve localized access key
* fix(ci): dedupe read-only SQLite guardrail
* fix(mobile): secure full-access node setup
2026-07-13 02:30:45 -07:00
Peter Steinberger
3261667b73
fix(ios): keep reconnect errors visible ( #105875 )
...
* fix(ios): keep reconnect errors visible
* fix(ios): clear stale errors on gateway switch
* chore(ios): keep release notes in PR
* fix(ios): reset status when switching gateways
* fix(ios): retain errors through same-target reconnect
* fix(ios): unpause explicit pairing retries
* fix(ios): isolate retained reconnect errors
* chore(i18n): resync rebased native inventory
* fix(ios): separate reconnect display state
2026-07-13 02:11:26 -07:00
Peter Steinberger
17630226fc
improve(ios): make gateway QR pairing prominent in Settings ( #106111 )
...
Reorder Settings -> Gateway by intent: pairing (Add Gateway with Scan QR,
setup code, discovered gateways) right below status, nav-bar QR scanner
button on the gateway route, and a Scan QR to Pair status-card hero while
nothing is paired (honoring the shared connect lock). Manual Gateway and
credentials move to the bottom. Fix setup-code Connect busy spinner to
track the whole attempt. New strings ran the full native i18n pipeline.
Closes #106013
2026-07-13 00:35:38 -07:00
Peter Steinberger
d2b382528e
feat(ios): guide first launch through pairing explainer and permissions ( #106129 )
...
* feat(ios): guide first launch through pairing explainer and permissions
* fix(ios): keep first-run flow resumable and surface limited grants in onboarding
* chore(ios): regenerate native i18n after rebase
* chore(android): project refreshed native translations into strings.xml
* fix(ios): move i18n wrapper contract to shared permission row and sync catalog
2026-07-13 00:35:31 -07:00
Peter Steinberger
b57e7b74e6
feat: add native Skills management parity ( #105814 )
...
* feat(apps): add native skills management parity
* chore(i18n): refresh native skills inventory
* style(apps): apply canonical Swift formatting
* style(ios): wrap skills status message
* chore(i18n): refresh native skill locales
* refactor(apps): trim native skills review surface
* chore(i18n): regenerate native app resources
* chore: keep release changelog owner-only
* fix(ios): remove dead gateway and watch wrappers
2026-07-13 00:11:11 -07:00
Colin Johnson
6242842722
fix(ios): focus missing gateway credentials ( #98189 )
...
* fix(ios): focus missing gateway credentials
Co-authored-by: Colin <colin@solvely.net >
* test(macos): let main actor polling suspend
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 23:36:29 -07:00
Peter Steinberger
c81ae0412c
fix(ios): localize Settings accessibility labels ( #105859 )
...
* fix(ios): preserve localized accessibility labels
* chore(i18n): refresh native source inventory
2026-07-12 19:33:27 -07:00
Vincent Koc
818eca2c09
fix(ios): coalesce automatic overview refreshes
2026-07-13 03:53:15 +02:00
Vincent Koc
5e9bc0916f
fix(ios): harden gateway and watch state handling
2026-07-13 03:53:15 +02:00
Peter Steinberger
5e45ebe82b
feat(ios): add private HealthKit summaries ( #105616 )
...
* feat(ios): add private HealthKit summaries
* fix(ios): satisfy Health settings lint
* chore(ios): sync Health localization artifacts
* chore(ios): refresh generated localization and docs
* fix(ios): reject partial Health history
* chore(ios): sync Health string catalogs
* fix(ios): bridge Health authorization dates
* fix(ios): scope Health summaries to today
2026-07-12 12:52:38 -07:00
Vincent Koc
5ec053a6e9
refactor(ios): remove unused live activity wrapper
2026-07-12 18:33:47 +02:00
Vincent Koc
f64eb0cbaa
fix(ios): localize sidebar reveal actions
2026-07-12 18:33:47 +02:00
Vincent Koc
e999802e6e
fix(ios): type watch gateway request identifier
2026-07-12 18:33:47 +02:00
Vincent Koc
01ed6b1f04
fix(ios): distinguish localized and verbatim session actions
2026-07-12 18:33:47 +02:00
Vincent Koc
7394d07a49
fix(ios): use typed localized retry action
2026-07-12 18:33:47 +02:00
Vincent Koc
aa1a8ddb34
fix(ios): preserve localized text value boundaries
2026-07-12 18:33:47 +02:00
Vincent Koc
543161e67e
fix(ios): localize remaining runtime labels
2026-07-12 18:33:47 +02:00
Vincent Koc
6ddc87de0a
fix(ios): satisfy watch localization build gates
2026-07-12 18:33:47 +02:00
Vincent Koc
a1f0a92b03
fix(watch): preserve terminal approval outcomes
2026-07-12 18:33:47 +02:00
Vincent Koc
34fe882301
fix(ios): carry semantic gateway progress
2026-07-12 18:33:47 +02:00
Vincent Koc
0e49f09112
fix(watch): preserve localized terminal status
2026-07-12 18:33:47 +02:00
Vincent Koc
1e22d4fcbd
fix(ios): localize concatenated settings copy
2026-07-12 18:33:47 +02:00
Vincent Koc
3854f43be7
fix(talk): preserve WebRTC progress semantics
2026-07-12 18:33:47 +02:00
Vincent Koc
1c3b94550e
fix(watch): preserve one-shot push-to-talk status
2026-07-12 18:33:47 +02:00
Vincent Koc
0e092aa08e
chore(ios): refresh localized runtime assets
2026-07-12 18:33:47 +02:00
Vincent Koc
55a3634809
fix(watch): preserve realtime failure presentation
2026-07-12 18:33:47 +02:00
Vincent Koc
af1036bc5c
fix(ios): canonicalize shipped activity statuses
2026-07-12 18:33:47 +02:00
Vincent Koc
a69f1cb1be
fix(watch): dual-write legacy snapshot status
2026-07-12 18:33:47 +02:00
Vincent Koc
44f2488318
fix(watch): preserve terminal Talk failure state
2026-07-12 18:33:47 +02:00
Vincent Koc
c89dc7905d
chore(ios): refresh reviewed localization assets
2026-07-12 18:33:47 +02:00
Vincent Koc
cf8ae716ff
fix(ios): preserve localized runtime semantics
2026-07-12 18:33:47 +02:00
Vincent Koc
88f1e91383
chore(ios): regenerate localized app assets
2026-07-12 18:33:47 +02:00
Vincent Koc
c09a555c9e
fix(ios): decouple Talk state from localized copy
2026-07-12 18:33:47 +02:00
Vincent Koc
95cff58166
fix(watchos): localize semantic status on watch
2026-07-12 18:33:47 +02:00