Commit graph

93 commits

Author SHA1 Message Date
Peter Steinberger
ac8f0c9c0d
chore: prepare 2026.4.19-beta.1 release 2026-04-19 02:09:43 +01:00
Peter Steinberger
0195da6b0e
refactor: cache optional runtime imports 2026-04-18 20:45:26 +01:00
Peter Steinberger
cdaa70facb
refactor: cache repeated lazy imports 2026-04-18 16:32:53 +01:00
Peter Steinberger
3f2e73b723
chore(release): bump version to 2026.4.18 2026-04-18 15:46:33 +01:00
Peter Steinberger
af954a81d1
perf: optimize bundled extension tests 2026-04-17 16:05:09 +01:00
Peter Steinberger
0dc4c4076c
chore: bump version to 2026.4.16 2026-04-17 00:45:04 +01:00
Gustavo Madeira Santana
78ac118427
fix(plugins): stabilize bundled setup runtimes (#67200)
Merged via squash.

Prepared head SHA: e8d6738fd0
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-15 12:35:18 -04:00
Peter Steinberger
b3fa5880dd
build(extensions): bump bundled plugin versions to 2026.4.15-beta.1 2026-04-15 15:06:13 +01:00
Vincent Koc
b855b1d047 fix(ci): clear extension lint regressions 2026-04-15 12:08:33 +01:00
Vincent Koc
c727388f93
fix(plugins): localize bundled runtime deps to extensions (#67099)
* fix(plugins): localize bundled runtime deps to extensions

* fix(plugins): move staged runtime deps out of root

* fix(packaging): harden prepack and runtime dep staging

* fix(packaging): preserve optional runtime dep staging

* Update CHANGELOG.md

* fix(packaging): harden runtime staging filesystem writes

* fix(docker): ship preinstall warning in bootstrap layers

* fix(packaging): exclude staged plugin node_modules from npm pack
2026-04-15 12:04:31 +01:00
xinmotlanthua
90c06c04c8
fix: guard against undefined event.content in cron agentTurn payload (#66302)
* fix: remove documentation fences from HEARTBEAT.md template

The HEARTBEAT.md template wrapped its content in markdown code fences
and a doc heading for display purposes. Since loadTemplate() only strips
YAML front matter, these artifacts leaked into generated workspace files,
causing isHeartbeatContentEffectivelyEmpty() to consider them non-empty
and triggering unnecessary API calls.

Remove the markdown fences and doc heading so the template produces
clean content after front-matter stripping.

Closes #66284

* fix: guard against undefined event.content in cron agentTurn payload

When a cron job fires with agentTurn payload, event.content is undefined.
parseFaceTags(undefined) returned undefined, which propagated to
userContent.startsWith("/") causing a TypeError crash.

- Fix parseFaceTags and filterInternalMarkers to return "" for falsy input
  instead of returning the falsy value itself
- Add null coalescing fallback at the gateway call site
- Add unit tests for undefined/null/empty string inputs

Closes #66283

* fix: address review — remove redundant guards, casts, and unrelated HEARTBEAT.md change

* fix: guard against undefined event.content in cron agentTurn payload (#66302) (thanks @xinmotlanthua)

---------

Co-authored-by: khanhkhanhlele <namkhanh2172@gmail.com>
Co-authored-by: sliverp <870080352@qq.com>
2026-04-15 11:47:21 +08:00
Luke
0abe64a4ff
Agents: clarify local model context preflight (#66236)
Merged via squash.

Prepared head SHA: 11bfaf15f6
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
Reviewed-by: @ImLukeF
2026-04-14 15:38:10 +10:00
Sliverp
ddb7a8dd80
Feat/fix qq ssrf url list (#65788)
* fix: update qqbot media host allowlist

* fix: update qqbot media host allowlist

* fix: update qqbot media host allowlist

* fix: update qqbot media host allowlist
2026-04-13 15:49:32 +08:00
Peter Steinberger
a8e140e395
chore: bump version to 2026.4.12 2026-04-12 10:37:18 -07:00
Vincent Koc
8f0da7ef06 test(qqbot): share symlink race setup 2026-04-12 05:36:06 +01:00
Peter Steinberger
0e3f9657da
fix(plugins): preserve bundled host compatibility floor 2026-04-12 00:22:32 +01:00
Peter Steinberger
1ab6e5dbf0
chore(release): bump version to 2026.4.11 2026-04-11 04:51:17 +01:00
Tak Hoffman
9ec0dc7ac5
fix: avoid qqbot session file key collisions 2026-04-10 19:40:18 -05:00
Peter Steinberger
ebfd468ee0
refactor: simplify typed conversions 2026-04-11 01:01:30 +01:00
Peter Steinberger
0ebeee8b0d
chore: enable consistent-return 2026-04-10 20:56:43 +01:00
Peter Steinberger
8e242622e1
fix: stabilize rebased test gates 2026-04-10 12:14:36 +01:00
Peter Steinberger
444cdd055d
fix: stabilize main test gates 2026-04-10 12:14:36 +01:00
Peter Steinberger
f8dbd7dd69
test: align qqbot account speech config expectation 2026-04-10 10:45:11 +01:00
Mingkuan
005b629b6d
fix(qqbot): allow extension fields in channel config schema (#64075)
* fix(qqbot): allow extension fields in channel config schema

Use passthrough() on QQBotConfigSchema, QQBotAccountSchema, and
QQBotStreamingSchema so third-party builds that share the qqbot
channel id can add custom fields without triggering
"must NOT have additional properties" validation errors.

tts and stt sub-schemas remain strict to preserve typo detection
for those sensitive fields.

* Update extensions/qqbot/openclaw.plugin.json

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* chore(qqbot): update changelog for config schema passthrough

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-04-10 17:01:00 +08:00
Vincent Koc
dfdc281f55 fix(cycles): split small runtime seams 2026-04-10 09:00:19 +01:00
Altay
8cf02e7c47
fix(ci): clear check-additional follow-up regressions (#63934)
* fix(ci): route messaging temp files through openclaw tmp dir

* fix(ci): clear qa-lab follow-up guardrails

* fix(ci): own-check ACP fallback resolvers

* fix(ci): preserve memory-core write error causes

* fix(ci): narrow qa-channel boundary alias

* fix(test): type memory-core dreaming api stubs
2026-04-09 23:47:59 +01:00
Sliverp
65b781f9ae
fix(qqbot): add stream config (#63746)
Some checks are pending
CI / preflight (push) Waiting to run
CI / security-fast (push) Waiting to run
CI / build-artifacts (push) Blocked by required conditions
CI / (push) Blocked by required conditions
CI / -1 (push) Blocked by required conditions
CI / checks-fast-extensions (push) Blocked by required conditions
CI / -2 (push) Blocked by required conditions
CI / extension-fast (push) Blocked by required conditions
CI / check (push) Blocked by required conditions
CI / check-additional (push) Blocked by required conditions
CI / build-smoke (push) Blocked by required conditions
CI / check-docs (push) Blocked by required conditions
CI / skills-python (push) Blocked by required conditions
CI / -3 (push) Blocked by required conditions
CI / -4 (push) Blocked by required conditions
CI / macos-swift (push) Blocked by required conditions
CI / -5 (push) Blocked by required conditions
Docs Sync Publish Repo / sync-publish-repo (push) Waiting to run
Install Smoke / preflight (push) Waiting to run
Install Smoke / install-smoke (push) Blocked by required conditions
Plugin NPM Release / preview_plugins_npm (push) Waiting to run
Plugin NPM Release / preview_plugin_pack (push) Blocked by required conditions
Plugin NPM Release / publish_plugins_npm (push) Blocked by required conditions
Workflow Sanity / no-tabs (push) Waiting to run
Workflow Sanity / actionlint (push) Waiting to run
Workflow Sanity / generated-doc-baselines (push) Waiting to run
2026-04-09 21:23:33 +08:00
Pavan Kumar Gondhi
604777e441
fix(qqbot): enforce media storage boundary for all outbound local file paths [AI] (#63271)
* fix: address issue

* fix: address review-pr skill feedback

* fix: address PR review feedback

* fix: address PR review feedback

* fix: address PR review feedback

* fix: address PR review feedback

* fix: address PR review feedback

* fix: address review feedback

* fix: address PR review feedback

* fix: address PR review feedback

* fix: address PR review feedback

* docs: add changelog entry for PR merge
2026-04-09 17:56:37 +05:30
Davanum Srinivas
08ae021d1f
fix(qqbot): guard image-size probe against SSRF (#63495)
* fix(qqbot): replace raw fetch in image-size probe with SSRF-guarded fetchRemoteMedia

Replace the bare fetch() in getImageSizeFromUrl() with fetchRemoteMedia()
from the plugin SDK, closing the blind SSRF via markdown image dimension
probing (GHSA-2767-2q9v-9326).

fetchRemoteMedia options: maxBytes 65536, maxRedirects 0, generic
public-network-only SSRF policy (no hostname allowlist, blocks
private/reserved/loopback/link-local/metadata IPs after DNS resolution).

Also fixes the repo-root resolution in scripts/lib/ts-guard-utils.mjs
which caused lint:tmp:no-raw-channel-fetch to miss extension files
entirely. The guard now walks up to .git instead of hardcoding two parent
traversals, and the allowlist is refreshed with all pre-existing raw
fetch callsites that became visible.

* fix(qqbot): guard image-size probe against SSRF (#63495) (thanks @dims)

---------

Co-authored-by: sliverp <870080352@qq.com>
2026-04-09 16:48:04 +08:00
Peter Steinberger
719f06510c
chore: bump version to 2026.4.10 2026-04-09 03:56:22 +01:00
Peter Steinberger
8f17b8e964
fix(qqbot): parse entity encoded self-closing media tags 2026-04-08 11:51:32 +01:00
Peter Steinberger
93b574581f
fix(qqbot): allow URL slashes in media tag attributes 2026-04-08 11:48:26 +01:00
游乐场
210ee4cfd2
fix(qqbot): support HTML entities in media tags (&lt; &gt;) (#60493)
* fix(qqbot): 支持媒体标签中的 HTML 实体(&lt; &gt;)

* fix(qqbot): support HTML entities in media tags

* test(qqbot): add unit tests for media tag regex with HTML entities

* test(qqbot): export regex constants to enable unit tests

* fix(qqbot): reset regex lastIndex in tests to avoid state pollution

* test(qqbot): add .js extension to import in media-tags.test.ts

* fix(qqbot): support HTML entities in media tags (#60493) (thanks @ylc0919)

---------

Co-authored-by: sliverp <870080352@qq.com>
2026-04-08 18:35:14 +08:00
Peter Steinberger
8d79b87dc7
style: apply formatter output 2026-04-08 09:58:22 +01:00
Peter Steinberger
95e397a266
refactor: dedupe repeated test helpers 2026-04-08 09:58:22 +01:00
Peter Steinberger
8cbd60d203
chore: prepare 2026.4.9 release 2026-04-08 08:02:53 +01:00
Peter Steinberger
4f8471617a
chore: prepare 2026.4.8 2026-04-08 04:21:51 +01:00
Peter Steinberger
0e91c25c0b
chore: prepare 2026.4.7 2026-04-08 02:14:59 +01:00
Peter Steinberger
aec24f4599
refactor: dedupe messaging trimmed readers 2026-04-08 01:36:39 +01:00
Agustin Rivera
a31cb15561
Guard missed base64 decode paths (#62007)
* fix(media): guard missed base64 decode paths

Co-authored-by: zsxsoft <git@zsxsoft.com>

* fix(media): wire maxBytes into image-generate-tool and consolidate base64 guard helpers

* docs(changelog): add base64 decode guard entry

* fix(image-generate): validate configured media cap

---------

Co-authored-by: zsxsoft <git@zsxsoft.com>
Co-authored-by: Devin Robison <drobison@nvidia.com>
2026-04-07 15:25:19 -06:00
Peter Steinberger
775b78e186
refactor: dedupe provider lowercase helpers 2026-04-07 22:24:32 +01:00
Peter Steinberger
ba68537d9d
refactor: dedupe line qqbot slack lowercase helpers 2026-04-07 20:58:01 +01:00
Peter Steinberger
96724e5a4b
Messaging: align adapter compile surfaces 2026-04-07 16:46:21 +01:00
Peter Steinberger
a96790fde7
test: speed up setup and core extension tests 2026-04-07 16:13:57 +01:00
Peter Steinberger
62a5480808
refactor: dedupe irc qqbot telegram lowercase helpers 2026-04-07 15:12:31 +01:00
Peter Steinberger
7a2a594044
test: fix setup and config typing drift 2026-04-07 12:48:05 +01:00
Peter Steinberger
991d4e2006
test: speed up setup plugin tests 2026-04-07 12:42:56 +01:00
Vincent Koc
d5ed6d26e9 chore(plugins): bulk add package boundary tsconfig rollout 2026-04-07 08:48:23 +01:00
Peter Steinberger
8d05bdda43
refactor: dedupe setup token readers 2026-04-07 06:07:13 +01:00
Peter Steinberger
e169fcd263
refactor: dedupe qa and diff error formatting 2026-04-07 05:06:54 +01:00