Leandre Chamberland-Dozois
5c1857fc55
fix(android): stop killing long chat runs with hardcoded timeouts ( #106863 ) ( #106864 )
...
* fix(android): stop killing long chat runs with hardcoded timeouts
Two independent timeouts made any agent turn longer than ~2 minutes fail
when started from the Android app, while the same turn worked over
Telegram (#106863 ):
- chat.send hardcoded timeoutMs=30000, which the gateway turns into the
server-side run expiry; the maintenance sweep then aborts longer runs
("CLI run aborted" / "Embedded agent failed before reply"). Omit the
override so app runs get the configured default like other channels.
- armPendingRunTimeout declared a timeout after 120s even when the
refreshed history snapshot confirmed the run was still in flight,
showing a spurious error and dropping the optimistic bubble mid-run.
Re-arm the timer in that case; terminal events and the server-side
expiry remain the liveness backstop.
Fixes #106863
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
* chore(i18n): sync native inventory after ChatController line shifts
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
* test(android): run ChatController on backgroundScope in reconnect tests
The pending-run watchdog now re-arms while a run is confirmed in flight,
so reconnect scenarios that end with a restored in-flight run keep a
timer coroutine alive. Launch the controller on runTest's
backgroundScope so that timer is cancelled at test end instead of
failing the suite with UncompletedCoroutinesError.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
* fix(android): bound pending-run watchdog recovery
Distinguish applied, superseded, and failed history refreshes so recovered runs neither expire during a newer authoritative load nor rearm forever after refresh failure.
Co-authored-by: Léandre Chamberland-Dozois <lchamberland-dozois@hotmail.com >
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 02:12:45 -07:00
pick-cat
c90833a62e
fix(android): preserve emoji in tool detail previews ( #108330 )
...
* fix(android): preserve emoji in tool detail previews
* fix(android): sync i18n after tool detail utf16 preview
* proof(android): add UTF-16 tool display boundary proof script
Co-Authored-By: nebulacoder-v8.0 <noreply@zte.com.cn >
* chore: oxfmt proof-android-tool-display-utf16.mts
Co-Authored-By: nebulacoder-v8.0 <noreply@zte.com.cn >
* chore: remove redundant proof script
The Robolectric ToolDisplayRegistryTest already covers the UTF-16 boundary
behavior. The standalone Node.js proof script triggers CI checks (max-lines
ratchet, check-test-types, session-accessor-boundary) and provides no
additional coverage beyond the existing Android JVM tests.
Co-Authored-By: nebulacoder-v8.0 <noreply@zte.com.cn >
---------
Co-authored-by: nebulacoder-v8.0 <noreply@zte.com.cn >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 01:15:23 -07:00
Leon-SK668
66b09405d0
fix(android): preserve emoji in presence reason logs ( #108103 )
2026-07-16 00:03:24 -07:00
WhatsSkiLL
3e223756d4
fix(android): make onboarding layouts responsive ( #108405 )
...
* fix(android): make onboarding layouts responsive
* fix(android): order TogglePill modifier parameter
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
2026-07-16 00:01:27 -07:00
WhatsSkiLL
4bf77ca867
fix(android): wrap large segmented controls ( #107574 )
...
* fix(android): wrap large segmented controls
* fix(android): scope segmented control wrapping
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
2026-07-15 11:29:47 -04:00
Leon-SK668
8cc7cac556
fix(android): preserve emoji in app session labels ( #108102 )
2026-07-15 02:03:48 -07:00
Leon-SK668
9b6361a50c
fix(android): preserve emoji in voice error status ( #108101 )
...
* fix(android): preserve emoji in voice error status
* chore(android): sync native i18n inventory
* fix(android): align voice status i18n allowlist
2026-07-15 01:16:27 -07:00
Peter Steinberger
4023eb92d2
feat(android): add foreground Voice Wake ( #107081 )
...
* feat(android): add foreground voice wake
* chore(android): refresh voice wake artifacts
* fix(android): refresh voice wake capability readiness
* chore(android): sync voice wake translations
* chore: keep release notes in PR context
2026-07-13 21:48:29 -07: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
2c8306a5be
improve(android): make gateway QR pairing prominent in Settings
...
Mirror the iOS gateway settings ordering: nav-bar QR scan action,
Scan QR to Pair hero while unpaired, one Add Gateway panel (scan,
setup code + connect, discovered gateways with per-row connect),
paired gateways below, manual host/credential plumbing at the bottom.
Add facts rows (Discovered, Default Agent, Agents, Instance ID) and a
Diagnose action, plus a deterministic 'gateway' screenshot scene.
Closes #106186
2026-07-13 08:02:56 -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
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
16b1bd2032
fix(android): support gateway protocol v3 ( #106205 )
2026-07-13 02:29:16 -07:00
Peter Steinberger
29781ab39e
feat(android): generate gateway protocol models ( #106011 )
...
* feat(android): generate gateway protocol models
* fix(ci): recognize generated Kotlin event constants
* fix(android): normalize generated event catalog
* fix(ci): type Kotlin event coverage exports
* fix(ci): satisfy Kotlin codegen gates
2026-07-13 00:34:57 -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
Vincent Koc
b9d53d3cce
fix(android): keep disconnected nodes offline
2026-07-13 03:53:15 +02:00
snowzlmbot
84fb7a664d
feat(android): manage skills from settings ( #101864 )
...
* feat(android): manage skills from settings
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
* fix(android): scope skill install claims
* chore(android): refresh native i18n inventory
* chore(android): refresh native locale artifacts
* fix(android): localize skill management state
* chore(android): refresh skill localization artifacts
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
2026-07-12 13:12:43 +01:00
Vincent Koc
1d4a401b0d
fix(android): prefer live AppCompat locales
2026-07-12 13:26:39 +02:00
Vincent Koc
e659acd9b2
test(android): remove invalid cold locale probe
2026-07-12 13:26:39 +02:00
Vincent Koc
01b33ea6be
fix(android): refresh external application locales
2026-07-12 13:26:39 +02:00
Vincent Koc
ea634f7152
test(android): exercise application locale updates
2026-07-12 13:26:39 +02:00
Vincent Koc
ce348fa580
test(android): import localized formatter coverage
2026-07-12 13:26:39 +02:00
Vincent Koc
586764424b
test(android): inspect current foreground locale
2026-07-12 13:26:39 +02:00
Vincent Koc
f513eef4be
fix(android): preserve locale and localize closed presentation
2026-07-12 13:26:39 +02:00
Vincent Koc
422e6dc1e9
fix(android): preserve pinned locale on configuration changes
2026-07-12 13:26:39 +02:00
Vincent Koc
4d4f5165f1
fix(android): localize fresh-review UI flows
2026-07-12 13:26:39 +02:00
Vincent Koc
ef43dd3ee1
fix(android): cache locale-aware resources
2026-07-12 13:26:39 +02:00
Vincent Koc
39085c9483
fix(android): localize settings status copy
2026-07-12 13:26:39 +02:00
Vincent Koc
f8db32b938
fix(android): type localized runtime presentation
2026-07-12 13:26:39 +02:00
Vincent Koc
04ffd2f645
test(android): model cold locale process startup
2026-07-12 13:26:39 +02:00
Vincent Koc
1b6c492cb5
fix(android): resolve cold-process app locales
2026-07-12 13:26:39 +02:00
Vincent Koc
569a5f44c0
fix(android): localize settings presentation
2026-07-12 13:26:39 +02:00
Vincent Koc
e7e58ce5b9
fix(android): localize cron editor presentation
2026-07-12 13:26:39 +02:00
Vincent Koc
d4c00e3b95
fix(android): localize provider capability labels
2026-07-12 13:26:39 +02:00
Vincent Koc
cb31650290
fix(android): localize node device metadata
2026-07-12 13:26:39 +02:00
Vincent Koc
a98ce19e59
fix(android): localize skill workshop statuses
2026-07-12 13:26:39 +02:00
Vincent Koc
de0efd5445
refactor(android): mark presence platform as metadata
2026-07-12 13:26:39 +02:00
Vincent Koc
d0ca7d2a24
style(android): wrap presence locale assertion
2026-07-12 13:26:39 +02:00
Vincent Koc
099c261541
fix(android): keep presence metadata locale neutral
2026-07-12 13:26:39 +02:00
Vincent Koc
c5f94adef4
fix(android): localize settings and thinking presentation
2026-07-12 13:26:39 +02:00
Vincent Koc
c984bf0e8b
fix(android): type approval command presentation
2026-07-12 13:26:39 +02:00
Vincent Koc
e5932778f4
fix(android): keep cron detail localization reactive
2026-07-12 13:26:39 +02:00
Vincent Koc
1b87391658
fix(android): close locale review gaps
2026-07-12 13:26:39 +02:00
Vincent Koc
be900f2116
fix(android): refresh localized retained presentation
2026-07-12 13:26:39 +02:00
Vincent Koc
71db13d4c3
fix(android): localize command and overview models
2026-07-12 13:26:39 +02:00
Vincent Koc
d0fc18fba8
fix(android): keep voice status semantics locale-safe
2026-07-12 13:26:39 +02:00
Vincent Koc
0026e67488
test(android): keep approval layout guard localization-safe
2026-07-12 13:26:39 +02:00
Vincent Koc
6e6213e7b9
fix(android): refresh retained gateway status text
2026-07-12 13:26:39 +02:00
Vincent Koc
928d1935a6
fix(android): refresh retained voice and chat text
2026-07-12 13:26:39 +02:00