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
Vincent Koc
099c261541
fix(android): keep presence metadata locale neutral
2026-07-12 13:26:39 +02:00