Commit Graph

67697 Commits

Author SHA1 Message Date
Peter Steinberger
31425b50a8 test(worker): add cloud worker fault injection gate (#105921) 2026-07-13 03:17:53 -07:00
Peter Steinberger
d65ec597a1 improve(ui): restyle composer send button as filled accent circle (#106046)
* feat(ui): restyle composer send button as filled accent circle

The send button was an outline ghost (transparent bg, 1px accent border,
outlined paper plane) while every other primary action uses the solid
.btn.primary fill. Send now matches: solid accent circle, white arrow-up
glyph, accent-hover + glow on hover, muted fill when disabled. Stop and
voice variants drop their borders and escalate via fill strength instead.

* fix(ui): keep send button focus ring visible under hover

Hover rules now set box-shadow and out-specify :focus-visible, so a
box-shadow focus ring vanished for keyboard users hovering the control.
Use an offset outline instead; hover shadows cannot override it.

* chore(ui): compact arrow icons to satisfy TS LOC ratchet

icons.ts is over the 500-line ratchet cap, so the new arrowUp entry
must not grow the file; merge each arrow's two paths into one
(identical rendering) for a net -4 lines.
2026-07-13 03:17:16 -07:00
Peter Steinberger
a2da4700be refactor: consolidate remaining bounded concurrency (#106265) 2026-07-13 03:16:28 -07:00
Vincent Koc
e474ba38e8 fix(sqlite): serialize offline maintenance with gateway (#106210) 2026-07-13 18:15:32 +08:00
Peter Steinberger
b395dfca85 improve(ui): load optional shell surfaces on demand (#106243)
* perf(ui): lazy-load optional shell surfaces

* fix(ui): align lazy shell static contracts
2026-07-13 03:15:00 -07:00
Peter Steinberger
f355f6afbb fix(installer): pass SQLite probe over stdin (#106252) 2026-07-13 03:13:14 -07:00
Peter Steinberger
6bb85f177f feat(onepassword): optional 1Password secrets broker plugin (#106133)
* feat(onepassword): add optional 1Password secrets broker plugin

Curated slug registry with per-item auto/approve/deny policy, plugin-approval
gating with expiring allow-always grants, SQLite audit history, onepassword
status/audit CLI, and a single-attempt op client (--cache=false, minimal env).

Closes #105924

* docs(plugins): refresh generated inventory count after rebase

* fix(onepassword): scope grants and field reads

* fix(onepassword): bound grant retention

* fix(onepassword): satisfy deadcode ratchet and hook allowlist contract

* fix(onepassword): honor live policy reloads

* refactor(onepassword): trim private exports

* test(onepassword): satisfy plugin boundaries

* test(onepassword): document temp directory boundary
2026-07-13 03:12:47 -07:00
Vincent Koc
5eb52493c7 refactor(config): remove dead session runtime exports (#106197) 2026-07-13 18:11:31 +08:00
xingzhou
c3cb1af93c fix(transcripts): stop live capture when the agent run is canceled (#104123)
* fix(transcripts): stop live capture when the agent run is canceled

* fix(transcripts): preserve startup cleanup ownership

* fix(transcripts): keep runtime session type internal

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 03:11:25 -07:00
Peter Steinberger
7c9b8baa2b refactor(gateway): consolidate TypeScript WebSocket clients (#106113)
* refactor(gateway): unify websocket clients

* fix(gateway): preserve adapter lifecycle behavior

* test(gateway): keep reconnect proof black-box

* chore(gateway): satisfy shared client lint

* refactor(gateway): keep protocol decisions internal

* refactor(gateway): preserve shared reconnect supervision

* test(gateway): use canonical browser barrel

* fix(gateway): resolve browser retry workspace source

* refactor(gateway): tighten shared protocol types
2026-07-13 03:08:21 -07:00
Peter Steinberger
581cf6601a refactor(deadcode): trim memory-core type exports (#106263) 2026-07-13 03:04:08 -07:00
Peter Steinberger
380f6c8086 fix(plugin-sdk): ratchet wildcard surface budget (#106242) 2026-07-13 02:58:22 -07:00
Peter Steinberger
9092e59a43 refactor(agents): trim sandbox test seams (#106257) 2026-07-13 02:58:06 -07:00
Vincent Koc
96df5a0243 fix(ci): refresh plugin SDK API baseline (#106253) 2026-07-13 17:54:43 +08:00
Peter Steinberger
69710f1e88 refactor(deadcode): trim whatsapp session config exports (#106256) 2026-07-13 02:53:15 -07:00
Peter Steinberger
7efdd9d706 fix(ci): import oc-path limits from their defining module in security test 2026-07-13 02:47:57 -07:00
Peter Steinberger
9ea4b167fa refactor(deadcode): trim channel auth exports (#106247) 2026-07-13 02:45:34 -07:00
RickLin
21c377873d fix(agents): classify account-restricted model 400s as model_not_found (#104878)
* fix(agents): classify account-restricted model 400s as model_not_found

OpenAI-backed runtimes reject plan/account-restricted models with HTTP
400 invalid_request_error ("The '<model>' model is not supported when
using Codex with a ChatGPT account."). Without a model_not_found match
the ambiguous-400 branch collapses this into a format failure, so users
get the generic retry//new copy for a config-only problem (#104490).
The 'when using' qualifier keeps capability rejections ("not supported
for tool calling") out of the class, preserving the #97611 contract.

Fixes #104490

* fix(agents): narrow account model rejection match

---------

Co-authored-by: Altay <altay@hey.com>
2026-07-13 12:44:40 +03:00
Peter Steinberger
d7a2ec779a fix(ci): retain macOS notification test observer 2026-07-13 10:39:25 +01:00
Peter Steinberger
73a0bf4b7c refactor(apple): share chat gateway payload mapping (#106154)
* refactor(apple): share chat gateway payload mapping

* test(apple): track shared event mapping
2026-07-13 02:39:01 -07:00
zhangqueping
87e2bafe00 fix(config): clear snapshot marker on transient read error so future updates retry (#106105)
* fix(config): clear snapshot marker on transient read error so future updates retry

The pre-update config snapshot marks a config path as snapshotted
before attempting the I/O. If readFile or writeFile threw a transient
error (e.g. disk space exhaustion, file locking), the catch block kept
the in-memory marker intact, permanently blocking snapshot retries for
the lifetime of the process.

Clear the marker in the catch block so a subsequent update can attempt
the snapshot again.

Fixes #105431

* test(config): cover snapshot retry failures

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 02:34:51 -07:00
Peter Steinberger
6cd1133858 feat(cloud-workers): openclaw worker mode running the embedded loop on the box (#105865)
* feat(cloud-workers): add restricted worker runtime

* test(cloud-workers): cover worker runtime contracts

* docs(cloud-workers): document worker mode

* fix(worker): bound connection lifecycle

* fix(worker): serialize transcript flushes

* fix(worker): fail stop stale transcript bases

* fix(worker): degrade lossy live streaming

* test(worker): cover inference reconnect fencing

* refactor(worker): split RPC clients

* refactor(worker): split connection transport

* refactor(worker): split embedded runtime

* refactor(worker): narrow worker module exports
2026-07-13 02:34:31 -07:00
Peter Steinberger
9b565e8d50 refactor(plugins): trim long-tail dead exports (#106230)
* refactor(extensions): trim long-tail plugin exports

* refactor(whatsapp): remove dead media relay
2026-07-13 02:34:06 -07:00
Peter Steinberger
598e3092f7 refactor(deadcode): trim oc-path barrel (#106240) 2026-07-13 02:33:39 -07:00
Peter Steinberger
843e3c7878 improve(gateway): speed up pristine plugin-heavy startup [AI] (#106195)
* perf(gateway): skip absent core startup migrations

* fix(gateway): revalidate recovered startup config
2026-07-13 02:32: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
Vincent Koc
c43c960aad refactor(ui): trim private realtime type exports (#106221) 2026-07-13 17:27:01 +08:00
Peter Steinberger
d71a9e1a13 refactor(slack): use Web API response contracts (#106234) 2026-07-13 02:26:49 -07:00
Peter Steinberger
8c9b034480 refactor(agents): trim sandbox export seams (#106237) 2026-07-13 02:25:42 -07:00
Peter Steinberger
d280c20aab fix(ui): simplify Settings titlebar controls (#106228)
* fix(ui): simplify Settings titlebar controls

* chore(ui): leave release notes to release flow
2026-07-13 02:25:17 -07:00
chengzhichao-xydt
1ed04910e2 fix(azure-speech): add timeout to voices list request (#102984)
* fix(azure-speech): add timeout to voices list request

* test(azure-speech): simplify voice timeout proof

* test(azure-speech): mark voice keys as placeholders

---------

Co-authored-by: chengzhichao-xydt <chengzhichao-xydt@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 02:25:13 -07:00
Peter Steinberger
95d9457465 fix(ui): preserve worktree mutation errors (#106196) 2026-07-13 02:24:33 -07:00
Peter Steinberger
4f287dd740 refactor(process): adopt Execa execution layer (#105939)
* refactor(process): adopt execa execution layer

* fix(process): preserve launch error semantics

* chore(process): ratchet exec size baseline

* fix(process): preserve Windows and error contracts

* chore(plugin-sdk): ratchet wildcard surface budget

* test(process): allow resolved Windows executable paths

* fix(process): preserve Windows shim completion

* test(process): isolate Execa mocks

* style(process): format Windows exec test

* style(process): apply Windows test formatting

* test(process): normalize Windows system path casing

* fix(process): harden execa edge handling

* test(tui): preserve ESM fixture semantics

* fix(process): preserve PATHEXT lookup contract

* fix(process): keep invocation type internal
2026-07-13 02:21:08 -07:00
Peter Steinberger
bc691eabbc fix(docs-i18n): preserve split fenced blocks 2026-07-13 05:20:21 -04:00
Peter Steinberger
8e0c82ba0a fix(ui): stroke new-session target icons instead of black fills (#106193) 2026-07-13 02:18:18 -07:00
Peter Steinberger
7da28f3704 fix(plugin-sdk): freeze directory compat exports (#106222) 2026-07-13 02:14:02 -07:00
Peter Steinberger
5daeb86570 test(ui): fix Workboard sidebar E2E timeout (#106160) 2026-07-13 02:13:14 -07:00
Peter Steinberger
227533c813 fix(deadcode): track maturity renderer exports (#106225) 2026-07-13 02:13:02 -07:00
Peter Steinberger
3261667b73 fix(ios): keep reconnect errors visible (#105875)
* fix(ios): keep reconnect errors visible

* fix(ios): clear stale errors on gateway switch

* chore(ios): keep release notes in PR

* fix(ios): reset status when switching gateways

* fix(ios): retain errors through same-target reconnect

* fix(ios): unpause explicit pairing retries

* fix(ios): isolate retained reconnect errors

* chore(i18n): resync rebased native inventory

* fix(ios): separate reconnect display state
2026-07-13 02:11:26 -07:00
Peter Steinberger
bafabba0df fix(gateway): preserve Control UI turns across restarts (#106151)
* fix(gateway): preserve Control UI turns across restart

* perf(sessions): index restart recovery state

* fix(sessions): avoid replaying pre-admitted turns

* fix(sessions): index per-entry recovery status

* fix(sessions): guard restart failure notices

* fix(sessions): preserve terminal claims across admissions

* fix(sessions): retry failed recovery notices

* fix(sessions): harden restart retry ownership

* fix(gateway): tighten restart recovery typing

* fix(sessions): close restart recovery races

* refactor(sessions): split restart recovery ownership

* chore(sessions): clean restart recovery lint

* chore: drop release-owned changelog entry

* fix(gateway): satisfy restart recovery guards

* test(gateway): cover Control UI durable admission
2026-07-13 02:08:56 -07:00
openclaw-mantis[bot]
ea5758dd13 chore(ui): refresh control ui locales (#106214)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-13 02:07:43 -07:00
Peter Steinberger
48e212a19a refactor(agents): trim embedded runner exports (#105855)
* refactor(agents): trim embedded runner exports

* chore(deadcode): refresh export baseline
2026-07-13 02:07:28 -07:00
Peter Steinberger
22daf8f234 fix(pr): paginate changed file metadata (#106217) 2026-07-13 02:02:47 -07:00
Peter Steinberger
a8ae27fd35 fix(ui): drop duplicated runNotStarted locale blocks
Two UI PRs landed near-simultaneously and their generated locale syncs
each carried a runNotStarted block, breaking check-prod-types (TS1117
duplicate object keys) in all 20 generated locales. en.ts was correct.
Keep the newer block (TS last-wins, so this is the already-live text).
2026-07-13 02:01:30 -07:00
mushuiyu886
ed57c6cd88 fix(agents): honor claude-cli contextTokens setting (#93198)
* fix: honor claude-cli configured context tokens

* test: cover claude-cli native compaction budget

* test: cover ordinary claude-cli budget persistence

* test: migrate claude-cli budget fixtures to session accessor

* fix(agents): carry CLI provider into context budget

* fix(agents): guard optional CLI context metadata

* fix(agents): align Claude CLI native compaction budget

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(agents): apply selected CLI context cap

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(agents): preserve prepared CLI context budgets

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(agents): resolve prepared CLI context ownership

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* test(agents): type CLI context budget cases

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 01:58:44 -07:00
Peter Steinberger
a788617325 fix(qa-lab): report authoritative Crabline readiness artifact (#106039)
* fix(qa-lab): preserve readiness artifact path

* test(qa-lab): keep readiness fixture in generation

* docs(qa-lab): explain readiness fallback order

* style(qa-lab): format readiness fixture

* refactor(qa-lab): isolate Crabline artifact paths

* refactor(qa-lab): keep artifact path type local

* fix(qa-lab): remove stale Crabline type import

* fix(qa-lab): restore Crabline selection type import
2026-07-13 01:55:12 -07:00
Peter Steinberger
1136757174 refactor: consolidate bounded concurrency on p-limit and p-map (#106002)
* refactor: adopt p-limit and p-map for bounded concurrency

* chore: normalize lockfile ordering

* fix: preserve memory host concurrency export

* refactor: keep media apply within size budget

* fix: drain memory concurrency before failure

* fix: satisfy memory concurrency guards

* chore: scope memory host dead-code checks

* chore: lower concurrency LOC baselines

* fix: preserve concurrency API surfaces

* chore: reconcile concurrency LOC baseline

* test: keep memory concurrency gate portable

* style: simplify concurrency drain

* ci: refresh deadcode export baseline
2026-07-13 01:53:28 -07:00
Peter Steinberger
83bf0379c9 refactor(channels): share plugin contract scaffolds (#105838)
* refactor(channels): share plugin contract scaffolds

* fix: preserve channel config hint metadata

* chore: refresh Plugin SDK API baseline

* ci: refresh plugin SDK surface budget

* fix(ci): allow read-only state database boundary

* fix(ci): dedupe read-only state database boundary
2026-07-13 01:51:32 -07:00
Peter Steinberger
39cda9e548 refactor(mattermost): trim private runtime facade (#106114)
* refactor(mattermost): trim private runtime facade

* refactor(mattermost): remove stale runtime note

* fix(mattermost): preserve legacy history exports

* chore(deadcode): refresh export baseline
2026-07-13 01:49:21 -07:00