Commit Graph

76745 Commits

Author SHA1 Message Date
Vincent Koc 92b4757227 fix(diagnostics): honor signal-specific OTLP protocols (#119708)
* fix(diagnostics): honor signal-specific OTLP protocols

* fix(docker): forward signal-specific OTLP protocols
2026-08-06 05:39:26 +08:00
Vincent Koc 7b8bba26c9 fix(qa): report cleanup failures truthfully (#119727)
* fix(qa): report cleanup failures truthfully

Punchcard-Session: silver-valley-valley-dt

* fix(qa): satisfy cleanup runner static checks

Punchcard-Session: silver-meadow-lantern-vx
2026-08-06 05:16:35 +08:00
Peter Steinberger e9e6ef3edb fix: keep completed actions visible after settled finalization (#119726)
* fix(agents): preserve settled finalization evidence

* fix(agents): retain cron denial after finalization
2026-08-05 14:04:05 -07:00
Vincent Koc 2db3431f4a fix(agents): rearm yielded requester wake (#119696)
Punchcard-Session: silver-valley-valley-dt
2026-08-06 03:59:51 +08:00
Vincent Koc 880dde979b fix(diagnostics): preserve telemetry during service shutdown (#119705)
* fix(diagnostics): preserve otel service shutdown lifecycle

* test(diagnostics): type OTEL unsubscribe callback

* test(diagnostics): normalize async stop assertion

* fix(plugins): preserve ordinary stop handling
2026-08-06 03:58:06 +08:00
sunlit-deng 66bfafa416 fix(clickclack): preserve MIME extension for unnamed uploads (#119646) 2026-08-05 12:52:07 -07:00
Vincent Koc 5eb7eddce6 fix(memory): keep post-ready RPCs responsive (#119710)
Punchcard-Session: coral-workshop-workshop-3f
2026-08-06 03:35:32 +08:00
Peter Steinberger d6233c29b9 fix(browser): preserve locale, timezone, and device overrides (#119695)
* fix(browser): make device emulation transitions atomic

* test(browser): verify device presets in packaged profile

* fix(browser): retain page emulation overrides
2026-08-05 12:29:26 -07:00
Yuval Dinodia e69c3df236 fix(agents): stop messaging dedupe from dropping final replies that quote a short tool send (#118178)
The forward substring check in isMessagingToolDuplicateNormalized treated any
reply containing a prior message-tool send as a duplicate, with no length
floor. A short interim update sent via the message tool then suppressed the
entire final reply that restated it, and the user never received the answer.
The reverse direction already carried a 0.5 length ratio floor. Apply the same
floor to the forward direction so a reply is only deduped when the prior send
covers at least half of it.
2026-08-05 11:21:40 -07:00
Peter Steinberger 9b02ea3c7e test(agents): batch code mode budget proof (#119699)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-05 11:20:34 -07:00
Vincent Koc 824d170680 fix(memory): keep gateway RPCs responsive during startup (#119676)
* fix(memory): defer startup manager warmup

* test(plugins): register memory stop hook contract
2026-08-06 02:07:57 +08:00
Jason (Json) 462f8c4f29 improve(ui): trail transient session status beside row actions (#119560)
* improve(ui): trail transient session status

* fix(ui): swap running state for row actions on hover

* fix(ui): reserve only visible sidebar state width

* fix(ui): ensure actions override state spacing

* test(ui): await activated service-worker controller
2026-08-05 12:06:07 -06:00
Peter Steinberger 1f0269eda5 refactor(msteams): consolidate channel action target resolution (#119632)
* refactor(msteams): consolidate channel action target resolution

* fix(msteams): honor configured group read policy

* fix(msteams): explain delegated channel access recovery
2026-08-05 10:52:13 -07:00
ℭ𝔥𝔢𝔯𝔫𝔬𝔣𝔣 e17bc58877 fix: tail context answers the current user message (#117364)
* fix(agents): apply image context to current turn

* fix(agents): align runtime context with prompt order

* fix(agents): make turn context position independent

* fix(agents): bind internal context to the active user turn

Keep current-turn runtime context position-independent while preserving the shared privacy notice, runtime events, prompt-cache placement, and historical preface sanitization. Consolidate header detection in its existing owner and retain the original real turn-boundary regression.

Fixes #110672

Co-authored-by: chernoff-code <221717140+chernoff-code@users.noreply.github.com>

---------

Co-authored-by: chernoff-code <221717140+chernoff-code@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-05 10:44:28 -07:00
Peter Steinberger 6aee2792d9 fix(whatsapp): exercise descriptor-safe credential persistence (#119621) 2026-08-05 10:36:36 -07:00
Darren2030 d8c2407815 fix(diagnostics-otel): route OTLP endpoints by signal (#101655)
Keep shared endpoint routing signal-aware while preserving explicit signal-specific URLs exactly. Cover the resolver through mocked constructors and real OTLP/HTTP trace, metric, and log exporters.

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-06 01:33:37 +08:00
Peter Steinberger 412a1a3167 refactor(skills): consolidate workshop transcript and record normalization (#119643) 2026-08-05 10:26:03 -07:00
Peter Steinberger 414616f583 fix(video): harden DashScope task and media lifecycle (#117303)
* fix(video): validate DashScope task outputs and release request guards

* fix(video): validate DashScope task outputs and release request guards

* refactor(video): use shared empty-asset validation

* fix(video): align DashScope Wan request contracts

* refactor(video): use shared empty-asset validation

* fix(video): enforce catalog modes before provider calls

* fix(video): keep model checks fallback-aware

* fix(video): centralize fallback-aware capability checks

* docs(video): document Wan 2.7 fixed audio

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-05 10:19:09 -07:00
Peter Steinberger 0a99a85ef4 refactor(transcripts): consolidate persistence and export ownership (#119634) 2026-08-05 10:16:15 -07:00
ragesaq 0f65e5e02f fix: preserve ClickClack discussion state contracts (#118851)
Why: managed discussion reconciliation must tolerate current ClickClack response shapes without persisting undefined plugin state or stale display titles.

Co-authored-by: Chisel <chisel@psiclawops.dev>
2026-08-05 18:15:10 +01:00
Vincent Koc a3419d4a4b fix(matrix): retire shared E2EE clients safely (#119570)
* fix(qa): bound Matrix E2EE client shutdown

Punchcard-Session: silver-valley-valley-dt

* fix(qa): drain Matrix decryptions before SDK shutdown

Punchcard-Session: silver-valley-valley-dt

* fix(matrix): retire shared E2EE clients safely

Punchcard-Session: silver-valley-valley-dt

* fix(matrix): satisfy lifecycle lint gate

Punchcard-Session: silver-valley-valley-dt
2026-08-06 01:14:31 +08:00
Peter Steinberger 9ef94e4ef9 refactor(cron): unify catch-up persistence and payload encoding (#119636) 2026-08-05 10:07:22 -07:00
Peter Steinberger 7e5c02ccfe refactor(ui): centralize composer attachment and capability controls (#119650) 2026-08-05 09:57:48 -07:00
Peter Steinberger 36554c2820 refactor(daemon): consolidate managed service lifecycle ownership (#119647) 2026-08-05 09:49:12 -07:00
Peter Steinberger 21b6478c6f fix(browser): honor explicit navigation timeouts across browser drivers (#119654)
* fix(browser): propagate bounded navigation timeouts end to end

* fix(browser): share shipped navigation limits across all drivers
2026-08-05 09:44:27 -07:00
Peter Steinberger 1eca944ed6 refactor(outbound): unify conversation binding ownership (#119638) 2026-08-05 09:41:02 -07:00
Peter Steinberger b0d8dd3866 fix(qa): reject deleted replies and failed streaming outcomes (#119660) 2026-08-05 09:30:42 -07:00
Vincent Koc eba4487b3a improve(anthropic): reduce session catalog startup memory (#119619)
* perf(anthropic): lazy-load session catalog runtime

Punchcard-Session: coral-workshop-workshop-3f

* fix(anthropic): keep session catalog helpers private

Punchcard-Session: coral-workshop-workshop-3f

* docs(plugin-sdk): document catalog create target

Punchcard-Session: coral-workshop-workshop-3f

* fix(plugins): continue catalog target selection

Punchcard-Session: coral-workshop-workshop-3f
2026-08-06 00:28:56 +08:00
Peter Steinberger 89014305f1 fix(telegram): reject retired native button input
Prevent stale top-level buttons arguments from silently sending text-only Telegram messages. Point model guidance and docs to typed presentation actions, and reject retired input before delivery.
2026-08-05 21:57:36 +05:30
Peter Steinberger 221df8cdc6 fix(testing): resolve Playwright browser cache before UI install (#119658) 2026-08-05 09:25:24 -07:00
Masato Hoshino 33eac548de fix(system-agent): a failed reset leaves the old conversation in context (#116247)
* fix(system-agent): a failed reset leaves the old conversation in context

`openclaw.chat` with `reset: true` discards the live session and disposes its
engine before verifying inference and building the welcome. The durable reset
marker was only written after both of those steps, so an inference outage during
a reset destroyed the session without recording the boundary. The next ordinary
session then seeded model context from the pre-reset transcript, because seeding
reads only the turns after the newest reset marker.

Record the boundary in a finally around the disposal, so it survives both a
rejected disposal and a replacement that fails to initialize, and drop the later
write. Disposal still runs first, so a failed marker write cannot leak the engine.

* fix(system-agent): persist resets before discarding live sessions

Persist the durable reset marker before deleting the live session so a failed SQLite write leaves the session, engine, and pending approval untouched. Preserve the original real-SQLite privacy-boundary regression coverage.

Co-authored-by: Masato Hoshino <g515hoshino@gmail.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-05 09:25:16 -07:00
Peter Steinberger b6a4e6e2a6 refactor(agents): unify media generation task lifecycles (#119645)
* refactor(agents): unify media generation task lifecycles

* fix(agents): defer media duplicate guard lookup until action execution
2026-08-05 09:22:45 -07:00
Peter Lee 3d669c7616 fix(sessions): maxDiskBytes 0 no longer deletes all session history (#119422)
* fix(sessions): treat maxDiskBytes 0 as disabled disk budget

* fix(sessions): treat zero maxDiskBytes as disabled budget and document the contract
2026-08-05 09:16:58 -07:00
Peter Steinberger 1b5dbd3bb4 fix(heartbeat): deliver structured replies and clear completed recovery (#119655)
* fix(heartbeat): preserve structured replies and delivery recovery

* test(heartbeat): isolate structured delivery regressions
2026-08-05 09:15:58 -07:00
Peter Steinberger c2215d0504 refactor(gateway): consolidate chat abort authorization (#119642) 2026-08-05 09:15:31 -07:00
Peter Steinberger 9e47563d78 test(skills): reuse workshop state fixtures (#119673)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-05 09:14:50 -07:00
Jason (Json) 40b0b3da39 fix(diagnostics): bound recent phase attribution (#119625) 2026-08-05 10:14:33 -06:00
Peter Steinberger 36dbbd72ed refactor(cli): consolidate skill workshop command dispatch (#119640) 2026-08-05 09:07:06 -07:00
Peter Steinberger 21bc2c43f2 fix(discord): explain failed form openings instead of silently doing nothing (#119657)
* fix(discord): report failed modal presentation to the operator

* refactor(discord): reuse canonical interaction failure recovery
2026-08-05 09:02:59 -07:00
Peter Steinberger 40a3bd2e10 refactor(agents): unify guarded subagent lifecycle cleanup (#119637) 2026-08-05 09:00:50 -07:00
Serghei 9b2328dc37 fix(gateway): chat clients lose the last streamed text when a run ends in error (#119556)
…s in error

The 150 ms delta throttle in emitChatDelta withholds the most recent chunk
without scheduling it, leaving it in the run buffer for a later event to
deliver. emitChatTerminal exists to be that event: it flushes the buffer
before emitting the terminal frame.

On the error terminal it cannot, because the buffer is cleared at the top of
the branch, before finalizeLifecycleEvent runs. The flush then resolves empty
text and no-ops, so the withheld tail never reaches the chat channel, and a
terminal that classifies as a cancellation resolves its message to undefined.

The clear is redundant on the immediate branch: finalizeLifecycleEvent already
clears the buffer itself, after emitChatTerminal has flushed and resolved the
terminal message. Removing it there fixes both the missing delta and the
missing message. The deferred retry-grace branch still needs the clear so a
fallback attempt cannot merge onto the failed attempt's text, so flush before
clearing there, matching the pre-tool and pre-item flush sites in the same
function.

The end terminal was already correct, which is why this stayed invisible.

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-05 11:00:22 -05:00
Vincent Koc 113af2fcbd fix(ci): preserve stdin through Docker heartbeat logging 2026-08-05 23:56:36 +08:00
WhatsSkiLL 238c8bfc23 fix(android): show active session status in sidebar (#118624) 2026-08-05 11:55:10 -04:00
Peter Steinberger 3ec8af66d1 refactor(openai): simplify ChatGPT OAuth credential flow (#119628) 2026-08-05 08:51:41 -07:00
Vincent Koc ebae858817 fix(qa): restart after migration convergence 2026-08-05 23:43:07 +08:00
Peter Steinberger 6edf4a2b7e improve: reduce worker tool startup imports (#119644)
* perf(worker): narrow core tool imports

* fix(worker): preserve generic tool factories

---------

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-05 08:42:50 -07:00
Peter Steinberger 6269be70c5 refactor(memory): consolidate sync and dreaming helpers (#119633)
* refactor(memory): consolidate sync and dreaming helpers

* test(memory): track descriptor-backed promotion writes
2026-08-05 08:41:35 -07:00
Shakker 0b68f8e1ed refactor: isolate ClickClack binding retention (#119358) 2026-08-05 16:38:59 +01:00
Shakker 81ad24a158 fix: bound detached ClickClack discussion bindings 2026-08-05 16:38:59 +01:00
Shakker 586f32fe25 fix: preserve concurrent ClickClack attachment refreshes 2026-08-05 16:38:59 +01:00