Commit Graph

19174 Commits

Author SHA1 Message Date
Vincent Koc 4f8a9c8301 fix(openai): reset realtime session lifecycle cleanly 2026-08-03 03:00:24 +08:00
Vincent Koc a0a6ce972a test(openai): cover realtime terminal reset 2026-08-03 02:59:44 +08:00
Peter Steinberger fb7cb832cc feat(browser): redesign extension popup with settings panel (#118095)
* feat(browser): redesign extension popup with settings panel

* fix(browser): hide unpair action while popup is unpaired

* test(browser): compare realpaths when resolving loaded extension id
2026-08-02 11:50:06 -07:00
Peter Steinberger 999f14392b fix(telegram): preserve question choices across button rows (#118049)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-02 11:49:35 -07:00
Vincent Koc ea345150e3 fix(qa): require canonical compaction write result (#118115) 2026-08-03 02:41:02 +08:00
Peter Steinberger f4bf253854 refactor(imessage): consolidate monitor route fixtures (#118108) 2026-08-02 11:34:50 -07:00
Peter Steinberger 30b7a3acb7 test(onepassword): speed resolver process fixtures (#118102)
* test(onepassword): speed resolver process fixtures

* test(onepassword): relax staged resolver deadline

* test(onepassword): canonicalize timeout fixture shell

---------

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-02 11:31:08 -07:00
Peter Steinberger 47be8b8e10 fix(discord): commit callback state after provider acceptance (#117417)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-02 11:30:37 -07:00
Peter Steinberger 21b07093a0 test(teams-meetings): consolidate transport fixtures (#118090) 2026-08-02 11:10:01 -07:00
Peter Steinberger c887279d0f test(device-pair): consolidate pairing coverage (#118079) 2026-08-02 11:09:53 -07:00
Peter Steinberger 6c29fc154f test(msteams): avoid hanging response clones (#118096)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-02 11:04:38 -07:00
Peter Steinberger c28b524f38 refactor(auth): move Copilot OAuth ownership to plugin (#118063)
* refactor(auth): move Copilot OAuth ownership to plugin

* test(auth): cover plugin-owned Copilot OAuth

* test(auth): align OAuth runtime mocks

* refactor(auth): extract session OAuth adapter

* refactor(auth): centralize session OAuth dispatch

* test(auth): type OAuth refresh mock

* chore(plugin-sdk): regenerate API baseline for provider oauth dispatch
2026-08-02 10:59:28 -07:00
clawsweeper[bot] 492b8841c8 fix(line): skip invalid location messages before delivery (#118064)
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-02 12:17:24 -05:00
Peter Steinberger c40180bc44 refactor(parallel): consolidate web search fixtures (#118068)
* test(parallel): consolidate web search fixtures

* test(parallel): preserve MCP protocol fallback coverage
2026-08-02 10:07:52 -07:00
Peter Steinberger 27c04ecac4 fix(signal): preserve authorized workspace media on outbound sends (#117895) 2026-08-02 09:43:50 -07:00
Vincent Koc b84e14f222 fix(telegram): ignore commands for other bots (#118024) 2026-08-03 00:25:50 +08:00
Vincent Koc 2844876be3 fix(google): align unsupported CLI auth paths (#118034) 2026-08-03 00:13:19 +08:00
synth 6d2ff9ef38 fix(memory): permanent legacy sidecar migration warning for empty placeholder OpenClaw creates (#114661)
* fix(memory-core): fail closed on non-ENOENT companion stat errors

Only treat ENOENT as 'sidecar is absent'. Other fs errors (EACCES, EIO,
ELOOP, EMFILE) now return null (fail-closed) instead of silently treating
the sidecar as zero-byte, preventing legacy data from being dropped on
transient or permission failures.

* fix(memory): silence self-inflicted legacy sidecar migration warning

OpenClaw can leave a zero-byte placeholder at the legacy memory sidecar
path (~/.openclaw/memory/<agentId>.sqlite) while the live memory index
is the per-agent SQLite database. The legacy-index migration check found
the empty file, attached it, saw no legacy schema, and warned on every
CLI invocation and gateway start, with no way for users to clear it.

Treat a demonstrably empty sidecar (zero-byte main file and no WAL or
journal content) as nothing to import: remove it quietly as a migration
change instead of emitting a permanent warning. Sidecars that contain
any bytes still go through the existing import and warning paths, so a
real legacy index or a genuinely unrecognized database is unaffected.

Closes #114626

* fix(memory-core): fail closed on non-ENOENT companion stat errors

Only treat ENOENT as 'sidecar is absent'. Other fs errors (EACCES, EIO,
ELOOP, EMFILE) now return null (fail-closed) instead of silently treating
the sidecar as zero-byte, preventing legacy data from being dropped on
transient or permission failures.

* test(memory-core): add ELOOP and EACCES companion stat regression coverage

Regression tests for the fail-closed fix: when a WAL/SHM/journal
companion's fs.stat fails with ELOOP (self-referential symlink) or
EACCES (permission denied), the migration must NOT remove the main
legacy sidecar file. Only ENOENT means genuinely absent.

Addresses Whatsskill Codex review P1 finding on openclaw/openclaw#114661.

* ci: retrigger after transient runner failures
2026-08-02 07:51:20 -07:00
Vincent Koc 4fa7c243c6 fix(lmstudio): use only loaded models during setup 2026-08-02 22:45:09 +08:00
Vincent Koc 9e3c4ac389 Merge pull request #117947 from openclaw/fix-llamacpp-setup-live-20260802
fix(llama-cpp): clarify local model setup
2026-08-02 22:41:36 +08:00
ruel225 f2b3d1588f fix(workboard): diagnose archived cards still in an active status (#116359) (#117290)
* fix(workboard): diagnose archived cards still in an active status

An archived card with an active status (ready/running/blocked/etc.) was
silently excluded from dispatch with no signal on any surface —
workboard show rendered it normally, dispatch returned count:0 with empty
startFailures, and computeCardDiagnostics returned [] for archived cards.
Operators could only find it by reading the database directly.

Add an archived_but_active diagnostic kind to WORKBOARD_DIAGNOSTIC_KINDS
and an unarchive action. In computeCardDiagnostics, when a card has
archivedAt set but status is not done, emit the warning so workboard show
and store.diagnostics report it. Done+archived cards stay silent (no
diagnostic) as before. The diagnostic is transient — refreshDiagnostics
still skips archived cards, so their stored metadata is not rewritten.

Fixes #116359

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(workboard): expose archived active cards

* ci: re-trigger after sqlite flip-proof e2e flake

Unrelated to workboard diagnostic changes; sqlite session/transcript
flip-proof e2e failed with array mismatch on an untouched path.

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: ruel225 <ruel225@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-02 07:30:52 -07:00
Jesse Merhi 0181ba67c2 feat(diagnostics): configure OTEL metric name prefixes (#116687)
* feat(diagnostics): support OTEL metric name prefixes

* feat(diagnostics): replace the default metric prefix

* docs(diagnostics): explain metric prefix migration impact

* fix(diagnostics): validate metric name prefixes
2026-08-03 00:29:05 +10:00
Masato Hoshino 570182b449 fix(googlechat): report a blocked account instead of a webhook path that was never bound (#117986)
An unparseable webhookUrl resolves to no path, and the monitor bails before it
creates ingress or registers the HTTP route. The gateway still published the
default path, and because this channel never sets connected, health evaluation
read healthy for the lifetime of the process while inbound delivery was dead.

Make resolveGoogleChatWebhookPath return string | null and have the gateway
publish lifecycle: blocked with lastError instead of a path. The status store
patch-merges, so the blocked branch clears webhookPath explicitly.
2026-08-02 07:01:24 -07:00
Peter Steinberger bd86a69d1c fix(line): preserve semantic indentation in fenced code (#117996)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-02 06:59:28 -07:00
Peter Steinberger d720d78fee fix(cli): preserve shell profiles when completion install fails (#117987)
* fix(cli): publish completion profiles atomically

Closes #117980

* fix(ci): restore environment variable budget

* fix(cli): preserve dangling completion profile symlinks

* fix(cli): narrow completion readlink failures
2026-08-02 06:36:43 -07:00
Vincent Koc 2de2fa3d67 Merge pull request #117978 from openclaw/fix/openai-quicksilver-terminal-precedence
fix(openai): preserve GPT-Live gateway error precedence
2026-08-02 20:56:33 +08:00
Dinesh H Suthar 35b00ddd14 fix(reply): preserve retryable final delivery recovery (#117597)
* fix(reply): preserve retryable final recovery

* fix(reply): preserve partial-delivery recovery markers

* fix(reply): keep delivery classification cycle-free

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-02 05:17:02 -07:00
Vincent Koc 8206bf1f85 Merge pull request #117971 from openclaw/test/qa-live-voice-talkback-20260802
test(qa): validate live inbound voice talkback
2026-08-02 20:05:44 +08:00
Dallin Romney e9b25aa21d refactor(cua-computer): replace daemon MCP with CUA Driver SDK (#117205)
* chore(cua-computer): freeze CUA Driver 0.14.1 fixtures

* refactor(cua-computer): use CUA Driver SDK directly

* fix(cua-computer): repair CUA CI checks

* style(cua-computer): format driver cleanup

* fix(cua-computer): migrate retired driver path

* fix(cua-computer): start direct driver sessions
2026-08-02 20:03:24 +08:00
Vincent Koc 54cb02151f test(qa): enforce live voice model 2026-08-02 19:54:38 +08:00
Vincent Koc f5712a930b test(qa): use supported OpenAI voice model 2026-08-02 19:50:32 +08:00
Vincent Koc 12d0d84262 test(qa): ignore deleted voice previews 2026-08-02 19:47:42 +08:00
juyaohuidt 096cd231ea fix(github-copilot): cancel unread device-flow error bodies before throwing (#112268)
* fix(github-copilot): cancel unread device-flow error bodies before throwing

postGitHubDeviceFlowForm now drops the unread response stream before it
raises on a non-OK HTTP status. GitHub OAuth error responses ship a JSON
body (`{error, error_description}`) that this helper never consumes, so
the underlying fetch connection previously stayed open holding the
payload until the caller's release() ran, keeping the device-flow socket
half-drained on every 4xx/5xx.

Mirrors the recently-merged qqbot/kilocode/tlon fixes for the same
'cancel body before throwing' pattern (#110008, #109950, #112059).

* style(github-copilot): clarify response release ordering

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-02 04:46:50 -07:00
zengLingbiao 397e09e1af fix(ollama): cancel unread auth-failure bodies in web search (#117473)
* fix(ollama): cancel unread auth-failure bodies in web search

(cherry picked from commit 881f191fac)

* fix(ollama): avoid waiting on captured response tees

* chore: keep contributor fix out of release changelog

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-02 19:44:19 +08:00
clawsweeper[bot] 8f46e31994 fix(nvidia): hide retired models while preserving live vendor discovery (#117620)
* fix(model-catalog): preserve manifest lifecycle metadata on refresh

* fix(nvidia): simplify Qwen model lifecycle

* test(nvidia): avoid map-spread lint

* docs(nvidia): clarify retired Qwen models

* fix(models): preserve NVIDIA lifecycle states

* fix(models): keep NVIDIA lifecycle plugin-owned

* fix(nvidia): retain fresh featured catalog models

---------

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@macos.shared>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-02 04:40:17 -07:00
Vincent Koc c904881f7d test(openai): cover gateway relay callback races 2026-08-02 19:36:22 +08:00
Vincent Koc 8c859e9606 fix(openai): preserve gateway relay error precedence 2026-08-02 19:34:57 +08:00
Vincent Koc cab7daa9c7 fix(qa): share bundled voice preflight fixture 2026-08-02 19:33:28 +08:00
Vincent Koc 5f62c18e62 test(qa): pin proven voice talkback model 2026-08-02 19:10:22 +08:00
Dallin Romney 55816c47d1 fix(slack): explicitly chunk native-data fallbacks (#117809)
* fix(slack): explicitly chunk native-data fallbacks

* fix(slack): honor one-character fallback chunks

* qa(slack): reconstruct chunked fallback evidence

* fix(slack): cap receipt-tracked fallbacks at 4k
2026-08-02 19:03:06 +08:00
Peter Steinberger 92c7400a54 perf(cli): finish cold read paths (#117957)
* perf(cli): finish cold read paths

* test(cli): satisfy cold path lint gates

* test(cli): fix cold path fixture typing
2026-08-02 03:59:24 -07:00
Vincent Koc 76791fe8c8 fix(qa): bundle shared voice fixture loader 2026-08-02 18:59:06 +08:00
Vincent Koc 9cf12734e6 fix(voice-call): keep active call when replacement setup fails (#117960)
* commit 'b65d010408f23da0247a0f91d8459a6549dab759':
  fix(voice-call): avoid retaining replaced bridges
  fix(voice-call): preserve predecessor on provisional close
  test(voice-call): cover provisional replacement close
2026-08-02 18:53:59 +08:00
Peter Steinberger 3c45fc15f4 refactor(google-meet): consolidate CLI resolution (#117949) 2026-08-02 03:53:10 -07:00
Vincent Koc b65d010408 fix(voice-call): avoid retaining replaced bridges 2026-08-02 18:44:26 +08:00
Vincent Koc e306a944d8 test(qa): isolate voice talkback flow coverage 2026-08-02 18:35:48 +08:00
Peter Steinberger 4d8fcf43a2 fix(wiki): accept --agent for agent-scoped vaults (#117943)
* fix(wiki): accept --agent for agent-scoped vaults

* test(wiki): split agent-scope CLI coverage
2026-08-02 03:33:15 -07:00
Vincent Koc b738c6e2d9 fix(voice-call): preserve predecessor on provisional close 2026-08-02 18:32:38 +08:00
Vincent Koc 67dc58cb62 test(voice-call): cover provisional replacement close 2026-08-02 18:32:37 +08:00
Vincent Koc 882a847670 test(qa): cover live voice talkback flow 2026-08-02 18:31:25 +08:00