Commit Graph

1036 Commits

Author SHA1 Message Date
Peter Steinberger
9166b23318 feat: configure model providers from the Control UI settings page (#106490)
* feat(gateway): add models.probe RPC, credential provenance, targeted auth logout

* feat(ui): configure model providers from settings — keys, probes, logout, defaults

* docs: Control UI provider configuration section

* fix(ui): confirm fallback shrinkage via replacePaths; guard model catalog refresh races; scanner-safe probe fixtures

* test(models): scanner-safe probe fixture identifier

* chore(i18n): resync model-providers strings after rebase

* fix(gateway-protocol): drop duplicate probe type imports after rebase

* chore(protocol): regenerate Swift client for probe field order

* chore(i18n): resync model-providers strings after main rebase

* test(ui): scope model-providers E2E to settings-section headings

* fix(models): isolate marker probes from stored profiles; emit no_model for config-only providers [AI]

* fix(models): honor configured auth mode for env probes; probe config-bound profiles past auth.order [AI]

* fix(gateway): resolve provider auth aliases in models.probe [AI]

* fix(gateway): scope targeted auth logout to skip provider-wide run abort [AI]

* fix(models): probe requested provider for overrides; unregister ephemeral probe DB [AI]

* fix(gateway): exclude local no-auth markers from models.authStatus API-key provenance [AI]

* chore(i18n): resync model-providers strings for landing
2026-07-13 11:23:34 -07:00
Peter Steinberger
e98c7dfbcb feat(cloud-workers): session placement, dispatch, and worker turn routing (#106332)
* feat(gateway-protocol): add session placement schema

Closed state discriminator for session execution placement (local/requested/provisioning/syncing/starting/active/draining/reconciling/reclaimed/failed), sessions.dispatch params, and worker-admission transcript/live cursor extensions. Swift protocol models mirror the schema.

* feat(state): add worker session placement table

worker_session_placements rows carry placement state, transition generation, worker ownership metadata, ACK cursors, and the turn claim columns used for atomic admission.

* feat(cloud-workers): add durable placement state machine store

SQLite-backed placement store split by concern: state table (placement-state), discriminated record types + shape invariants (placement-record), row codec + CAS transition values (placement-row-codec), atomic turn-claim admission/release/waiters (placement-turn-claims), and lifecycle CAS transitions (placement-store).

* feat(cloud-workers): sync workspaces and attach sessions to worker environments

Environment service session attachment + turn credentials, tunnel workspace commands over a dedicated SSH runner, and git/plain workspace sync into $HOME/.openclaw-worker/workspaces with an immutable manifest. Symlink escapes are rejected locally before transfer (macOS openrsync stat-fails them opaquely) and again by the remote manifest guard.

* feat(worker): run one-shot embedded turns from launch descriptors

Worker runtime executes a single embedded turn from a stdin launch descriptor and reports completed/failed/fenced on stdout for the gateway launcher. Terminal lifecycle live events are deferred past the final transcript flush; transcript projection helpers are shared via transcript-message instead of duplicated in the runtime.

* feat(cloud-workers): dispatch placements and route worker turns

Dispatch service drives local->requested->provisioning->syncing->starting->active with failure teardown (placement-dispatch-failure) and restart/runtime recovery incl. lost-worker reclaim (placement-dispatch-recovery). Worker turn launcher claims the placement turn atomically, builds a windowed launch descriptor (worker-turn-payload), runs the remote one-shot worker, and reconciles the committed transcript; agent runners route turns through the session placement admission provider.

* feat(gateway): expose session placement RPCs and startup reconciliation

sessions.dispatch RPC with lifecycle admission barriers, operator-facing placement projection on session listings, placement-aware session reset guard, and startup/interval reconciliation wiring for worker placements.
2026-07-13 08:03:53 -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
1b615a3985 chore(i18n): translate android gateway settings strings 2026-07-13 08:02:56 -07:00
WhatsSkiLL
af854dcf50 fix(android): command palette title appears off-center (#106264)
* fix(android): center command palette title

* fix(i18n): sync native app inventory

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
Co-authored-by: Colin Johnson <colin@solvely.net>
2026-07-13 10:54:44 -04:00
Peter Steinberger
f167089d61 feat(nodes): continue Claude catalog sessions on paired nodes via streaming CLI agent runs (#105833)
* feat(gateway): stream node.invoke progress with idle timeouts and cancel

* feat(node-host): opt-in approval-gated claude cli agent run command

* feat(agents): run node-placed claude-cli turns through streaming node invoke

* feat(anthropic): continue claude catalog sessions on advertising nodes

* docs(nodes): document paired-node claude agent runs and continuation

* chore(plugin-sdk): admit spawn-invocation helper into surface budget

* fix(nodes): harden streaming invoke and node run policy from review findings

* test(node-host): prove multi-token tool-policy argv fails closed

* fix(nodes): allowlist cancel event for apps and break node-host type cycle

* chore(protocol): regenerate Swift gateway models for node invoke progress

* chore(node-host): drop test-only export surface flagged by deadcode ratchet

* style(node-host): merge invoke-types imports

* refactor(nodes): split node agent run modules to satisfy the LOC ratchet

* chore(protocol): regenerate android gateway models and sync export baseline

* chore(plugin-sdk): admit spawn-invocation helper and inherited deprecated drift into surface budget

* chore(plugin-sdk): tolerate inherited agent-core deprecated export

* fix(anthropic): drop node param parser orphaned by upstream catalog split

* ci: sync unused-export baseline with healed main

* test(agents): adopt renamed cli backend prepare helper

* style(node-host): format claude run spawn invocation

* ci: retrigger checks

* chore(plugin-sdk): pin surface budgets to healed-base counts

* fix(protocol): restore untyped lazy validators after upstream style change
2026-07-13 07:39:22 -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
openclaw-mantis[bot]
801252c66e chore(i18n): refresh native locales (#106260)
* chore(i18n): refresh native locales

* chore(i18n): sync generated app resources

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 03:49:36 -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
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
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
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
WhatsSkiLL
5d61d97a33 fix(android): autofocus command palette search (#105471)
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
2026-07-12 15:20:14 -04:00
Peter Steinberger
2821abc1f5 feat(android): polish skill management (#105592)
* feat(android): polish skill management

* chore(android): sync skill localization
2026-07-12 11:46:59 -07:00
Vincent Koc
a9bed7816c build(android): refresh shared native translations 2026-07-12 18:33:47 +02:00
Vincent Koc
f038f509d9 refactor(android): remove unused benchmark coordinate (#105524) 2026-07-12 18:33:38 +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
f151306e7b fix(android): localize cron detail duration 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
d85b34b09b build(i18n): refresh reviewed Android locale catalogs 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
f6fd4f4db5 style(android): satisfy localization ktlint 2026-07-12 13:26:39 +02:00
Vincent Koc
b392dbbbcc build(android): regenerate runtime-owned locale resources 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
181533ef3a fix(android): preserve localized shell state 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
e880384157 fix(android): restore stored locale for cold services 2026-07-12 13:26:39 +02:00
Vincent Koc
8e1dc434dc fix(android): resolve app locale immediately 2026-07-12 13:26:39 +02:00
Vincent Koc
81b79131a7 style(android): restore localization import order 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
26692f6915 fix(android): retain localized transient presentation 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