Commit Graph

66940 Commits

Author SHA1 Message Date
Peter Steinberger
e500a4f017 feat: session context menu (kebab + right-click) on the Sessions page (#102564)
* feat(ui): add session context menu to sessions page rows

Extract the sidebar session menu into a shared <openclaw-session-menu>
component and open it from a kebab button or row right-click on the
Sessions page, replacing the per-row unread/fork/pin/archive/workboard
icon buttons. Adds Open chat, Rename, Move to group, and per-row Delete
to the page; guards (main/global/active-run) now flow through
canArchiveSessionRow on both surfaces.

* fix(ui): retarget gateway session after deleting the current session from the sessions page

Deleting the currently selected session via the new row menu (or the
bulk bar) left gateway.snapshot.sessionKey pointing at the deleted key;
fall back to the agent main session, mirroring the archive path and the
sidebar delete path.
2026-07-09 10:15:08 +01:00
lsr911
0de5d37f92 fix(logging): keep bounded log text UTF-16 safe (#102560)
* fix(logging): use truncateUtf16Safe in diagnostic log text clamp

Replace naive .slice(0, maxChars) with truncateUtf16Safe() in
clampDiagnosticLogText() — the core helper used by all diagnostic
log output (sanitizeDiagnosticLogText, formatDiagnosticAttributes,
etc.). This prevents surrogate pair splitting across the entire
diagnostic logging subsystem.

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

* fix(logging): preserve UTF-16 in bounded log text

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 10:11:27 +01:00
wings1029
f7cc6ebe1e fix(agent-core,memory-core): keep compaction summary and memory snippet truncation UTF-16 safe (#102542)
* fix(agent-core,memory-core): keep compaction summary and memory snippet truncation UTF-16 safe

* fix: make compaction and memory truncation UTF-16 safe

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 10:08:11 +01:00
Josh
b8a801930a chore: align iOS icons with favicon mark (#101411)
* chore: align iOS icons with favicon mark

* fix(ios): restore distinct debug app icons

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 10:07:58 +01:00
Peter Steinberger
f141af7fd7 fix(ui): keep streamed talk voice-turn transcripts readable (#102573)
* fix(ui): keep streamed talk voice-turn transcripts readable

Talk voice turns collapsed to one character per line in the macOS app
(WKWebView) while streaming: WebKit never re-runs shrink-to-fit intrinsic
sizing for a grid flex-item as its content grows, so the turn froze at
first-delta width. Convert the turn to a flex row (same visual layout).

Assistant transcript deltas also merged through the user-ASR word-boundary
spacing heuristic, mangling verbatim fragments ("Chat G PT"). Assistant
entries now concatenate fragments verbatim, space only sentence-punctuation
joins, and accept both full-transcript and tail-fragment finals.

Fixes #102556

* fix(ui): keep assistant talk fragments strictly verbatim

Drop the sentence-punctuation separator: it invented characters in real
content (Version 1. 2, docs.openclaw. ai) and Google Live tail-finals
could never heal it. The punctuation-spacing heuristic remains user-only.
2026-07-09 10:07:14 +01:00
lsr911
3ac7729f4c fix(mistral): use truncateUtf16Safe for error text truncation (#102539)
* fix(mistral): use truncateUtf16Safe for error text truncation

Replace naive .slice(0, maxChars) with truncateUtf16Safe() in
truncateErrorText() to prevent surrogate pair splitting in
Mistral provider error messages shown to users.

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

* fix(ai): keep Mistral errors UTF-16 safe

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 10:03:51 +01:00
mahmoud
32510a3225 improve(ios): show connection progress and errors prominently in onboarding gateway step (#101921)
* fix(ios): surface connection progress and errors prominently in onboarding gateway step

* fix(ios): surface onboarding validation failures

* chore(ios): sync native string inventory

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 10:03:26 +01:00
Ayaan Zaidi
e975d49238 fix(agents): skip wham probe when oauth access token is locally expired 2026-07-09 14:29:38 +05:30
Ayaan Zaidi
1ad346e465 test(codex): align shared-client version fixtures with the 0.143.0 floor 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
8589759818 fix(codex): keep terminal idle backstop gated during in-flight app-server requests 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
4af2ca0a4d fix(agents): extend live CLI no-output watchdog to the blocked-tool floor 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
bb1da73b14 fix(codex): fail detached-but-leased clients on suspect retirement 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
80b2b709ca fix(codex): scope client fan-out to terminal liveness kills 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
ca3f247eb2 fix(codex): fan out app-server liveness retirement 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
e4949996d1 fix(agents): apply provider-class idle ceilings to explicit run budgets 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
048f2096d2 fix(agents): keep provider-class idle tiers under agent budgets and cron 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
e00236d20c docs: correct cron self-hosted idle watchdog wording 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
28e53b6817 fix(config): allow timeoutSeconds 0 and bound local stream creation 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
215be4e4ee fix(agents): keep finite LLM idle watchdog under unlimited run budgets 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
c2789b52a7 fix(agents): respect the blocked-tool floor in stale takeover and steer gates 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
480b5cbc67 fix(agents): expire live-handle stuck recovery as run_stalled 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
eedeb1eccb fix(agents): fall stale_run steer refusals through to direct delivery 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
969efdac4f fix(agents): make run liveness evidence-based 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
953f1c7d0c fix(auto-reply): stamp activity per event and deprecate recovery exports 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
f178553df6 refactor(auto-reply): drop injection activity stamp and orphaned recovery exports 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
4cbe49ba88 fix(auto-reply): set run_stalled before backend cancel in stale expiry 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
ad32cc3607 fix(auto-reply): stamp CLI activity once at the lifecycle bridge seam 2026-07-09 14:26:05 +05:30
Ayaan Zaidi
19803a147f fix(auto-reply): bound terminal reply-run settle and reclaim stale lanes 2026-07-09 14:26:05 +05:30
Peter Steinberger
efe705b889 feat(ui): show microphone activity in Talk mode (#102559) 2026-07-09 09:55:42 +01:00
Ted Li
f984209f54 fix: keep Gemini thinking disabled after clamp (#101832)
* fix: keep Gemini thinking disabled after clamp

* fix: preserve clamped Gemini thinking in wrapper

* test(ai): cover generic Gemini clamp to off

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:54:52 +01:00
Peter Steinberger
9269a27f18 feat(ui): redesign settings as a full-page takeover with sidebar navigation (#102549)
* feat(ui): redesign settings as a full-page takeover with sidebar navigation

* chore(ui): regenerate i18n metadata after rebase
2026-07-09 09:51:52 +01:00
Supsumintong
574f131554 fix(web-fetch): report exact-limit response bodies as complete, not truncated [AI-assisted] (#102389)
* fix(web-fetch): report exact-limit response bodies as complete, not truncated

* fix(web-fetch): skip zero-byte chunks when confirming overflow past the byte cap

* fix(web-fetch): keep uncertain capped bodies truncated

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:51:46 +01:00
qingminlong
5a3422ea8d fix(schema): resolve large local refs in schema arrays (#102195)
* fix(schema): resolve large local refs in schema arrays

* fix(schema): type large local ref fixture

* style(schema): format large local ref regression

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:51:30 +01:00
lsr911
6a3834d41d fix(memory-core): use truncateUtf16Safe for diary context truncation (#102524)
* fix(memory-core): use truncateUtf16Safe for diary context truncation

* test(memory-core): cover utf16 diary truncation

* refactor(memory-core): use plugin sdk text runtime

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:49:21 +01:00
Harjoth Khara
85aa26d34f fix(agent-core): stop canceled parallel tools from starting (#102276)
* fix(agent-core): skip prepared tools after abort

* docs(agent-core): explain parallel abort guard

* docs(changelog): note parallel cancellation fix

* docs(changelog): leave release notes release-owned

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:48:11 +01:00
John McChesney TenEyck Jr
ccdb60e5db fix: show iOS chat activity after foreground refresh (#102309)
* Preserve iOS chat activity on foreground refresh

Show an activity indicator when foreground history reports session activity without a chat in-flight snapshot, while keeping unanswered turns blocked and clearing the fallback state on answers, terminal events, session changes, and timeout.

* fix(ios): preserve foreground run ownership

* chore(ios): sync native string inventory

* chore: keep release changelog owned

---------

Co-authored-by: Your Name <you@example.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:45:35 +01:00
qingminlong
a5f5282816 fix(scripts): report startup help stream errors when pipes fail (#102436)
* fix(scripts): fail startup help rendering on stream errors

* fix(scripts): preserve startup render failure provenance

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:43:40 +01:00
Peter Steinberger
ecc2cffad8 improve(ui): keep sidebar sessions inline and draggable (#102558)
* feat(ui): add drag-managed sidebar session groups

* chore: keep release notes in PR body
2026-07-09 09:40:53 +01:00
wangmiao0668000666
51b4e78c33 fix(google-meet): bound Google API requests (#102149)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:39:34 +01:00
Peter Steinberger
42a8679c4d fix: restore release validation on main (#102516)
* test(qqbot): assert approval fence exactly

* fix(release): wait for ClawHub publish logging

* fix(ci): repair Bun global install smoke

* test(slack): fix app identity fixture
2026-07-09 09:39:08 +01:00
lsr911
32de666163 fix(codex): use truncateUtf16Safe for tool transcript output truncation (#102522)
* fix(codex): use truncateUtf16Safe for tool transcript output truncation

Replace naive .slice(0, N) with truncateUtf16Safe() in event-projector
tool transcript output text to prevent surrogate pair splitting.

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

* fix(codex): keep streamed output utf16-safe

* refactor(codex): use plugin sdk text runtime

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:37:07 +01:00
Peter Steinberger
8a7242461c fix(nodes): restore Mac app allowlist execution (#102536)
* fix(nodes): restore macOS app allowlist execution

* chore: keep node fix out of release changelog
2026-07-09 09:36:36 +01:00
lsr911
145b71f57e fix(oc-path): use truncateUtf16Safe for error message path truncation (#102527)
* fix(oc-path): use truncateUtf16Safe for error message path truncation

Replace naive .slice(0, 80) with truncateUtf16Safe() at three
error-reporting call sites to prevent surrogate pair splitting
in oc:// path validation error messages.

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

* test(oc-path): cover utf16 error truncation

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:35:17 +01:00
lsr911
ed9ce1c584 fix(discord): use truncateUtf16Safe for deploy error body truncation (#102525)
* fix(discord): use truncateUtf16Safe for deploy error body truncation

* test(discord): cover utf16 deploy errors

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:33:46 +01:00
lsr911
49a5b6a235 fix(compaction): use truncateUtf16Safe for post-compaction context text (#102515)
* fix(compaction): use truncateUtf16Safe for post-compaction context text

Replace naive .slice(0, maxContextChars) with truncateUtf16Safe()
to prevent surrogate pair splitting in post-compaction context
summaries sent to the model.

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

* test(compaction): prove context UTF-16 boundary

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:32:05 +01:00
lsr911
8c608ae674 fix(gateway): use truncateUtf16Safe for config path display truncation (#102513)
* fix(gateway): use truncateUtf16Safe for config path display truncation

Replace naive .slice(0, 117) with truncateUtf16Safe() to prevent
surrogate pair splitting in config path sanitization output.

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

* test(gateway): prove config path UTF-16 boundary

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:29:57 +01:00
lsr911
720aeb1547 fix(config): use truncateUtf16Safe for allowed-values hint text (#102512)
* fix(config): use truncateUtf16Safe for allowed-values hint text

Replace naive .slice(0, N) with truncateUtf16Safe() to prevent
surrogate pair splitting in config validation hint messages
shown to users.

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

* test(config): prove UTF-16 allowed-value hint boundary

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:28:25 +01:00
xingzhou
b23fdcfac9 fix(codex): avoid broken emoji in dynamic tool timeout logs (#102509)
* fix(codex): keep dynamic tool log fields UTF-16 safe

* test(codex): narrow dynamic tool response item

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:26:22 +01:00
QiuYuang
d5a31888ed fix(memory-host): reject queued worker requests on shutdown (#102451)
* fix(memory-host): reject queued worker requests on shutdown

* fix(memory-host): settle queued requests on shutdown

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:26:05 +01:00
Peter Steinberger
c96163b6ca refactor(ui): drop the divider line above the sidebar More section (#102531) 2026-07-09 09:25:08 +01:00