100 Commits
Author SHA1 Message Date
mushuiyu886andGitHub 0e6561bc2c fix(docs): search live docs with unrelated invalid config (#111803) 2026-07-20 15:49:03 -07:00
7bac63889e fix(nostr): prefixed targets fail to send (#110881)
* fix(nostr): prefixed targets send successfully

* fix(nostr): address target normalization review

* fix(nostr): preserve invalid prefixed allowlist tokens

* test(nostr): cover prefixed npub outbound targets

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-20 04:21:49 -07:00
mushuiyu886andGitHub 367fe9a42b fix(chutes): report cache-read pricing from live catalog (#111253) 2026-07-19 19:56:42 -07:00
mushuiyu886andGitHub a20e08a56e fix(skills): keep ClawHub search results on one line (#111441) 2026-07-19 19:18:54 -07:00
mushuiyu886andGitHub c5bc6c3d2d fix(duckduckgo): preserve words around highlighted matches (#111460) 2026-07-19 19:09:09 -07:00
mushuiyu886andGitHub 34978b5a07 fix(browser): report final URL when opening managed Chrome tabs (#111374) 2026-07-19 10:01:42 -07:00
mushuiyu886andGitHub a626330a3b fix(deepinfra): model list fails when HTTP proxy is required (#111428) 2026-07-19 09:30:12 -07:00
c3adaa3195 fix(nostr): report relay connections only after they succeed (#110878)
* fix(nostr): report relay connections only after they succeed

* test(nostr): exercise relay callback during subscription

* test(nostr): reuse resolved account fixture

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 18:18:39 -07:00
7abcd6c691 fix(skills): distinguish duplicate ClawHub search results by publisher (#110903)
* fix(skills): distinguish duplicate search results by publisher

* test(skills): cover owner-qualified search output

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 17:27:25 -07:00
9fe92cf5ce fix(nostr): profile imports no longer crash on invalid fields (#110684)
* fix(nostr): profile imports no longer crash on invalid fields

* test(nostr): define invalid profile import policy

* test(nostr): cover invalid imported URL types

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 17:18:23 -07:00
d411559dfb fix(acp): reject malformed session list cursors (#107895)
* fix(acp): reject malformed session list cursors

* fix(session-catalog): validate pagination cursors exactly

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* refactor(session-catalog): align search normalization owner

* refactor(session-catalog): keep parsing helpers private

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-19 00:38:02 +01:00
2dce9d3012 fix(scripts): retry auth alerts after ntfy rejects delivery (#110760)
* fix(scripts): retry auth alerts after delivery failure

* test(scripts): cover mixed auth notification outcomes

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-19 00:10:32 +01:00
4e11da2872 fix(process): UTF-8 command output corrupts at Windows byte limits (#105274)
* fix(process): preserve byte-capped UTF-8 output on Windows

* fix(process): skip codepage probe for UTF-8 output

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 22:44:12 +01:00
1da345e9d3 fix(mcp): clamp oversized MCP timeouts (#105784)
* fix(mcp): clamp oversized MCP timeouts

* fix(mcp): centralize timer-safe timeout normalization

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 21:50:19 +01:00
mushuiyu886andGitHub 331eb0d439 fix(huggingface): discover models when HTTP proxy is required (#110924) 2026-07-18 21:31:24 +01:00
5360c75de2 fix(tui): stop Codex login lookup hanging the terminal (#109452)
* fix(tui): bound Codex CLI lookup

* fix(tui): bound Codex CLI lookup asynchronously

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* style(tui): format Codex auth flow

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 11:34:21 +01:00
adff355caf fix(plugin-sdk): failed raw channel sends report success (#109906)
* fix(plugin-sdk): reject failed raw channel sends

* fix(plugin-sdk): preserve raw result helper compatibility

* test(plugin-sdk): cover raw send fallback errors

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(security): bound skill-file audit read via safe reader (restore removed fs dependency) (#110589)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 11:30:13 +01:00
42e6972d35 fix(opencode): Zen GPT-5.6 models are missing from discovery (#110405)
* fix(opencode): add Zen GPT-5.6 models

* test(opencode): narrow GPT-5.6 policy fixture

* fix(opencode): align GPT-5.6 thinking levels

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 11:14:05 +01:00
04d7462806 fix(plugin-sdk): attached send results report the configured channel (#110069)
* fix(plugin-sdk): keep attached channel authoritative

* refactor(plugin-sdk): simplify channel attachment

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 11:10:39 +01:00
mushuiyu886andGitHub bfc94ad3c5 fix(nostr): accept uppercase Bech32 keys in setup and DM targeting (#109878)
* fix(nostr): accept uppercase NSEC and NPUB inputs

* test(nostr): satisfy target resolver type check
2026-07-18 08:13:11 +01:00
mushuiyu886andGitHub ac75f0c17a fix(nostr): relay connection failures no longer report successful publishes (#110007)
* fix(nostr): fail over relay connection errors

* fix(nostr): preserve pool publish semantics
2026-07-18 07:53:55 +01:00
mushuiyu886andGitHub a5cef86b5c fix(nostr): reject non-object profile imports (#110330) 2026-07-18 07:45:10 +01:00
mushuiyu886andGitHub f76f06b1ae fix(nostr): return relay event ids in send receipts (#110006) 2026-07-18 07:21:56 +01:00
mushuiyu886andGitHub 8178cf1038 fix(nostr): preserve reply event context (#110085) 2026-07-18 06:57:31 +01:00
8a234980ea fix(usage-bar): bound numeric verb arguments (#105297)
* fix(usage-bar): bound numeric verb arguments

* fix(usage-bar): preserve supported fixed precision

* fix(usage-bar): validate fixed precision

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* docs: refresh generated docs map

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 02:32:02 +01:00
b42dc72851 fix(discord): Activity OAuth no longer holds failed Discord connections (#109869)
* fix(discord): avoid Activity OAuth stalls after API rejection

* test(discord): preserve status on cancel failure

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 00:24:40 +01:00
3a268c08df fix(sqlite): stop mount probes blocking database startup (#109432)
* fix(sqlite): bound fallback mount classification

* test(sqlite): cover mount probe failure policy

* test(sqlite): use tracked mount probe fixtures

* perf(sqlite): keep mount result import type-only

* style(sqlite): format mount probe result

* perf(sqlite): defer mount process module loading

* perf(sqlite): avoid eager mount parser dependency

* refactor(sqlite): isolate lock error detection

* revert: keep sqlite lock errors colocated

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-17 11:41:25 +01:00
7af9358841 fix(push-web): ignore blank VAPID environment overrides (#109609)
* fix(push-web): ignore blank VAPID environment values

* fix: normalize migrated web push VAPID inputs

Co-authored-by: mushuiyu886 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-17 01:48:55 -07:00
f80c4b95ef fix(canvas): stop stalled Git blocking A2UI builds (#109476)
* fix(canvas): bound A2UI git input discovery

* build: avoid premature A2UI Git fallback

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 23:20:01 -07:00
9ff25ca65f fix(fleet): reject hexadecimal CPU limits (#105158)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 18:30:43 -07:00
mushuiyu886andGitHub 3ba08dbf77 fix(qa): bound process snapshot probes (#109207) 2026-07-16 16:54:54 -07:00
91df2d1812 fix(cli): bound container runtime probes (#109199)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-16 16:54:23 -07:00
mushuiyu886andGitHub cb47a0b4cc fix(agents): force-stop stalled tool probes (#109215) 2026-07-16 13:31:10 -07:00
mushuiyu886andGitHub 9edd662741 fix(doctor): force-stop stalled TUI process probes (#109243) 2026-07-16 13:17:08 -07:00
mushuiyu886andGitHub f25322e2e8 fix(memory-wiki): bound stalled Obsidian CLI calls (#109232) 2026-07-16 12:35:02 -07:00
mushuiyu886andGitHub 576a222da2 fix(codex): preserve split UTF-8 in app-server stderr (#108335) 2026-07-16 05:41:56 -07:00
dbdd9c93c0 fix(clawhub): avoid misleading reset hints from malformed headers (#108815)
* fix(clawhub): reject malformed rate-limit reset hints

* fix(clawhub): enforce unsigned reset seconds

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 04:47:36 -07:00
mushuiyu886andGitHub 4b9c78a674 fix(cron): preserve same-id history across stores (#108730) 2026-07-16 03:28:11 -07:00
f771aa54e8 fix(compaction): skip replay-unsafe session sends (#93293)
* fix(compaction): skip replay-unsafe session sends

* fix(compaction): preserve safe text around session sends

* fix(compaction): narrow replay filtering to sessions_send

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* test(compaction): use review-safe key fixtures

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* test(compaction): use placeholder API key

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* test(compaction): limit fixture cleanup to new cases

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(compaction): preserve completed sessions_send history

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(compaction): preserve unfinished delegated work

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(compaction): detect completion before replay filtering

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(compaction): retain unresolved send status

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(compaction): preserve inert send outcomes

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(compaction): narrow terminal tail type

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(compaction): guard replay input lookup

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 01:46:12 -07:00
6f22ef08a3 fix(tui): preserve emoji in split local shell output (#108268)
Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-15 18:38:09 -07:00
mushuiyu886andGitHub f946f45ef1 fix(sessions): preserve UTF-8 across tail reads (#108151) 2026-07-15 02:08:58 -07:00
65d55d046b fix(synology-chat): replies target the wrong user when Unicode nicknames span response chunks (#108019)
* fix(synology-chat): preserve UTF-8 in user list responses

* refactor(synology-chat): use native response decoding

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-15 02:02:00 -07:00
646dfd7e76 fix(plugins): preserve state on npm metadata failures (#107063)
* fix(plugins): preserve state on npm metadata failures

* fix(plugins): harden npm metadata recovery

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* refactor(plugins): adapt metadata errors to installer split

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(plugins): validate preserved npm payloads

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(plugins): satisfy update lint

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-14 22:05:15 -07:00
2b6053c3f9 fix(gateway): prevent malformed Control UI encoding weights from selecting compression (#107617)
* fix(gateway): reject malformed control ui qvalues

* test(gateway): cover valid encoding qvalues

---------

Co-authored-by: Peter Steinberger <peter@steipete.me>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-14 13:50:01 -07:00
ef25cefc8e fix(onepassword): validate audit limit strictly (#106926)
* fix(onepassword): validate audit limit strictly

* test(onepassword): strengthen audit limit coverage

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 21:37:07 -07:00
b7d034d75b fix(cli): reject noncanonical trajectory export requests (#105557)
* fix(cli): reject noncanonical trajectory export requests

* fix(cli): preserve encoded request bytes

* style(cli): format trajectory alias tests

* chore: keep trajectory note in PR context

---------

Co-authored-by: Peter Steinberger <peter@steipete.me>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 09:29:41 -07:00
417543b481 fix(agents): reject invalid bundled LSP framing (#105460)
* fix(agents): reject invalid bundled LSP framing

* fix(agents): reject malformed LSP header lines

Signed-off-by: sallyom <somalley@redhat.com>

---------

Signed-off-by: sallyom <somalley@redhat.com>
Co-authored-by: sallyom <somalley@redhat.com>
2026-07-13 11:43:06 -04:00
ed57c6cd88 fix(agents): honor claude-cli contextTokens setting (#93198)
* fix: honor claude-cli configured context tokens

* test: cover claude-cli native compaction budget

* test: cover ordinary claude-cli budget persistence

* test: migrate claude-cli budget fixtures to session accessor

* fix(agents): carry CLI provider into context budget

* fix(agents): guard optional CLI context metadata

* fix(agents): align Claude CLI native compaction budget

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(agents): apply selected CLI context cap

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(agents): preserve prepared CLI context budgets

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* fix(agents): resolve prepared CLI context ownership

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* test(agents): type CLI context budget cases

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 01:58:44 -07:00
4200745a98 fix(matrix): handle event decryption errors during sync (#94416)
Co-authored-by: mushuiyu886 <mushuiyu886@users.noreply.github.com>
2026-07-13 00:32:05 -07:00
cf0b80bf7e fix(gateway): clamp MCP loopback body timeout (#105769)
* fix(gateway): clamp MCP loopback body timeout

* test(gateway): keep stalled request auth strict

* test(gateway): name loopback request auth

* test(gateway): scope overflow auth fixture

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 20:13:59 -07:00
mushuiyu886andGitHub d886059520 fix(line): preserve Unicode boundaries in recipient errors (#104109) 2026-07-11 17:03:58 -07:00
mushuiyu886andGitHub b2702156ac fix(agents): preserve UTF-16 boundaries in bootstrap context (#104423) 2026-07-11 14:07:47 -07:00
mushuiyu886andGitHub 1c576a2713 fix(cron): preserve UTF-16 boundaries in exec tails (#104385) 2026-07-11 14:04:04 -07:00
92870e5200 fix(agents): preserve UTF-16 boundaries in block chunks (#104441)
* fix(agents): preserve UTF-16 boundaries in block chunks

* refactor(agents): import UTF-16 helper from leaf module

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 10:56:05 -07:00
13817a6108 fix(agents): preserve UTF-16 boundaries in context pruning (#104404)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-11 22:26:21 +08:00
f5eacacea5 fix(memory-wiki): stop duplicate bridge imports under polling (#91828)
* fix(memory-wiki): coalesce concurrent source syncs

Co-authored-by: mushuiyu_xydt <yang.haoyu@xydigit.com>

* test(memory-wiki): track alias fixture cleanup

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 19:20:15 -07:00
mushuiyu886andGitHub c52f660da0 fix(ui): preserve Unicode boundaries in config diffs (#103908) 2026-07-10 22:04:40 +01:00
5bb5e4fb0a fix(cron): preserve UTF-16 table boundaries (#103616)
* fix(cron): preserve table Unicode boundaries

* refactor(cron): size table cells by display width

* docs(changelog): credit cron table fix

* fix(cron): sanitize Unicode table cells

* fix(cron): keep table truncation UTF-16 safe

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 18:57:15 +01:00
9c9010efca fix(diagnostics-otel): preserve JSON Unicode boundaries (#103646)
* fix(diagnostics-otel): preserve JSON Unicode boundaries

* test(diagnostics-otel): consolidate Unicode boundary coverage

* docs(changelog): credit OTEL Unicode fix

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 17:42:25 +01:00
8034454568 fix(firecrawl): preserve Unicode in API errors (#103487)
* fix(firecrawl): preserve error detail Unicode

* test(firecrawl): cover Unicode error boundaries

* test(firecrawl): satisfy bundled lint

* test(firecrawl): streamline Unicode boundary coverage

* docs(changelog): credit Firecrawl Unicode fix

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 15:21:04 +01:00
b714fdb3ae fix(sandbox): keep redacted session keys UTF-16 safe (#102969)
* fix(sandbox): keep redacted session keys UTF-16 safe

* test(sandbox): cover UTF-16 redaction boundaries

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 18:31:21 +01:00
b451d8b5e5 fix(workshop): keep approval target names UTF-16 safe (#102963)
* fix(workshop): keep approval target names UTF-16 safe

* test(workshop): tighten UTF-16 approval regression

* test(workshop): mirror approval budget exactly

* docs(plugins): correct approval description limit

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 18:26:08 +01:00
88acda11b8 fix(nextcloud-talk): keep error snippets UTF-16 safe (#102949)
* fix(nextcloud-talk): keep error snippets UTF-16 safe

* test(nextcloud-talk): assert exact safe error

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 18:21:26 +01:00
813a5da839 fix(media): keep input_file text truncation UTF-16 safe (#102634)
* fix(media): keep input_file text truncation UTF-16 safe

* test(media): strengthen input file truncation proof

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 13:05:14 +01:00
240d350c7f fix(gateway): finish plugin HTTP responses after post-header failures (#102125)
* fix(gateway): finish plugin HTTP responses after post-header failures

* test(gateway): satisfy plugin HTTP regression lint

* fix(gateway): skip ending destroyed plugin responses

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:22:32 +01:00
7daa090935 fix(doctor): keep scrubbed error truncation UTF-16 safe (#102066)
* fix(doctor): keep scrubbed error truncation UTF-16 safe

* test(doctor): assert exact scrubbed error output

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 04:39:15 +01:00
e90bf31829 fix(discord): keep gateway close reasons UTF-16 safe (#102246)
* fix(discord): keep gateway close reasons UTF-16 safe

* test(discord): assert exact close reason truncation

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 04:28:06 +01:00
mushuiyu886andGitHub 5bdea31c94 fix(browser): keep Playwright truncation UTF-16 safe (#101761)
* fix(browser): keep Playwright truncation UTF-16 safe

* fix(browser): cover Chrome MCP snapshot truncation
2026-07-07 19:55:52 -07:00
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
92e25df271 fix(agents): avoid repeated item progress snapshots (#101042)
* fix(agents): avoid repeated item progress snapshots

* chore: align ACP branch with current main

* fix(agents): deduplicate ACP parent progress

* chore: keep release notes in PR context

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-07 07:31:13 +01:00
b75fe8102e fix(acp): preserve runtime option clears (#101044)
* fix(acp): preserve runtime option clears

* refactor(acp): simplify runtime option clears

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 23:12:50 +01:00
8f7d0a36f9 fix(browser): bound client fetch success JSON reads (#100889)
* fix(browser): bound client fetch success JSON reads

* fix(browser): preserve supported response body sizes

* docs(changelog): note browser response bounds

* chore: keep release changelog owner-only

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 20:48:07 +01:00
9042e8020f fix(memory): fall back to wiki for missing all-corpus reads (#100904)
* Fix memory_get all supplement fallback

* refactor(memory): use typed missing-read contract

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-06 07:19:51 -07:00
mushuiyu886andGitHub 806397f0d9 Treat already-compacted CLI compaction as no-op (#99136) 2026-07-06 06:34:05 +00:00
08852d2bf7 fix #98107: Gateway regenerates service-env file on every restart, wiping Telegram bot tokens (#99124)
* Preserve LaunchAgent env-file SecretRefs

* fix gateway start repair env source preservation

* test(daemon): cover SecretRef ownership cleanup

Co-authored-by: mushuiyu886 <mushuiyu886@users.noreply.github.com>

* fix(daemon): preserve only active SecretRefs

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

* chore: defer service SecretRefs changelog

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: mushuiyu886 <mushuiyu886@users.noreply.github.com>
2026-07-06 02:24:39 +01:00
6207a4e75b fix(google): bound OAuth token error response reads (#99605)
* fix(google): bound OAuth token error response reads

* test(google): consolidate OAuth error cases

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 16:00:01 -07:00
mushuiyu886andGitHub 45f261ff7a fix(memory-wiki): truncate import insights safely
Use the shared UTF-16 safe truncation helper for Memory Wiki import insight summaries and add regression coverage for surrogate-boundary summaries.
2026-06-28 11:19:55 -07:00
891096926e fix(opencode): restore Zen model catalog (#92495)
* fix(opencode): restore Zen model catalog

* fix(opencode): restore Zen transport routing

* fix(opencode): broaden Zen fallback catalog

* fix(opencode): correct Zen family routing

* fix(opencode): route Zen MiniMax through Anthropic

* fix(opencode): filter Zen live-only catalog rows

* fix(opencode): route MiniMax through Zen chat completions

* fix(opencode): omit unverified Zen model costs

* fix(opencode): align sampled Zen costs

* fix(opencode): keep Zen cost metadata required

* fix(opencode): keep Zen docs examples resolvable

* fix(opencode): move Zen catalog to provider discovery

* test(opencode): cover Zen discovery cache isolation

* fix(opencode): add Zen GLM-5.2 catalog coverage

* test(opencode): detect Zen catalog drift

Signed-off-by: sallyom <somalley@redhat.com>

---------

Signed-off-by: sallyom <somalley@redhat.com>
Co-authored-by: sallyom <somalley@redhat.com>
2026-06-28 12:32:44 -04:00
f4fa10c2c5 fix(clickclack): bound REST success JSON response reads (#96970)
* fix(clickclack): bound REST success JSON response reads

* test(clickclack): harden response cap proof

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-27 07:30:32 -07:00
mushuiyu886andGitHub 6e8f30c0e2 fix(qqbot): bound STT transcription JSON response (#96968) 2026-06-27 07:25:29 -07:00
mushuiyu886andGitHub 5ccfc97b31 fix(google): bound TTS success JSON response reads (#96984) 2026-06-27 07:00:36 -07:00
a7bfc06f45 fix(google-media): bound JSON response reads (#96920)
* fix(google-media): bound JSON response reads

* test(google): relax media response cap assertion

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-27 06:46:58 -07:00
65fec9d787 fix(voice-call): emit canonical session keys (#89884)
* fix(voice-call): scope generated session keys by agent

* docs(voice-call): document session key canonicalization

* test(voice-call): prove legacy session migration

* fix(voice-call): preserve canonical session ownership

* fix(sessions): isolate opaque nested identities

* fix(voice-call): preserve routing ownership

* fix(voice-call): enforce inbound route direction

* fix(sessions): preserve migration and policy boundaries

* fix(sessions): normalize ambiguous main aliases

* fix(sessions): preserve canonical peer and warning paths

* fix(sessions): exclude mixed-case scoped legacy keys

* fix(sessions): cover first-run plugin migration gaps

* fix(sessions): compare aliased store identities

* fix(sessions): coalesce aliased store ownership

* fix(sessions): defer ambiguous aliased migrations

* fix(sessions): preserve shared migration boundaries

* fix(sessions): preserve opaque peer ownership

* fix(sessions): reject ambiguous ownership shapes

* fix(sessions): preserve transcript rewrite keys

* fix(sessions): close routing and migration ambiguities

* fix(sessions): preserve plugin-owned ACP aliases

* fix(sessions): retain physical store ownership

* fix(sessions): restore configured store owners

* fix(sessions): reject malformed store owners

* fix(sessions): validate ACP store ownership

* fix(sessions): include canonical store owners

* fix(sessions): preserve final store symlinks

* fix(sessions): retain shared row owners

* fix(sessions): close legacy policy gaps

* fix(sessions): preserve aliases across migrations

* fix(sessions): resolve first-run store ownership

* fix(sessions): preserve hostile legacy keys

* fix(sessions): inspect unlisted store owners

* test(doctor): refresh migration harness

* fix(sessions): preserve opaque route segments

* fix(sessions): retain metadata during migration

* fix(sessions): fail closed on store alias uncertainty

* fix(sessions): defer aliased store rewrites

* fix(sessions): retain legacy row owners

* test(sessions): harden migration proof

* fix(sessions): migrate opaque agent keys

* chore(plugin-sdk): refresh API baseline

* fix(voice-call): reuse public routing parser

* fix(sessions): retain readable alias warnings

* fix(sessions): reject opaque nested routes

* fix(sessions): share strict delivery parsing

* test(voice-call): preserve malformed Matrix case

* fix(sessions): reject legacy peer overlap

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-06-27 01:29:58 +01:00
mushuiyu886GitHubopenclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>Peter Steinberger
deb0ffdcdf fix #94040: [Bug]: nodes approve failed: GatewayClientRequestError: unknown requestId (#94452)
* fix(nodes): explain unknown approval request ids

* fix(nodes): keep stale request handling CI-clean

* fix(nodes): point stale approve hint at pending command

* fix(nodes): explain stale approval request ids

* fix(nodes): make stale approval guidance reliable

* fix(nodes): preserve stale approval error context

---------

Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-06-27 00:40:29 +01:00
a846b879ec fix(mcp): include image source for screenshot results (#90902)
* fix(mcp): emit image content with base64 source

* fix(mcp): keep plugin tool images in SDK schema

* test(mcp): exercise image bridge end to end

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-06-27 00:39:40 +01:00
mushuiyu886andGitHub 5715b55000 fix(openrouter): bound video catalog JSON reads (#96505) 2026-06-25 14:17:01 -04:00
杨浩宇0668001029andAyaan Zaidi 4bd68aef65 fix(telegram): keep draft preview chunks surrogate-safe 2026-06-25 09:10:07 -07:00
杨浩宇0668001029andAyaan Zaidi 242fbf1a67 test(telegram): pass outbound sanitizer payload 2026-06-24 07:13:32 -07:00
杨浩宇0668001029andAyaan Zaidi 434d752dd6 fix(telegram): sanitize outbound tool traces 2026-06-24 07:13:32 -07:00
414c250af9 fix #95495: [Bug]: 2026.6.9 silently relocates memory store with no migration, forcing a full re-embed (1499 files) with zero upgrade-time warning (#95631)
* fix(memory): import legacy sidecar indexes into agent db

* fix(memory): move legacy sidecar import to doctor migration

* fix(memory): restore sidecar vector rows during doctor migration

* fix(memory): keep legacy sidecar when skipping import

* fix(memory): keep legacy sidecar import within extension boundary

* fix(memory-core): keep legacy sidecar migration retry-safe

* fix(memory-core): backfill sidecar FTS rows

* fix(memory-core): preserve sidecar when vector import defers

* fix(memory-core): cover custom sidecar migrations

* fix(memory-core): keep legacy config migration under doctor

* fix(memory-core): reject sidecar metadata conflicts

* fix(memory-core): keep partial legacy config sidecars

* fix(memory-core): preserve partial config retries

* fix(memory-core): keep partial config task migrations

* fix(memory-core): avoid phantom sidecar agents

* fix(memory-core): reject incomplete sidecar indexes

* fix(memory-core): keep malformed sidecars retryable

* fix(doctor): use canonical state dir for plugin migrations

* fix(memory-core): honor disabled vector sidecar migration

* fix(memory-core): treat provider-none sidecars as fts-only

* fix(memory-core): preserve setup-failed sidecars

* test(memory-core): use non-mutating sort assertions

* test(memory-core): compare sorted chunk ids

* test(memory-core): compare sorted chunk ids

* test(memory-core): stringify sorted chunk ids

* fix(qa): skip chromium bootstrap for explicit browser channels

* fix(qa): skip chromium bootstrap for explicit browser channels

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-24 17:47:44 +08:00
mushuiyu886andGitHub 01abe0a33d fix(agents): suggest recovery for unknown tool ids (#93374)
Merged via squash.

Prepared head SHA: bee84e4eb8
Co-authored-by: mushuiyu886 <266724580+mushuiyu886@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-06-23 14:20:09 +08:00
wood fishandGitHub 1fc4342a02 fix(ollama): honor memory embedding output dimensionality (#94811) 2026-06-22 17:49:43 +00:00
wood fishandGitHub cb84041cab fix(ui): render persisted history text blocks (#93841)
Merged via squash.

Prepared head SHA: bfe4f67ccf
Co-authored-by: mushuiyu886 <266724580+mushuiyu886@users.noreply.github.com>
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Reviewed-by: @steipete
2026-06-22 10:07:09 -07:00
wood fishandGitHub 9ce4c92736 fix(gateway): honor remote status probe timeout (#89859)
Merged via squash.

Prepared head SHA: 056707dbc7
Co-authored-by: mushuiyu886 <266724580+mushuiyu886@users.noreply.github.com>
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Reviewed-by: @steipete
2026-06-22 02:44:16 -07:00
mushuiyu_xydtandGitHub 78f948f768 fix(tui): show 0 not ? for fresh-session context tokens in footer (#94337)
Summary:
- The PR extends TUI session info to carry `totalTokensFresh`, maps fresh missing totals to `0`, and adds a focused regression test for the footer merge path.
- PR surface: Source +15, Tests +38. Total +53 across 4 files.
- Reproducibility: yes. at source level: `chat.history` returns session info with `totalTokensFresh`, but curr ...  `null` before footer formatting. I did not run local tests or a live TUI session in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Merge branch 'main' into fix/followup-93798

Validation:
- ClawSweeper review passed for head 43657b52c8.
- Required merge gates passed before the squash merge.

Prepared head SHA: 43657b52c8
Review: https://github.com/openclaw/openclaw/pull/94337#issuecomment-4737123127

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>
Co-authored-by: mushuiyu_xydt <yang.haoyu@xydigit.com>
2026-06-19 04:10:08 +00:00
1469441ff4 fix(gateway): send approval route notices with write scope (#93656)
* fix(gateway): send approval route notices with write scope

* fix(gateway): avoid approval runtime import cycle

* fix(approvals): preserve scoped runtime requests

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 01:19:19 +08:00
杨浩宇0668001029andVincent Koc 0fb0c2cb8e fix(plugins): keep empty session extension pins authoritative
Pinned session-extension registries now remain the owner even when empty, preventing later active registry churn from leaking agent-owned extensions into the gateway surface.
2026-06-16 11:36:43 +08:00
杨浩宇0668001029andVincent Koc 0e71ce1174 test(plugins): cover session extension registry lifecycle
Exercise pinned startup session extensions through WebSocket patching, release cleanup, standalone loading, and active-registry churn.
2026-06-16 11:36:43 +08:00
杨浩宇0668001029andVincent Koc ffa736f713 fix(plugins): satisfy session extension lint 2026-06-16 11:36:43 +08:00
杨浩宇0668001029andVincent Koc b85ae9fb1b fix(plugins): pin session extension registry 2026-06-16 11:36:43 +08:00