kumarabhirup
6594de6186
Merge Ironclaw changes onto upstream Openclaw 2026.2.22
...
Replays all Ironclaw-specific changes (176 commits) onto the latest
upstream Openclaw release (2026.2.22). Conflicts auto-resolved in
favor of Ironclaw to guarantee zero change loss.
Merge base: cbc3de6c9 (2026-02-16)
Upstream: a37e12eab (upstream/main, 2026.2.22)
Ironclaw: 3009566c9 (origin/main, 2026.2.15-1.9)
Backup: ironclaw-backup-pre-sync
Conflict resolutions:
- 6 GitHub workflow files: deleted (Ironclaw intentionally stripped)
- src/sessions/session-key-utils.test.ts: kept (Ironclaw modified)
- Duplicate imports from merge: deduplicated
- Unused imports from upstream code Ironclaw overrode: removed
- Broken test indentation from merge: fixed
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 18:06:01 -08:00
vignesh07
a37e12eabc
docs(changelog): credit nicole-luxe for mcporter QMD work
2026-02-21 17:32:59 -08:00
Vincent Koc
7a6ff4c55a
docs(changelog): credit BlueBubbles DM history fix ( #23095 )
2026-02-21 20:03:17 -05:00
Ryan Haines
75a9ea004b
Fix BlueBubbles DM history backfill bug ( #20302 )
...
* feat: implement DM history backfill for BlueBubbles
- Add fetchBlueBubblesHistory function to fetch message history from API
- Modify processMessage to fetch history for both groups and DMs
- Use dmHistoryLimit for DMs and historyLimit for groups
- Add InboundHistory field to finalizeInboundContext call
Fixes #20296
* style: format with oxfmt
* address review: in-memory history cache, resolveAccount try/catch, include is_from_me
- Wrap resolveAccount in try/catch instead of unreachable guard (it throws)
- Include is_from_me messages with 'me' sender label for full conversation context
- Add in-memory rolling history map (chatHistories) matching other channel patterns
- API backfill only on first message per chat, not every incoming message
- Remove unused buildInboundHistoryFromEntries import
* chore: remove unused buildInboundHistoryFromEntries helper
Dead code flagged by Greptile — mapping is done inline in
monitor-processing.ts.
* BlueBubbles: harden DM history backfill state handling
* BlueBubbles: add bounded exponential backoff and history payload guards
* BlueBubbles: evict merged history keys
* Update extensions/bluebubbles/src/monitor-processing.ts
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
---------
Co-authored-by: Ryan Mac Mini <ryanmacmini@ryans-mac-mini.tailf78f8b.ts.net>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-21 20:00:09 -05:00
Kumar Abhirup
3009566c92
Merge pull request #77 from DenchHQ/kumareth/test-suite
...
test: add comprehensive workspace & subagent test suite with deploy pre-flight checks
2026-02-21 16:57:36 -08:00
Vignesh
3317b49d3b
feat(memory): allow QMD searches via mcporter keep-alive (openclaw#19617) thanks @vignesh07
...
Verified:
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: vignesh07 <1436853+vignesh07@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-02-21 18:54:33 -06:00
kumarabhirup
729a71b838
release: v2026.2.15-1.9
2026-02-21 16:21:48 -08:00
Peter Steinberger
2e8e357bf7
test(telegram): use mockClear in per-case bot setup loops
2026-02-21 23:59:08 +00:00
Peter Steinberger
057233953e
test(retry): table-drive retryAfter timer cases
2026-02-21 23:58:33 +00:00
Peter Steinberger
1381c4c64a
test(telegram): replace redundant bot setup mock resets with clears
2026-02-21 23:58:33 +00:00
Peter Steinberger
5af39b051d
test(telegram): dedupe send fallback/media fixtures and trim reset overhead
2026-02-21 23:58:33 +00:00
Peter Steinberger
dfe0483d80
test(browser): table-drive scroll and click error rewrites
2026-02-21 23:58:33 +00:00
Peter Steinberger
8083cb8e0b
test(web-fetch): dedupe blocked-url SSRF assertions
2026-02-21 23:58:33 +00:00
Peter Steinberger
a97992fcf2
test(pi-tools): share safeBins e2e setup and teardown
2026-02-21 23:58:33 +00:00
Peter Steinberger
ba23d2b1fe
test(onboard): table-drive custom api flag rejection cases
2026-02-21 23:58:33 +00:00
Peter Steinberger
8cc3a5e460
test(doctor): tighten legacy migration e2e timeout budgets
2026-02-21 23:58:33 +00:00
Peter Steinberger
012654c7c5
test(sandbox): table-drive dangerous docker config rejection cases
2026-02-21 23:58:33 +00:00
Peter Steinberger
a353dae14f
test(image-tool): share temp agent dirs and table-drive validation cases
2026-02-21 23:58:33 +00:00
Peter Steinberger
150c048b0a
refactor: unify discord listener slow-log flow and test helpers
2026-02-22 00:44:56 +01:00
Peter Steinberger
f589295a0a
test(actions): table-drive discord presence mappings
2026-02-21 23:44:01 +00:00
Peter Steinberger
0afd5d38c5
test(actions): table-drive discord reaction and permission cases
2026-02-21 23:43:01 +00:00
Peter Steinberger
2595690a4d
test(actions): table-drive slack and telegram action cases
2026-02-21 23:43:01 +00:00
Peter Steinberger
7707e3406c
fix: await DiscordMessageListener handler for queued messages ( #22396 )
...
Co-authored-by: Irene <huangxiyan2311@gmail.com>
2026-02-22 00:41:46 +01:00
kumarabhirup
238989cdf7
release: bump version to 2026.2.15-1.8
2026-02-21 15:41:03 -08:00
Peter Steinberger
8922cb4085
test(sandbox): share sandbox-root setup across path cases
2026-02-21 23:38:43 +00:00
Peter Steinberger
548c227411
test: fix nodes camera case typing for CI
2026-02-22 00:38:36 +01:00
kumarabhirup
7aadd02313
test: add comprehensive workspace test suite and deploy pre-flight checks
...
- Profile management: discoverProfiles, getEffectiveProfile precedence,
setUIActiveProfile, resolveWebChatDir, workspace registry (32 tests)
- Workspace init API: creation, bootstrap seeding, custom paths,
validation, idempotency (13 tests)
- Profile switch API: GET/POST profiles, validation, default reset (10 tests)
- Chat isolation: profile-scoped chat dirs, session isolation (7 tests)
- LLM context awareness: bootstrap loading, subagent filtering,
resolveBootstrapContextForRun content isolation (15 unit + 5 live)
- Subagent streaming: registerSubagent, event replay, persistence,
ensureRegisteredFromDisk, fan-out (24 unit + 5 live)
- deploy.sh: add --skip-tests flag, pnpm test + web:build pre-flight,
auto git commit/push of version bump after publish
- package.json: add test:workspace and test:workspace:live scripts
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 15:38:31 -08:00
Peter Steinberger
6ea47c3f02
test(outbound): table-drive pre-aborted action cases
2026-02-21 23:37:12 +00:00
Peter Steinberger
8af676edb3
test: tighten web and cron cli timeout budgets
2026-02-21 23:36:24 +00:00
Peter Steinberger
204f379f6b
test(archive): share zip/tar fixture generation
2026-02-21 23:35:21 +00:00
Peter Steinberger
9aa5b5d157
test(logging): dedupe stream and state-dir env assertions
2026-02-21 23:34:38 +00:00
Peter Steinberger
ffd9b86ca4
test(ssrf): table-drive blocked hostname literal checks
2026-02-21 23:33:47 +00:00
Peter Steinberger
e84d89ab06
test(gateway): extract shared parse warning helper
2026-02-21 23:32:32 +00:00
Peter Steinberger
d3991d6aa9
fix: harden sandbox tmp media validation ( #17892 ) (thanks @dashed)
2026-02-22 00:31:21 +01:00
Alberto Leal
2958a8414d
test(media): narrow result kind before sendResult assertion
2026-02-22 00:31:21 +01:00
Alberto Leal
8934da785b
test(media): verify tmpdir media paths allowed through message action runner
...
Add integration test confirming that runMessageAction with a sandbox
root now accepts media paths under os.tmpdir() through the full
normalization pipeline (normalizeSandboxMediaList → resolveSandboxedMediaSource).
2026-02-22 00:31:21 +01:00
Alberto Leal
0bb81f7294
fix(media): allow os.tmpdir() paths in sandbox media source validation
...
resolveSandboxedMediaSource() rejected all paths outside the sandbox
workspace root, including /tmp. This blocked sandboxed agents from
sending locally-generated temp files (e.g. images from Python scripts)
via messaging actions.
Add an os.tmpdir() prefix check before the strict sandbox containment
assertion, consistent with buildMediaLocalRoots() which already
includes os.tmpdir() in its default allowlist. Path traversal through
/tmp (e.g. /tmp/../etc/passwd) is prevented by path.resolve()
normalization before the prefix check.
Relates-to: #16382 , #14174
2026-02-22 00:31:21 +01:00
Alberto Leal
4cf5c3e109
test: add unit tests for resolveSandboxedMediaSource
...
Add baseline test coverage for the previously untested
resolveSandboxedMediaSource() function, covering sandbox-relative
path resolution, rejection of paths outside the sandbox root,
path traversal prevention, file:// URL handling, HTTP URL
passthrough, and empty input edge cases.
2026-02-22 00:31:21 +01:00
Peter Steinberger
59563847e4
test(web): table-drive SSRF and voice input rejection cases
2026-02-21 23:30:13 +00:00
Peter Steinberger
d748657265
test(gateway): table-drive runtime config validation matrix
2026-02-21 23:29:29 +00:00
Peter Steinberger
4ab85cee0b
test(cli): table-drive repeated argv and byte-size checks
2026-02-21 23:28:07 +00:00
Peter Steinberger
fc2ed0b843
test(cron): dedupe webhook patch validation cases
2026-02-21 23:28:07 +00:00
Peter Steinberger
bcfae0434b
test(fetch): table-drive sync throw cleanup coverage
2026-02-21 23:28:07 +00:00
Peter Steinberger
833144fd72
test(gateway): tighten e2e timeout budget
2026-02-21 23:28:07 +00:00
Peter Steinberger
dd4e8f8098
test(cli): table-drive camera url failure cases
2026-02-21 23:28:07 +00:00
Peter Steinberger
c9593c4c87
test(sandbox): table-drive bind and network validation cases
2026-02-21 23:28:07 +00:00
Peter Steinberger
7c248cca4a
test(targets): table-drive slack and discord parse cases
2026-02-21 23:28:07 +00:00
Peter Steinberger
98790339ef
test: dedupe repeated validation and throw assertions
2026-02-21 23:28:07 +00:00
Peter Steinberger
01ec832f78
test(actions): table-drive telegram and signal mappings
2026-02-21 23:28:06 +00:00
Peter Steinberger
884c6afc26
test(telegram): table-drive channel override and id helper cases
2026-02-21 23:28:06 +00:00