Peter Steinberger
4976eb38ab
fix(ui): honor Gateway readiness abort and subscription ownership ( #117048 )
...
* fix(ui): keep canceled gateway waits retired
* test(ui): bind Gateway readiness test helper callback
* test(ui): isolate server locale preference singleton
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 15:06:55 -07:00
Jason (Json)
ae27d79364
fix(updater): harden launchd replacement timing ( #117030 )
...
* fix(updater): harden launchd replacement timing
* fix(updater): recover failed launchd replacement
2026-07-31 16:02:00 -06:00
Peter Steinberger
4bbcee0b8e
fix(gateway): preserve static asset HEAD representation metadata ( #117049 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 14:57:42 -07:00
xingzhou
2614251533
fix(gateway): abort embeddings when clients disconnect ( #116146 )
...
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-07-31 16:55:44 -05:00
Peter Steinberger
3dce01fa20
fix(googlechat): retain fallback thread continuity ( #117053 )
2026-07-31 14:54:16 -07:00
Peter Steinberger
383363e362
fix(cron): preserve lazy ownership and bounded notification lifetimes ( #117018 )
...
* fix(cron): preserve lazy ownership and bound notification lifetimes
* fix(cron): respect fs-safe policy boundary
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 14:38:21 -07:00
Peter Steinberger
21fba83254
fix: live updater no-op restarts healthy gateways ( #117038 )
...
* fix(updater): route managed health through overlay
* style: format live updater probe
* test: align live updater readiness types
2026-07-31 14:34:14 -07:00
Peter Steinberger
661afc22ac
fix(bedrock): release streaming clients ( #117039 )
2026-07-31 14:31:37 -07:00
Peter Steinberger
3cadc08593
fix(google): restore canonical Gemini and Vertex provider invariants ( #117042 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 14:31:34 -07:00
Peter Steinberger
a39f0b7ea3
fix(channels): preserve accepted LINE and Mattermost delivery ( #117024 )
...
* fix(channels): preserve accepted delivery identities
* fix(channels): satisfy accepted-delivery owner boundaries
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 14:28:55 -07:00
Peter Steinberger
24a0401c3d
fix(feishu): unify truthful delivery and media ownership ( #117023 )
...
* fix(feishu): preserve thread history and delivery contracts
* fix(feishu): route native images by verified content signatures
* fix(feishu): require authentic HEIC image signatures
* fix(feishu): retain accepted delivery when provider omits message ids
* fix(feishu): preserve accepted visibility across all delivery owners
* fix(feishu): recognize supported HEIC and TIFF local image paths
* test(feishu): prevent accepted-reply fixture state leaking between cases
* fix(feishu): preserve typed delivery contracts in CI
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 14:26:41 -07:00
Peter Steinberger
e4568f6bdd
fix(ui): isolate gateway observer lifecycles ( #117017 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 14:19:20 -07:00
Peter Steinberger
262f26355a
fix(tui): keep reset transitions isolated from stale input ( #116873 )
...
* fix(tui): fence reset session transitions
* fix(tui): explain blocked reset input
* test(tui): isolate reset transition PTY proof
* fix(tui): preserve input across session transitions
* test(tui): synchronize preserved reset draft proof
* test(tui): control reset submit timing
* test(tui): close reset PTY with EOF
* test(tui): exit reset PTY without submit buffering
* test(tui): synchronize reset PTY shutdown
* test(tui): widen reset PTY exit window
* test(tui): stabilize reset transition PTY proof
* test(tui): keep reset PTY harness bounded
* test(tui): split reset PTY fixture wiring
2026-07-31 14:18:34 -07:00
Peter Steinberger
f47542c592
fix(gateway): centralize streamed media descriptor ownership ( #117000 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 14:17:38 -07:00
Vincent Koc
e73250f54b
feat(plugins): externalize OpenCode provider ( #117035 )
...
* feat(plugins): externalize OpenCode provider
* docs: refresh OpenCode provider map
2026-08-01 05:07:35 +08:00
Patrick Erichsen
0cb6a17edc
fix(onboarding): restore skill dependency consent ( #116644 )
...
* fix(onboarding): restore skill dependency consent
* fix(onboarding): restore unified dependency selection
2026-07-31 14:05:38 -07:00
Peter Steinberger
bc1e95fb62
fix(streaming): preserve incomplete bracket tails in final replies ( #116983 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 13:45:07 -07:00
Peter Steinberger
d66b514a7e
fix: allow slower gateway readiness after updates ( #117032 )
2026-07-31 13:38:06 -07:00
xingzhou
688317628a
fix(plugin-state): avoid shared SQLite corruption when CLI starts during gateway runtime ( #113204 )
...
* fix(plugin-state): keep reads outside writable state lifecycle
* fix(state): keep open guard private
* fix(state): preserve cached read-only handles
* test(plugin-state): cover newer read-only schemas
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-01 04:30:55 +08:00
Peter Steinberger
b9dadca579
fix(cli): keep config file output raw under JSON logging ( #116968 )
...
* fix(cli): keep config path output raw
* test(cli): assert raw config path output
* docs(changelog): note raw config path output
* fix(cli): terminate config path output
* docs(changelog): defer config output note
2026-07-31 13:28:53 -07:00
Yiğit ERDOĞAN
c9932f3cca
fix(ai): malformed Anthropic stream frames expose raw event payloads ( #116938 )
...
The provider stream path interpolated the rejected SSE frame and its raw lines
into the thrown error, so text the model had generated reached logs and the
operator's error surface. The transport path already answers this exact condition
with the shared MALFORMED_STREAMING_FRAGMENT_ERROR_MESSAGE and keeps the
SyntaxError on cause, and the user-facing substitution in
formatRawAssistantErrorForUi matches that constant exactly. Align the provider
path with it so the same failure reads the same way on both paths.
The error-event branch is left as is: its payload is parsed downstream to build a
meaningful operator message, so redacting it would be a regression.
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-07-31 15:25:14 -05:00
Peter Steinberger
6d33976318
fix(qa): authenticate actual scenario execution evidence ( #117004 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 13:03:12 -07:00
Vincent Koc
e84e2a49fc
feat(plugins): externalize NovitaAI provider ( #117007 )
2026-08-01 03:53:46 +08:00
Anuj Bolewar
5a535d9fd4
fix(text): preserve fenced tool markers in visible-text sanitizer ( #116939 ) ( #116971 )
...
Co-authored-by: Anuj Bolewar <anuj@kermux.dev >
2026-07-31 14:52:15 -05:00
Peter Steinberger
8b5871e1b7
fix(channels): reset metadata memos with plugin lifecycle ( #117005 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:45:25 -07:00
Peter Steinberger
9e626c3837
fix(doctor): inspect packaged and full protocol UI freshness ( #117003 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:43:33 -07:00
Peter Steinberger
745b9a9ca9
fix(telegram): canonicalize topic mutation targets ( #117001 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:41:48 -07:00
Peter Steinberger
c572982556
fix(channels): preserve actionable presentation fallbacks ( #116990 )
...
* fix(channels): preserve actionable presentation fallbacks
* test(interactive): isolate presentation fallback regression coverage
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:37:30 -07:00
Peter Steinberger
ae4f1bbf26
fix(openai): enforce canonical image stream framing and terminal ownership ( #116999 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:35:23 -07:00
Peter Lee
daff73b7ad
fix(gateway): prevent crash loops from state DB schema migration errors ( #116733 )
2026-08-01 03:34:49 +08:00
SunnyShu
1b7aa90c97
fix(agents): preserve tool-call pairing after mid-turn abort ( #116642 )
...
* [AI] fix(agents): emit aborted tool results for skipped tool calls on mid-turn abort
When an abort fires mid-batch in executeToolCalls (after the assistant
message with tool_use is committed but before all tool_results are
written), the sequential and parallel dispatch loops break out and skip
the remaining tool calls. The committed assistant turn retains N tool_use
blocks but only M < N tool_results land in context.messages, leaving
orphaned tool_use that corrupts retries/continuation and triggers provider
400 errors on providers that do not synthesize missing results
(allowSyntheticToolResults=false, e.g. openai-completions/DeepSeek).
Emit aborted tool results (createErrorToolResult("Operation aborted")) for
the skipped tail in both executeToolCallsSequential and
executeToolCallsParallel so every tool_use keeps a paired tool_result.
This complements the existing write-side guard (which only covers
synthetic-enabled providers) and the persisted replay repair.
The aborted tail outcomes are routed through finalizeToolCallOutcome (via
a shared finalizeAbortedToolCall helper) so config.afterToolOutcome hooks
(audit, redaction, metadata, error-normalization) observe these skipped
calls just like every immediate or executed outcome, instead of bypassing
the outcome contract. Regression tests assert afterToolOutcome fires for
every skipped call in both dispatch modes.
Fixes #116379
Co-Authored-By: Maas <noreply@anthropic.com >
* [AI] fix(agents): emit tool_execution_start before aborted end for skipped calls
The abort-tail backfill added in #116379 emits tool_execution_end (and a
paired tool_result) for tool calls the dispatch loop never reached, but it
skipped the matching tool_execution_start. Channel/client subscribers that
pair start→end events received an end for an unknown tool-call id during
abort recovery.
Emit tool_execution_start for each skipped call before its aborted end/result,
mirroring the start event every dispatched (including immediate non-executed)
call already emits. Covers both sequential and parallel dispatch, with
regression assertions that every skipped call has a start before its end and
that start/end counts stay paired.
Co-Authored-By: Maas <noreply@anthropic.com >
* fix(agents): complete aborted tool tails safely
Fixes #116379
---------
Co-authored-by: Maas <noreply@anthropic.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-01 03:30:13 +08:00
Peter Steinberger
c29d2f8bae
fix(agents): preserve atomic oversized compaction fallback ( #116992 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:24:21 -07:00
Peter Steinberger
f4f990a91b
fix(agents): use canonical subagent terminal status across views ( #116991 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:22:17 -07:00
Vincent Koc
47c39b185c
Merge pull request #116621 from openclaw/fix/control-ui-settings-defaults
...
* commit 'f64807de7ad8ee1b0dba3c09b8fd6294c4376d05': (33 commits)
fix(ui): scope array header metadata
fix(ui): keep array section defaults visible
refactor(ui): share collection default presentation
fix(ui): keep default provenance proof type-safe
test(ui): prove default-valued preference reset sync
fix(ui): preserve reset provenance for invalid defaults
fix(ui): retry transient preference sync failures
test(ui): preserve inherited array siblings
test(ui): prove rejected preference retention
fix(ui): route default resets through removal
fix(ui): preserve unavailable theme provenance
fix(ui): show top-level object defaults
fix(ui): conceal sensitive collection defaults
fix(ui): make security provenance null-safe
fix(ui): preserve inherited collection defaults
fix(ui): type invalid memory backend options
fix(ui): preserve settings default ownership
fix(ui): repair invalid memory settings state
fix(ui): restore collection defaults
fix(ui): align appearance preference reset state
...
2026-08-01 03:19:56 +08:00
Peter Steinberger
fbb489fedf
fix(whatsapp): preserve transport envelope ownership ( #116989 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:19:17 -07:00
Peter Steinberger
629d3c2144
fix(agents): preserve Anthropic thinking token usage ( #116993 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:17:01 -07:00
Peter Steinberger
8978ef44f3
fix: updates repair additive agent database schema ( #116980 )
...
* fix: repair same-version agent schema updates
* fix: converge agent schema before doctor migrations
* fix: repair session keys before doctor state checks
* test: split additive schema migration coverage
2026-07-31 12:15:21 -07:00
Peter Steinberger
9b472bc1f4
fix(nodes): make photo capture outcomes truthful and atomic ( #116988 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:13:54 -07:00
Peter Steinberger
838e0781b8
fix(agents): give external attempt cancellation one owner ( #116994 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:11:31 -07:00
WhatsSkiLL
f0170ca238
Android: collapse sidebar search behind header action ( #116956 )
...
* feat(android): collapse sidebar search
* test(android): cover sidebar search toggle
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* chore(android): refresh sidebar i18n inventory
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* test(android): restore sidebar test clock
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* test(android): remove stateful sidebar UI test
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-31 12:10:43 -07:00
Peter Steinberger
652a47e644
fix(openai): use canonical multipart video submissions ( #116995 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 12:08:12 -07:00
Peter Steinberger
eb0087dc7c
fix(discord): connect mention-only bots without Message Content intent ( #116962 )
...
* fix(discord): support mention-only gateway intent
* chore: keep release changelog owner-only
2026-07-31 12:04:16 -07:00
Vincent Koc
8b93fd963c
feat(plugins): externalize Mistral provider ( #116919 )
...
* feat(plugins): externalize Mistral provider
* fix(update): preserve external provider models during repair
* chore(release): keep Mistral note in PR body
2026-08-01 03:04:12 +08:00
WhatsSkiLL
38d53e324d
fix(codex): preserve user home default for session catalog ( #116131 )
...
* fix-codex-preserve-user-home-session-catalog-default
* fix-codex-cover-catalog-reload-proof
* fix-codex-harden-catalog-home-proof
* fix-codex-enforce-proof-cleanup
* test(codex): require proof process shutdown
* fix(codex): honor supervised Unix control connections
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-31 12:01:17 -07:00
Vincent Koc
f64807de7a
fix(ui): scope array header metadata
2026-08-01 02:59:04 +08:00
Vincent Koc
db633878d7
fix(auto-reply): keep final replies after unmatched brackets ( #116979 )
...
Closes #116775
2026-08-01 02:57:08 +08:00
Peter Steinberger
8203220bb4
fix(openrouter): honor documented video job lifecycle ( #116986 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 11:53:29 -07:00
Vincent Koc
969f505d94
fix(ui): keep array section defaults visible
2026-08-01 02:52:18 +08:00
Peter Steinberger
be93d44275
fix(telegram): preserve explicit empty media captions ( #116984 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 11:46:34 -07:00
Vincent Koc
9057209ada
refactor(ui): share collection default presentation
2026-08-01 02:33:56 +08:00