Commit Graph

66965 Commits

Author SHA1 Message Date
Peter Steinberger
87fe266c5e fix: preserve emoji at remaining bounded-text edges (#101711)
* fix: keep remaining text bounds UTF-16 safe

Co-authored-by: ben.li <li.yang6@xydigit.com>
Co-authored-by: 0668001336 <wang.lizhang@xydigit.com>
Co-authored-by: Alix-007 <li.long15@xydigit.com>

* docs: credit bounded Unicode fixes

* test: update UTF-16 browser import boundary

* chore: leave Unicode note to release changelog

---------

Co-authored-by: ben.li <li.yang6@xydigit.com>
Co-authored-by: 0668001336 <wang.lizhang@xydigit.com>
Co-authored-by: Alix-007 <li.long15@xydigit.com>
2026-07-07 15:48:21 +01:00
Peter Steinberger
ed28c57e20 fix(codex): validate maintained app-server types (#101726)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-07 15:48:08 +01:00
Kevin Lin
72ca911e3c fix(release): allow SHA-only extended-stable preflight (#101466) 2026-07-07 07:45:55 -07:00
Vincent Koc
fdc7892a6e refactor: localize internal implementation types (#101731) 2026-07-07 07:41:04 -07:00
Vincent Koc
c8d95da14c refactor: localize file-private exports (#101701) 2026-07-07 06:57:19 -07:00
Peter Steinberger
a7faec8ca1 fix(gateway): support native Windows exec approvals (#101669)
* fix(gateway): support native Windows exec approvals

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>

* chore: defer changelog entry to release

* test: use tracked approvals temp directories

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-07 14:50:59 +01:00
Peter Steinberger
176fee5d07 fix: prevent garbled emoji at remaining text limits (#101685)
* fix: keep remaining bounded text UTF-16 safe

Co-authored-by: 0668000787 <ma.weibin@xydigit.com>
Co-authored-by: ben.li <li.yang6@xydigit.com>
Co-authored-by: 廖石荣 0668000909 <liao.shirong@xydigit.com>
Co-authored-by: 陈志强0668000989 <chen.zhiqiang1@xydigit.com>

* test: use tracked prompt template fixture

---------

Co-authored-by: 0668000787 <ma.weibin@xydigit.com>
Co-authored-by: ben.li <li.yang6@xydigit.com>
Co-authored-by: 廖石荣 0668000909 <liao.shirong@xydigit.com>
Co-authored-by: 陈志强0668000989 <chen.zhiqiang1@xydigit.com>
2026-07-07 14:49:15 +01:00
Alix-007
936136a707 fix(channels): prevent metadata caches from growing without bound (#101650)
* fix(discord): cap channel info cache size

* fix(channels): consolidate bounded metadata caches

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-07-07 06:47:37 -07:00
Peter Steinberger
b95b9e4487 test: remove stale native i18n sentinel (#101689) 2026-07-07 14:32:49 +01:00
Happy Dog Support Bot
e591dcfa82 fix(voice-call): persist complete realtime transcripts (#84161)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Happy Dog Support Bot <bot@happydog.digital>
2026-07-07 14:13:02 +01:00
Shakker
e94fde2919 refactor: remove obsolete chat display mocks (#101682)
Related: #101647

## What Problem This Solves

Removes stale Control UI test mocks that modeled helper exports no longer exposed by the chat display module.

## Why This Change Was Made

The chat message tests no longer reach the display module, so their mock was removed. The chat view tests retain only the fallback asset mock and exercise the canonical avatar helpers directly.

## User Impact

No user-visible behavior change. Tests now reflect the current module ownership without duplicating avatar logic.

## Evidence

- Focused Testbox run: 2 files, 209 tests passed.
- Testbox: `tbx_01kwyatxdvb64ncvbn9ertg6fa`
- Actions run: https://github.com/openclaw/openclaw/actions/runs/28868305075
- `git diff --check`: passed.
- Codex autoreview: no actionable findings.
2026-07-07 14:12:33 +01:00
Vincent Koc
cd86107a10 refactor(android): remove superseded app surfaces (#101680) 2026-07-07 06:07:36 -07:00
xingzhou
4e29b2f5ab fix(slack): bound conversation info cache (#101562) 2026-07-07 05:55:00 -07:00
Vincent Koc
407443264c refactor: localize internal reply and plugin types (#101666) 2026-07-07 05:51:47 -07:00
Peter Steinberger
a9582a1bb6 fix: keep bounded text truncation UTF-16 safe (#101654)
* fix: keep bounded text UTF-16 safe

Co-authored-by: wm0018 <wu.min5@xydigit.com>
Co-authored-by: 廖石荣 0668000909 <liao.shirong@xydigit.com>
Co-authored-by: 0668000787 <ma.weibin@xydigit.com>

* chore: keep UTF-16 release note in PR body

---------

Co-authored-by: wm0018 <wu.min5@xydigit.com>
Co-authored-by: 廖石荣 0668000909 <liao.shirong@xydigit.com>
Co-authored-by: 0668000787 <ma.weibin@xydigit.com>
2026-07-07 13:44:32 +01:00
Vincent Koc
60f0749b7f refactor(ui): remove duplicate helper paths (#101647) 2026-07-07 05:21:29 -07:00
Vincent Koc
2ba622ca30 refactor(ui): trim unused control UI helpers (#101632) 2026-07-07 04:55:28 -07:00
maweibin
4d5cd05a64 fix(tasks): keep emoji / surrogate pairs intact during terminal output truncation (#101600)
* fix(tasks): keep emoji / surrogate pairs intact during terminal output truncation

.slice() counts UTF-16 code units; use Array.from() to count full
code points instead, preventing lone surrogates in task list output.

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

* fix(tasks): preserve terminal column width

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 12:54:53 +01:00
Wynne668
cd0d570164 fix(gateway): keep session history stream errors handled (#101571) 2026-07-07 04:54:38 -07:00
Peter Steinberger
7c0a7c8be2 fix(agents): keep exec visible for lean local models (#101607)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-07 12:46:26 +01:00
Peter Steinberger
bd7da9decd fix(browser): keep upload errors specific (#101465) 2026-07-07 12:35:27 +01:00
Vincent Koc
fee997c8ad refactor(memory): trim unused host SDK exports (#101604) 2026-07-07 04:33:43 -07:00
maweibin
f6ffe89df6 fix(control-ui-assets): keep emoji / surrogate pairs intact during last-line truncation (#101591)
* fix(control-ui-assets): keep emoji / surrogate pairs intact during last-line truncation

.slice(0, 239) counts UTF-16 code units; an emoji straddling the
cut point produces a lone surrogate rendering as  in WebUI assets.

Use [...last] spread to count full code points instead.

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

* fix(control-ui-assets): preserve diagnostic length cap

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 12:32:21 +01:00
Vincent Koc
1805f7ee17 chore(plugin-sdk): refresh api baseline hash 2026-07-07 13:30:20 +02:00
Peter Steinberger
2522ccac7d fix(file-transfer): handle child output stream errors (#101590)
* fix(file-transfer): handle child output stream errors

Co-authored-by: sunlit-deng <yang.jiajun1@xydigit.com>

* test(file-transfer): canonicalize stream-error temp path

---------

Co-authored-by: sunlit-deng <yang.jiajun1@xydigit.com>
2026-07-07 12:28:35 +01:00
wm0018
d26a842799 fix(auto-reply): keep suppressed reply text preview truncation UTF-16 safe (#101575)
* fix(auto-reply): keep suppressed reply text preview truncation UTF-16 safe

String.prototype.slice at offset 160 can split surrogate pairs in
reply text previews logged for suppressed auto-replies. Replace raw
slice(0, 160) with truncateUtf16Safe — already imported in this file.

* test(auto-reply): exercise suppressed preview logging

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 12:25:53 +01:00
Peter Steinberger
3901094ace fix(browser): cancel Chrome MCP requests on crash (#101454)
* fix(browser): cancel Chrome MCP requests on crash

* test(browser): cover request budget options
2026-07-07 12:22:31 +01:00
Vincent Koc
988f30e30e refactor(memory): trim unused Windows spawn exports (#101594) 2026-07-07 04:17:32 -07:00
Peter Steinberger
a853489b3d fix(agents): clean up ls cancellation listeners (#101588)
Co-authored-by: 0668001336 <wang.lizhang@xydigit.com>
2026-07-07 12:15:49 +01:00
lsr911
42fc9e8a92 fix(acp): use truncateUtf16Safe for event mapper error text truncation (#101535)
* fix(acp): use truncateUtf16Safe for event mapper error text truncation

.slice(0, 100) on ACP event argument values can split surrogate
pairs from emoji or CJK text, producing U+FFFD in error/warning
notices shown to operators.

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

* test(acp): cover UTF-16-safe tool titles

* refactor(acp): keep event mapper import leaf-only

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 12:10:28 +01:00
Peter Steinberger
3db8174f0e fix(gateway): keep plugin approval text UTF-16 safe (#101579)
Co-authored-by: wm0018 <wu.min5@xydigit.com>
2026-07-07 12:08:53 +01:00
Peter Steinberger
46276312d6 fix(auth): clean OAuth contention diagnostics (#101573)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-07 12:08:50 +01:00
Peter Steinberger
0979b51f49 fix(session-memory): preserve sibling paths in logs (#101577)
Co-authored-by: 陈宪彪0668000387 <chen.xianbiao@xydigit.com>
2026-07-07 12:08:08 +01:00
Peter Steinberger
4172de867c fix: preserve session labels across rollover (#101576)
Co-authored-by: ZengWen-DT <290981215+ZengWen-DT@users.noreply.github.com>
2026-07-07 12:07:25 +01:00
Peter Steinberger
2fe39692ad fix(gateway): preserve UTF-16 plugin approval fields (#101580)
* fix(gateway): keep plugin approval title and description truncation UTF-16 safe

Node.js String.prototype.slice cuts at UTF-16 code unit boundaries,
which can split surrogate pairs (emoji, CJK supplementary characters)
into lone surrogates that render as U+FFFD in approval UI payloads.

Use truncateUtf16Safe for both title and description fields in
createPluginApprovalsAttachment so approval requests never deliver
broken characters to the gateway approval UI.

Fixes #???

* test(gateway): exercise UTF-16 approval payloads

---------

Co-authored-by: wm0018 <wu.min5@xydigit.com>
2026-07-07 12:06:38 +01:00
maweibin
afdb9fd264 fix(session-cost-usage): keep emoji / surrogate pairs intact during content truncation (#101517)
* fix(session-cost-usage): keep emoji / surrogate pairs intact during content truncation

.slice(0, maxLen) counts UTF-16 code units, so an emoji straddling
the cut point produces a lone surrogate that renders as � in
usage cost CLI output. Use [...str] to count full code points instead.

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

* test(usage): cover UTF-16-safe log truncation

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 12:05:15 +01:00
wm0018
e7d617d4d9 fix(agents): keep exec auto-reviewer rationale truncation UTF-16 safe (#101513)
* fix(agents): keep exec auto-reviewer rationale truncation UTF-16 safe

String.prototype.slice at offset 500 can split surrogate pairs in
LLM-generated review rationale text, rendering broken U+FFFD in
exec approval UI payloads.

Replace raw slice(0, 500) with truncateUtf16Safe.

* fix(agents): keep exec reviewer rationale and prompt template description truncation UTF-16 safe

String.prototype.slice can split surrogate pairs at truncation boundaries,
producing broken U+FFFD in both exec approval rationale (500 chars) and
session prompt-template descriptions (60 chars).

Replace raw slice with truncateUtf16Safe in both locations.

* test(exec): cover UTF-16-safe reviewer rationale

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 12:04:19 +01:00
lsr911
78f9449d73 fix(channels): use truncateUtf16Safe for thread binding name truncation (#101527)
* fix(channels): use truncateUtf16Safe for thread binding name truncation

Raw .slice(0, 100) on emoji-labelled agent names can split a
surrogate pair, producing U+FFFD replacement characters in native
channel thread names.  Use truncateUtf16Safe instead.

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

* test(channels): cover UTF-16-safe thread names

* refactor(channels): keep thread binding import leaf-only

* refactor(channels): keep thread binding import leaf-only

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 12:03:24 +01:00
Peter Steinberger
84d0a71406 fix(memory): preserve UTF-16 chunk boundaries (#101574)
* fix(memory): preserve UTF-16 chunk boundaries

* test(memory): require coarse boundary split

Co-authored-by: jensenwang560-blip <267012233+jensenwang560-blip@users.noreply.github.com>

* fix(memory): retain chunk budget at surrogate boundaries

---------

Co-authored-by: jensenwang560-blip <267012233+jensenwang560-blip@users.noreply.github.com>
2026-07-07 12:01:32 +01:00
lsr911
37d613a596 fix(codex): use truncateUtf16Safe for attempt notification text truncation (#101534)
* fix(codex): use truncateUtf16Safe for attempt notification text truncation

.slice(0, 237) on notification text can split surrogate pairs from
CJK characters or emoji in agent output, producing U+FFFD in Codex
desktop notifications.

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

* test(codex): cover UTF-16-safe attempt previews

* test(codex): assign notification coverage to a shard

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 12:00:35 +01:00
Vincent Koc
098b471143 refactor(memory): remove unused runtime facade exports (#101583) 2026-07-07 03:57:51 -07:00
Peter Steinberger
16348ddec3 feat(android): render LaTeX display math in chat via bundled KaTeX (#101435)
* feat(android): render LaTeX display math in chat via bundled KaTeX

* fix(android): preserve fallback for invalid math

* docs(changelog): note Android display math

* Revert "docs(changelog): note Android display math"

This reverts commit 40356286a3.
2026-07-07 11:57:24 +01:00
Peter Steinberger
454fccd784 fix(browser): keep screenshots private by default (#101434)
* fix(browser): keep screenshots private by default

* fix(browser): preserve screenshot share handles

* fix(browser): stage explicit screenshot shares

* test(browser): avoid screenshot share temp files
2026-07-07 11:56:49 +01:00
Momo
695fa4e112 fix(infra): handle detached respawn child errors (#101489)
* fix(infra): handle detached respawn child errors

* docs(infra): explain detached respawn error listener

* fix(infra): handle detached respawn child errors

* fix(infra): handle detached respawn child errors

---------

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
2026-07-07 03:51:55 -07:00
Peter Steinberger
69b9932fae fix(feishu): support drive folder pagination (#101572)
Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>
2026-07-07 11:48:04 +01:00
Peter Lee
c2cc50c9a0 fix(codex): use UTF-16-safe truncation for approval display paths (#100177)
* fix(codex): use UTF-16-safe truncation for approval display paths

* fix(codex): resolve oxlint errors in approval-bridge and elicitation-bridge tests

* test(codex): cover approval Unicode boundaries

* test(codex): narrow approval command assertion

* chore: remove generated changelog entry

* chore: restore CHANGELOG.md to upstream/main baseline

* test(codex): tighten UTF-16 approval assertions

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 11:46:50 +01:00
NianJiu
040ac31546 fix: route direct outbound polls through channel adapters (#99950)
* fix: route direct outbound polls through channel adapters

* docs: note direct poll delivery

* test: isolate direct poll formatter label

---------

Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 11:46:26 +01:00
wm0018
5511b6fcaf fix(status): keep issue message truncation UTF-16 safe (#101503)
* fix(status): keep issue message truncation UTF-16 safe

String.prototype.slice at offset 90 can split surrogate pairs in issue
titles displayed by `openclaw status --all`, rendering broken U+FFFD in
the channel issues column.

Replace raw slice(0, 90) with truncateUtf16Safe to match the existing
UTF-16-safe truncation hardening pattern.

Fixes #???

* test(status): cover UTF-16-safe issue rendering

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 11:45:36 +01:00
mushuiyu886
846195c6b0 fix(codex): handle app-server stdio stream errors (#101505)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-07 03:41:27 -07:00
Peter Steinberger
942b449661 fix(exec): keep pending approval warnings truthful (#101561)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-07 11:30:41 +01:00