Vincent Koc
5e9bc0916f
fix(ios): harden gateway and watch state handling
2026-07-13 03:53:15 +02:00
Vincent Koc
8d0d3ab59b
fix(watch): share style with detail scroll
2026-07-12 18:33:47 +02:00
Vincent Koc
19e650c231
fix(watch): include chat status in preview snapshot
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
e4ffa5fd92
fix(watch): decode semantic approval outcomes
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
99668e3fd1
fix(watch): type legacy chat status switches
2026-07-12 18:33:47 +02:00
Vincent Koc
dfa9c96e17
fix(watch): parse encoded avatar URL
2026-07-12 18:33:47 +02:00
Vincent Koc
a49e6a32e9
fix(watch): make localized text extraction explicit
2026-07-12 18:33:47 +02:00
Vincent Koc
0c65a16b08
fix(watch): preserve future semantic status text
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
4db61868d7
fix(watch): migrate canonical approval outcomes
2026-07-12 18:33:47 +02:00
Vincent Koc
f25b583b30
fix(watch): preserve shipped protocol compatibility
2026-07-12 18:33:47 +02:00
Vincent Koc
bf96f1fbfb
fix(watch): preserve command and approval details
2026-07-12 18:33:47 +02:00
Vincent Koc
ec65e10df7
fix(watch): preserve snapshot compatibility
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
95cff58166
fix(watchos): localize semantic status on watch
2026-07-12 18:33:47 +02:00
Vincent Koc
ff6f4af69a
test(watchos): cover localized chat status fallback
2026-07-12 18:33:47 +02:00
Vincent Koc
afc12d7a53
fix(watchos): localize direct connection failures
2026-07-12 18:33:47 +02:00
Vincent Koc
cc85d8256f
fix(ios): use plural-aware localized counts
2026-07-12 18:33:47 +02:00
Vincent Koc
99c1fedf27
fix(watchos): localize chat status on watch
2026-07-12 18:33:47 +02:00
Vincent Koc
551581d0a4
fix(watchos): localize inbox runtime copy
2026-07-12 18:33:47 +02:00
Peter Steinberger
da4a480089
chore(apps): remove more dead code
2026-07-12 00:58:32 -07:00
Peter Steinberger
ae3008c70a
fix(ios): show unavailable Watch approval state
2026-07-11 23:19:37 -07:00
Peter Steinberger
2a02ab6bbe
refactor(apps): reuse Watch approval transport models ( #105024 )
...
* refactor(apps): reuse watch approval transport models
* fix(ios): satisfy exact identifier lint
2026-07-12 07:08:03 +01:00
Peter Steinberger
ac89350327
feat(apps): review durable approvals on mobile ( #104913 )
...
* feat(apps): Android, iPhone, and Watch approval clients
Squash-rebased #103912 segment onto the deep-links tip on current main.
Native approval surfaces: iOS approval presentation with gateway-switch
lease preservation and resolution fencing, watchOS inbox + approval
actions with shipped-shape payload codec, Android approval notices with
publication-tokened dismissal. Native i18n inventory regenerated.
(cherry picked from commit 428a76670ffeede54248b7bd7aa4438e2589851b)
(cherry picked from commit 80225d5707c3645eeea5435f266131037b50ede6)
(cherry picked from commit 2a23b714dc30d773a294aa45adc617e46b80732e)
(cherry picked from commit 9ff1153827769e2cbab7c11c153f0f8634662c28)
(cherry picked from commit 5b25723525bd562e5f97478af492f7b46ad30fd1)
(cherry picked from commit 8c80e8467b5fe89aad0d4c74a0573f1600ed3af9)
(cherry picked from commit ad4037bc9846bf6f082b41c129ee68aa344576c3)
(cherry picked from commit fdf767dd662cff3c8a5a6d571f38f153410651ca)
(cherry picked from commit 00c120376ffd992ea68ce29254a9bc0a25ed1740)
(cherry picked from commit f36a95213e )
(cherry picked from commit e2c25cbe2baacab44d21871d8cb6734704f065ac)
(cherry picked from commit 7c4fda519080486d341a9f4df36d63f9e24b1235)
(cherry picked from commit 1b3d4eda3dc5988012124597f9454ae21fb187a1)
(cherry picked from commit 2a60619722 )
(cherry picked from commit 6f0c386567 )
(cherry picked from commit 784a5857b7 )
(cherry picked from commit cbf294e026841c9bc2799da0fc7db666a69c52db)
* fix(apps): harden approval reconciliation and watch states
2026-07-11 19:59:07 -07:00
Peter Steinberger
091584b197
chore(swift): restore compact conditional bodies ( #103832 )
...
* style(swift): restore compact conditional bodies
* fix(ios): remove redundant startup timeout await
* chore(swift): sync native i18n inventory
2026-07-10 18:12:00 +01:00
Peter Steinberger
62bd760c0e
chore(swift): enforce current formatting and lint rules ( #103313 )
...
* style: apply SwiftFormat 0.62.1 rules
Refs #103202
* ci: enforce deterministic Swift lint
Refs #103202
* refactor: keep gateway connect lint-clean
Refs #103202
* style: keep iOS typography checks warning-free
* ci: route MLX Swift changes through pre-push
* fix: preserve native i18n extraction after Swift cleanup
* refactor: keep rebased Swift surfaces lint-clean
* style: format latest Swift additions
* chore: refresh native i18n inventory
* style: keep generated Swift formatter-clean
* fix: preserve node route invalidation callbacks
* fix: keep native translation IDs stable
* fix: retain native translation identifiers
* fix: preserve translations across Swift source moves
2026-07-10 11:54:08 +01:00
Peter Steinberger
20816f676f
feat(voice): universal talk waveform driven by real audio levels ( #102901 )
...
* feat(voice): universal talk waveform driven by real audio levels
One shared Siri-style talk animation across iOS, watchOS, macOS, and
Android (TalkWaveformView + exact Compose port), replacing per-platform
fakes: synthetic speaking pulses, constant speech-detected power, static
Android bar rows, flat realtime listening. Listening/recording follow
live mic levels on every route; agent speech follows the real playback
envelope (AVAudioPlayer metering + playback-aligned PCM envelope +
WebRTC stats); voice-note recording shows a live capture wave.
* fix(android): order waveform imports and sync native i18n inventory
* chore(i18n): resync native inventory after rebase
2026-07-09 16:33:25 +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
8d1668c441
fix(ios): harden Apple Watch pairing activation ( #100732 )
2026-07-06 09:16:02 +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
Peter Steinberger
245092dc3a
feat(ios): add Apple Watch voice turns ( #100283 )
...
* feat(ios): add Apple Watch voice turns
* chore(ios): sync native i18n inventory
* fix(ios): preserve Watch message label
2026-07-05 06:40:03 -07:00
joshavant
52ed5eca49
Fix iOS branded typography dynamic type refresh
2026-07-03 18:45:45 -05:00
joshavant
7a1f3d7183
Fix iOS typography CI checks
2026-07-03 18:45:45 -05:00
joshavant
d483cc1f72
fix(ios): cover remaining branded typography surfaces
2026-07-03 18:45:45 -05:00
Vincent Koc
5e4d71686a
fix(apple): preserve localized static labels
2026-07-01 05:19:12 -07:00
Peter Steinberger
8d9eba3f4f
fix(ios): complete single-target watch migration
...
Use the watchOS application API for text input, remove simulator-only Debug architecture restrictions, and document the standard Watch bundle location. Refs #92477 .
Co-authored-by: Sash Zats <sash@zats.io >
2026-06-19 06:18:43 -04:00
Sash Zats
b39a932112
fix: migrate watch app to single-target app (Xcode 27+ compat) ( #92477 )
...
* fix: migrate watch app to single-target app
* fix: build watch screenshots generically
* docs(ios): clarify watch embed invariant
* docs(ios): clarify watch embed invariant
---------
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-06-19 11:34:34 +02:00