fc30a6c67d
fix(oc-path): reject oversized multibyte JSONC input ( #104140 )
...
* fix(oc-path): enforce JSONC byte limit for multibyte input
* fix(oc-path): surface JSONC size diagnostics in CLI
* fix(oc-path): classify oversized JSONC as parse error
* test(oc-path): cover JSONC byte cap boundaries
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-18 17:47:15 -07:00
07d97f6e8d
fix(plugins): hide bundle commands when frontmatter uses on ( #105013 )
...
* fix(plugins): honor on frontmatter for bundle commands
* fix(plugins): honor bundle command invocation policy
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
* test(plugins): tighten bundle command policy coverage
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-18 00:18:16 +01:00
0f192e79d4
fix(parallel): reject invalid search counts ( #105108 )
...
* fix(parallel): reject invalid search counts
* fix(parallel): share strict count validation
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-18 00:11:45 +01:00
1d999b817f
fix(anthropic): reject invalid Claude session cursors ( #104967 )
...
* fix(anthropic): reject invalid Claude session cursors
* fix(anthropic): validate Claude session cursors exactly
* fix(anthropic): route cursor test through catalog provider
* fix(anthropic): validate Claude session cursors exactly
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
* fix(anthropic): keep cursor limit private
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-17 20:19:29 +01:00
e4a48157d1
fix(test): keep bounded child output UTF-8 safe ( #109168 )
...
* fix(test): keep bounded child output UTF-8 safe
* test: preserve incomplete child output tails
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 22:53:11 -07:00
f3e8164e7c
fix(ci): keep boundary output tails UTF-8 safe ( #109167 )
...
* fix(ci): keep boundary output tails UTF-8 safe
* fix(ci): preserve split UTF-8 output tails
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 17:12:50 -07:00
ac3635b50c
fix(qa-lab): keep child output UTF-8 safe when capped ( #108156 )
...
* fix(qa-lab): keep child output UTF-8 safe when capped
* fix(qa-lab): preserve uncapped malformed output
Co-authored-by: qingminlong <34085845+qingminglong@users.noreply.github.com >
* refactor(qa-lab): keep utf8 repair plugin-local
Co-authored-by: qingminlong <34085845+qingminglong@users.noreply.github.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 08:35:42 -07:00
552fd224cf
fix(opencode): reject output stream failures in session catalog ( #108218 )
...
* fix(opencode): reject output stream failures in session catalog
* test(opencode): format stream failure regression
* test(opencode): prove output pipe failure cleanup
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
* test(opencode): satisfy pipe proof lint
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 04:57:28 -07:00
71bea81669
fix(cli-runner): keep output tails utf8 safe ( #108355 )
...
* fix(cli-runner): keep output tails utf8 safe
* fix(cli-runner): satisfy output tail byte narrowing
* test(cli-runner): format utf8 tail regression
* refactor(cli-runner): reuse UTF-8 tail helper
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 04:20:38 -07:00
b1e814f57a
fix(docs): report malformed search JSON with CLI context ( #108364 )
...
* fix(docs): report malformed search JSON with CLI context
* test(docs): tighten malformed response assertion
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 03:51:52 -07:00
49410a2399
fix(proxy-capture): preserve small bodies with non-decimal content length ( #108292 )
...
* fix(proxy-capture): preserve small bodies with non-decimal content length
* fix(proxy-capture): align declared length guard
* fix(proxy-capture): preserve huge content lengths
* style(proxy-capture): format length guard
---------
Co-authored-by: Peter Steinberger <peter@steipete.me >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-15 22:36:39 -07:00
4a1eedba54
fix(usage): count instant sessions in hourly metrics ( #108160 )
...
* fix(usage): count instant sessions in hourly metrics
* chore: rerun usage metrics CI
* refactor(usage): simplify positive-duration slicing
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-15 16:57:46 -07:00
4975cf75b4
fix(cron): reject oversized trigger script files before read ( #108130 )
...
* fix(cron): reject oversized trigger script files before read
* refactor(cron): stream bounded trigger scripts
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-15 03:12:21 -07:00
7440a1ae83
fix(file-transfer): reject oversized dir.fetch preflights ( #106293 )
...
* fix(file-transfer): reject oversized dir fetch preflights
* test(file-transfer): cover real oversized dir preflight
* test(file-transfer): wrap oversized preflight fixture
* test(file-transfer): cover preflight du fallback
* ci: restore max-lines baseline entry
* fix(file-transfer): make dir preflight size check authoritative
* ci: drop stale max-lines baseline restore
* test(file-transfer): gate tar-backed preflight cases
* fix(file-transfer): preserve preflight bounds and errors
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
2026-07-14 22:14:08 -07:00
c94da0df6f
fix(logs): preserve log tails across short reads ( #105066 )
...
* fix(logs): preserve log tails across short reads
* test(logging): track log-tail temp files
---------
Co-authored-by: Peter Steinberger <peter@steipete.me >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-14 14:47:53 -07:00
04e523a73b
fix(logbook): reject invalid 12-hour analysis clocks ( #107191 )
...
* fix(logbook): reject invalid meridiem clocks
* test(logbook): cover invalid meridiem card output
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-14 09:43:10 -07:00
qingminlong and GitHub
0e15a5d994
fix(pdf): reject unsafe page numbers before analysis ( #105315 )
...
* fix(pdf): reject unsafe page numbers before analysis
* test(pdf): bound unsafe page range regression
2026-07-12 19:38:55 -07:00
bf642ef287
fix(signal): surface daemon errors split across output chunks ( #104152 )
...
* fix(signal): preserve daemon log lines across chunks
* test(signal): cover split utf-8 daemon output
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 13:02:40 -07:00
2db82eb243
fix(sessions): derive list channels from agent keys ( #104274 )
...
* fix(sessions): derive list channels from agent keys
* refactor(sessions): reuse canonical channel parser
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 12:24:06 -07:00
qingminlong and GitHub
4ecc67678d
fix(cli): reject malformed attach ttl values ( #105103 )
...
* fix(cli): reject malformed attach ttl values
* fix(cli): clarify attach ttl grammar
2026-07-12 17:44:44 +03:00
c59e24647c
fix(agents): reject invalid goal token budgets ( #104534 )
...
* fix(agents): reject invalid goal token budgets
* test(agents): update goal assertion for session accessor
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 17:05:04 -07:00
qingminlong and GitHub
47751c117c
fix(discord): bound ffmpeg stderr by bytes ( #104230 )
2026-07-11 12:23:32 -07:00
9000c9bfe3
fix(file-transfer): audit dir fetch archive size ( #104536 )
...
* fix(file-transfer): audit dir fetch archive size
* test(file-transfer): guard dir fetch audit archive test on Windows
* test(file-transfer): format dir fetch audit guard
* fix(file-transfer): verify directory archive audit metadata
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 10:50:51 -07:00
fdf5812817
fix(file-transfer): reject oversized inline file writes before node dispatch ( #104556 )
...
* fix(file-transfer): cap inline file write payloads
* fix(file-transfer): validate inline base64 before decoding
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 10:16:22 -07:00
qingminlong and GitHub
f348b291bc
fix(workboard): scope default positions by board ( #104410 )
2026-07-11 10:16:18 -07:00
183139f3ed
fix(nodes): reject malformed media payloads when base64 is invalid ( #104414 )
...
* fix(nodes): reject malformed media base64 payloads
* fix(nodes): keep media base64 size preflight
* refactor(nodes): reuse shared base64 boundary
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
* docs(changelog): note node media validation
* chore: leave changelog to release automation
* test(nodes): cover empty invalid media payloads
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 10:11:09 -07:00
834c146958
fix(browser): reject hex click coordinates in act route ( #104440 )
...
* fix(browser): reject hex click coordinates in act route
* refactor(browser): use route parser for click coordinates
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 09:56:09 -07:00
a66d2959e9
fix(onboard): wait for gateway warnings before installing service ( #104173 )
...
* fix(onboard): wait for gateway warnings before installing service
* fix(onboard): show gateway warnings after plan errors
* refactor(onboard): drain install warnings from queue
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 05:49:34 -07:00
02560243f3
fix(agents): truncate multibyte middleware details at byte limit ( #104156 )
...
* fix(agents): bound multibyte middleware details by bytes
* refactor(agents): bound middleware detail byte sizing
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 05:39:50 -07:00
3ed8143495
fix(gateway): cap history when numeric limit is huge ( #104263 )
...
* fix(gateway): cap oversized history limits
* refactor(gateway): simplify oversized history limits
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 05:24:54 -07:00
08da0d3861
fix(code-mode): report UTF-8 API file byte counts ( #104244 )
...
* fix(code-mode): report UTF-8 API file byte counts
* fix(code-mode): report UTF-8 API file byte counts
* chore(changelog): keep release notes release-owned
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 05:10:46 -07:00
qingminlong and GitHub
b322a8e311
fix(gateway): stop watch result after invalid body ( #104293 )
2026-07-11 03:57:07 -07:00
qingminlong and GitHub
cd7a21787f
fix(computer): reject malformed numeric input before node actions ( #103642 )
2026-07-10 20:50:26 -07:00
eccd4f02f8
fix(skill-workshop): reject invalid proposal list limits ( #103496 )
...
* fix(skill-workshop): reject invalid proposal list limits
* refactor(skill-workshop): validate list params before storage
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 18:26:12 -07:00
qingminlong and GitHub
5c77724ff8
fix(canvas): validate A2UI JSONL centrally ( #103713 )
2026-07-11 01:48:37 +01:00
6e0d590bd8
fix(agent-core): avoid a crash when empty output has a negative line limit ( #103425 )
...
* fix(agent-core): avoid empty truncation crash
* refactor(agent-core): simplify empty truncation handling
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Peter Steinberger <peter@steipete.me >
2026-07-11 01:41:00 +01:00
4f1f7c6fb0
fix(nodes): resolve Unicode browser node names when configured by display name ( #103548 )
...
* fix-nodes-unicode-browser-node-names
* fix(nodes): preserve compact browser node selectors
* fix(nodes): normalize unicode node names canonically
* fix(nodes): scope compact browser selectors
* fix(nodes): preserve meaningful unicode marks
* chore: leave changelog updates to release automation
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 23:32:28 +01:00
3a64889d83
fix(agent-core): report correct JSONL entry line after blank rows ( #103645 )
...
* fix(agent-core): report jsonl entry physical line numbers
* fix(agent-core): preserve physical JSONL line numbers
* test(agent-core): keep JSONL cleanup lint-safe
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 18:12:56 +01:00
1d3d743b24
fix(grep): stop searches when canceled during tool startup ( #103709 )
...
* fix(grep): stop before ripgrep when aborted during setup
* fix(grep): check cancellation before ripgrep spawn
* fix(grep): make cancellation own process lifecycle
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
* test(grep): use bound lifecycle assertions
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 18:01:59 +01:00
bf02b611eb
fix(sessions): reject malformed history offsets ( #103594 )
...
* fix(sessions): reject malformed history offsets
* test(sessions): prove invalid offsets stop before reads
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 18:00:31 +01:00
cbfa7d4aa7
fix(audit): audit filters select wrong intervals when dates are invalid ( #103433 )
...
* fix(audit): reject invalid ISO timestamps in filters
* test(audit): cover strict date filter semantics
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 17:14:26 +01:00
2fd0f88f62
fix: ignore invalid Retry-After HTTP dates ( #102987 )
...
* fix: ignore invalid Retry-After HTTP dates
* fix(ai): centralize strict Retry-After dates
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Peter Steinberger <peter@steipete.me >
2026-07-10 04:02:44 +01:00
3f68e1b5e3
fix(media): accept matching repeated content lengths ( #102939 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 02:03:30 +01:00
e251bc4c2f
fix(agent-core): keep file info basename on Windows paths ( #102813 )
...
* fix(agent-core): keep file info basename on Windows paths
* fix(agent-core): use platform path basenames
* chore: sync PR branch before changelog
* docs(changelog): credit Windows file metadata fix
* fix(agent-core): use platform path basenames
* test(agent-core): isolate Windows shell discovery
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Peter Steinberger <peter@steipete.me >
2026-07-09 23:33:28 +01:00
9a60629693
fix(web_fetch): preserve content length when output is truncated ( #102978 )
...
* fix(web_fetch): preserve content length when output is truncated
* fix(web_fetch): preserve provider raw length
* test(web-fetch): cover wrapper-overhead source length
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 23:02:50 +01:00
56096eb859
fix(browser): report malformed relay CDP frames ( #102070 )
...
* fix(browser): report malformed relay CDP frames
* refactor(browser): streamline relay frame validation
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 12:00:38 +01:00
2f8f8ae1ae
fix(read): reject non-positive offsets ( #102481 )
...
* fix(read): reject non-positive offsets
* fix(read): validate offsets before filesystem access
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 11:59:29 +01:00
6cd94f6049
fix(web): mark partial response reads when streams fail ( #102550 )
...
* fix(web): mark partial response reads when streams fail
* fix(web): report partial stream bytes accurately
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 11:58:56 +01:00
qingminlong and GitHub
c86fe21cad
fix(browser): keep UTF-8 stderr tails valid ( #102543 )
2026-07-09 10:51:52 +01:00
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
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
qingminlong and GitHub
b40e5b974f
fix(cli): clarify nodes invoke params errors ( #101838 )
2026-07-09 08:33:47 +01:00
c3d567db95
fix(memory): snippets split emoji when truncated ( #102478 )
...
* fix(memory): snippets split emoji when truncated
* refactor(memory): reuse shared UTF-16 truncation
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 08:27:42 +01:00
b20b02a476
fix(tool-payload): enforce UTF-8 byte limits for serialized payloads ( #102450 )
...
* fix(tool-payload): reject oversized XML payload bytes
* fix(tools): enforce serialized payload byte limits
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 07:47:23 +01:00
d6f097b3de
fix(agents): normalize surrogate cache fingerprints ( #101009 )
...
* fix(agents): normalize surrogate cache fingerprints
* fix(agents): reuse provider surrogate sanitizer
* chore(agents): keep transport imports grouped
* fix(agents): avoid runtime import for surrogate sanitizer
* fix(agents): scope surrogate cache normalization
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-07 03:06:56 +01:00
ae4a1e236f
fix(pdf): reject fractional page selections ( #99399 )
...
* fix(pdf): reject fractional page selections
* chore: refresh pdf fractional page checks
* chore: refresh failed checkout checks
* test(pdf): prove fractional pages fail at tool boundary
* test(pdf): cover mixed fractional page ranges
* fix(pdf): validate page selections before loading
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-06 06:46:32 +01:00
6a62a04f59
fix(android): synchronize realtime tool completions ( #100049 )
...
* fix(android): synchronize realtime tool completions
* refactor(android): unify realtime tool completion state
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-06 00:49:21 +01:00
qingminlong and GitHub
9b78ec8d6f
fix: keep subagent truncation within max length ( #100013 )
2026-07-04 18:48:23 -07:00
3adfaf0394
fix: detect localized Windows netstat listeners ( #100012 )
...
* fix: parse localized Windows netstat listeners
* fix: share Windows netstat PID fallback
* test: relax native command QA timeout
* test: wait for native stop cleanup before recovery
* fix(windows): harden localized netstat parsing
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-04 16:35:29 -07:00
qingminlong and GitHub
b30278895c
fix: roll rounded durations into seconds ( #100006 )
...
Summary:
- The branch updates the shared duration helpers to branch on rounded millisecond values and adds 999.6ms expectations for compact, human, and precise duration output.
- PR surface: Source +3, Tests +2. Total +5 across 2 files.
- Reproducibility: yes. Current main source branches on raw `ms < 1000` before rounding in all three helpers, and the linked issue plus prior review include direct module proof that 999.6ms returned `1000ms`.
Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.
Validation:
- ClawSweeper review passed for head 9e06973112 .
- Required merge gates passed before the squash merge.
Prepared head SHA: 9e06973112
Review: https://github.com/openclaw/openclaw/pull/100006#issuecomment-4882739452
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
Approved-by: takhoffman
2026-07-04 20:34:57 +00:00
bd2740fedc
fix(slack): preserve time colons in interactive labels ( #99877 )
...
* fix(slack): preserve time colons in button labels
* fix(slack): preserve clock labels in interactive replies
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-04 03:14:13 -07:00
f5c700bc4b
fix(ui): keep landscape composer compact ( #98683 )
...
* fix(ui): keep landscape composer compact
* test(ui): cover landscape composer adjunct scroll
* fix(ui): keep active slash option visible
* fix(ui): constrain slash menu keyboard scroll
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-03 05:00:43 -07:00
qingminlong and GitHub
3e2d373d43
fix(cli): reject unsafe sessions tail counts ( #99398 )
...
* fix(cli): reject unsafe sessions tail counts
* fix(cli): reuse strict tail count parser
2026-07-03 03:53:35 -07:00
qingminlong and GitHub
c170e91529
fix(terminal): preserve sibling home-prefix paths ( #98876 )
...
* fix(terminal): preserve sibling home-prefix paths
* fix(terminal): avoid embedded home path rewrites
* fix(terminal): preserve punctuated sibling paths
* fix(terminal): tighten home path boundaries
2026-07-02 01:11:51 -07:00
qingminlong and GitHub
a741956448
fix(mattermost): paginate peer directory members ( #98877 )
2026-07-02 00:40:24 -07:00
qingminlong and GitHub
40e02a418c
fix(wizard): reject loose gateway port input ( #98689 )
...
* fix(wizard): reject loose gateway port input
* fix(wizard): reuse shared gateway port parser
2026-07-01 18:06:21 -07:00
qingminlong and GitHub
aa91c9d4a9
fix(memory-wiki): preserve notes after transient page reads ( #98360 )
2026-07-01 02:55:05 -07:00
qingminlong and GitHub
0d275c8c9d
fix(android): clarify gateway auth recovery states ( #98094 )
...
* fix(android): clarify gateway auth recovery states
* fix(android): preserve retryable pairing recovery copy
* fix(android): prefer auth recovery detail before stale address
* fix(android): show auth recovery while approval loads
2026-06-30 17:53:51 -07:00
qingminlong and GitHub
e2dd5a0309
fix(sessions): avoid cross-cwd recent resumes ( #97785 )
2026-06-30 17:46:40 -07:00
qingminlong and GitHub
1a1587963a
fix: preserve cron sessions with stale transcript metadata ( #97495 )
...
* fix: repair stale session cleanup transcript metadata
* fix: report repaired session cleanup metadata
2026-06-28 12:29:37 -07:00
qingminlong and GitHub
9f66f61d05
docs: add scripts directory index ( #97250 )
2026-06-28 12:19:30 -07:00
qingminlong and GitHub
5e1f4c1073
fix(memory): stop light dreaming from restaging stale summaries ( #97446 )
...
* fix(memory): stop restaging stale light dreams
* fix(memory): preserve cross-day light freshness
2026-06-28 11:58:24 -07:00
a10add7531
fix(models): mark local Ollama rows available ( #97491 )
...
* fix(models): mark local Ollama rows available
* fix(models): mark local Ollama rows available
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-06-28 10:53:15 -07:00