Commit Graph

408 Commits

Author SHA1 Message Date
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