Peter Steinberger
4a3f8438e5
fix(gateway): bind node exec approvals to nodeId
2026-02-24 03:05:58 +00:00
Peter Steinberger
f58c1ef34e
test(gateway): speed up contract and polling suites
2026-02-24 00:31:58 +00:00
Peter Steinberger
75423a00d6
refactor: deduplicate shared helpers and test setup
2026-02-23 20:40:44 +00:00
Peter Steinberger
40db3fef49
fix(agents): cache bootstrap snapshots per session key
...
Co-authored-by: Isis Anisoptera <github@lotuswind.net >
2026-02-23 19:19:45 +00:00
Ruslan Kharitonov
8d69251475
fix(doctor): use gateway health status for memory search key check ( #22327 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 2f02ec94030754a2e2dfeb7d5a80f14747373ab5
Co-authored-by: therk <901920+therk@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-23 14:07:16 -05:00
justinhuangcode
d00d814ad1
fix(gateway): include platform and reason in node command rejection error
...
The generic "node command not allowed" error gives no indication of why the
command was rejected, making it hard to diagnose issues (e.g. running
`nodes notify` against a Linux node that does not declare `system.notify`).
Include the rejection reason and node platform in the error message so
callers can tell whether the command is not supported by the node, not in
the platform allowlist, or the node did not advertise its capabilities.
Fixes #24616
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
(cherry picked from commit e3d74619bc9d2cf6d93bc5cb19e35d318784bf6a)
2026-02-23 18:56:14 +00:00
Peter Steinberger
2fa6aa6ea6
test(agents): add comprehensive kimi regressions
2026-02-23 18:27:36 +00:00
Ayaan Zaidi
118611465c
test(gateway): make strict-delivery bestEffort case deterministic
2026-02-23 11:45:18 +05:30
Ayaan Zaidi
d589b3a95c
test(gateway): clear agentCommand mock before strict bestEffort assert
2026-02-23 11:45:18 +05:30
Ayaan Zaidi
03122e5933
fix(cron): preserve telegram announce target + delivery truth
2026-02-23 11:45:18 +05:30
Tak Hoffman
35fbf26d24
Gateway: suppress tools.catalog plugin conflict diagnostics
2026-02-23 00:05:57 -06:00
Tak Hoffman
9e1a13bf4c
Gateway/UI: data-driven agents tools catalog with provenance (openclaw#24199) thanks @Takhoffman
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- gh pr checks 24199 --watch --fail-fast
Co-authored-by: Takhoffman <781889+Takhoffman@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-02-22 23:55:59 -06:00
Peter Steinberger
1c753ea786
test: dedupe fixtures and test harness setup
2026-02-23 05:45:54 +00:00
Tak Hoffman
77c3b142a9
Web UI: add full cron edit parity, all-jobs run history, and compact filters (openclaw#24155) thanks @Takhoffman
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: Takhoffman <781889+Takhoffman@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-02-22 23:05:42 -06:00
Tak Hoffman
259d863353
Gateway: harden cron.runs jobId path handling (openclaw#24038) thanks @Takhoffman
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: Takhoffman <781889+Takhoffman@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-02-22 19:35:26 -06:00
Vignesh Natarajan
a10ec2607f
Gateway/Chat UI: sanitize untrusted wrapper markup in final payloads
2026-02-22 16:53:54 -08:00
Peter Steinberger
d24f5c1e3a
fix(gateway): fail fast exec approvals when no approvers are reachable
...
Co-authored-by: fanxian831-netizen <262880470+fanxian831-netizen@users.noreply.github.com >
2026-02-22 22:24:27 +01:00
Peter Steinberger
51b0772e14
fix(exec-approvals): harden forwarding target and resolve delivery paths
...
Co-authored-by: bubmiller <bubmiller@users.noreply.github.com >
2026-02-22 20:37:22 +01:00
Alex Zaytsev
1685a0dd12
fix: remove trailing newline from CLAUDE.md symlink target ( #21160 )
...
* fix: remove trailing newline from CLAUDE.md symlink target
* Dev tooling: prevent CLAUDE symlink newline regressions
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-02-22 12:40:06 -05:00
Peter Steinberger
296b19e413
test: dedupe gateway browser discord and channel coverage
2026-02-22 17:11:54 +00:00
Peter Steinberger
142c0a7f7d
refactor: extract gateway transcript append helper
2026-02-22 14:44:19 +00:00
Peter Steinberger
adfbbcf1f6
chore: merge origin/main into main
2026-02-22 13:42:52 +00:00
Peter Steinberger
1152b25866
fix(gateway): guard trim crashes in subagent flow
2026-02-22 13:21:26 +01:00
Peter Steinberger
5ffcc4b735
test: fix logger stub typing in directive-tags test
2026-02-22 11:52:18 +00:00
Peter Steinberger
6c61616d51
test: move gateway rpc/local suites out of e2e
2026-02-22 11:31:42 +00:00
Peter Steinberger
78c3c2a542
fix: stabilize flaky tests and sanitize directive-only chat tags
2026-02-22 12:19:33 +01:00
Ayaan Zaidi
8e00965618
test: use real SubsystemLogger in directive-tags test
2026-02-22 16:39:11 +05:30
Peter Steinberger
5c57a45a59
fix: add non-streaming directive-tag regression tests ( #23298 ) (thanks @SidQin-cyber)
2026-02-22 11:31:23 +01:00
SidQin-cyber
e6490732cd
fix(gateway): strip directive tags from non-streaming webchat broadcasts
...
Closes #23053
The streaming path already strips [[reply_to_current]] and other
directive tags via stripInlineDirectiveTagsForDisplay, but the
non-streaming broadcastChatFinal path and the chat.inject path
sent raw message content to webchat clients, causing tags to
appear in rendered messages after streaming completes.
2026-02-22 11:31:23 +01:00
Peter Steinberger
1cd3b30907
fix: stop hardcoded channel fallback and auto-pick sole configured channel ( #23357 ) (thanks @lbo728)
...
Co-authored-by: lbo728 <extreme0728@gmail.com >
2026-02-22 11:21:43 +01:00
Peter Steinberger
88c564f050
test(gateway): use lightweight clears in agent handler tests
2026-02-22 08:01:16 +00:00
Peter Steinberger
1f0695ba47
test(core): use lightweight clears in update, child adapter, and copilot token setup
2026-02-22 08:01:16 +00:00
Peter Steinberger
d9085a7704
test(gateway): use lightweight clears in node invoke wake setup
2026-02-22 08:01:16 +00:00
Peter Steinberger
c358ada510
test(gateway): use lightweight clears in push handler setup
2026-02-22 08:01:16 +00:00
Peter Steinberger
a4b3aeeefa
test(gateway): reuse last agent command assertion helper
2026-02-22 07:44:56 +00:00
Vignesh Natarajan
4550a52007
TUI: filter model picker to allowlisted models
2026-02-21 19:03:15 -08:00
Peter Steinberger
ae70bf4dca
refactor(test): simplify env scoping in exec and usage tests
2026-02-21 19:13:46 +00:00
Peter Steinberger
f9108120c2
fix(gateway): strip inline directive tags from displayed text
2026-02-21 20:08:55 +01:00
Onur
8178ea472d
feat: thread-bound subagents on Discord ( #21805 )
...
* docs: thread-bound subagents plan
* docs: add exact thread-bound subagent implementation touchpoints
* Docs: prioritize auto thread-bound subagent flow
* Docs: add ACP harness thread-binding extensions
* Discord: add thread-bound session routing and auto-bind spawn flow
* Subagents: add focus commands and ACP/session binding lifecycle hooks
* Tests: cover thread bindings, focus commands, and ACP unbind hooks
* Docs: add plugin-hook appendix for thread-bound subagents
* Plugins: add subagent lifecycle hook events
* Core: emit subagent lifecycle hooks and decouple Discord bindings
* Discord: handle subagent bind lifecycle via plugin hooks
* Subagents: unify completion finalizer and split registry modules
* Add subagent lifecycle events module
* Hooks: fix subagent ended context key
* Discord: share thread bindings across ESM and Jiti
* Subagents: add persistent sessions_spawn mode for thread-bound sessions
* Subagents: clarify thread intro and persistent completion copy
* test(subagents): stabilize sessions_spawn lifecycle cleanup assertions
* Discord: add thread-bound session TTL with auto-unfocus
* Subagents: fail session spawns when thread bind fails
* Subagents: cover thread session failure cleanup paths
* Session: add thread binding TTL config and /session ttl controls
* Tests: align discord reaction expectations
* Agent: persist sessionFile for keyed subagent sessions
* Discord: normalize imports after conflict resolution
* Sessions: centralize sessionFile resolve/persist helper
* Discord: harden thread-bound subagent session routing
* Rebase: resolve upstream/main conflicts
* Subagents: move thread binding into hooks and split bindings modules
* Docs: add channel-agnostic subagent routing hook plan
* Agents: decouple subagent routing from Discord
* Discord: refactor thread-bound subagent flows
* Subagents: prevent duplicate end hooks and orphaned failed sessions
* Refactor: split subagent command and provider phases
* Subagents: honor hook delivery target overrides
* Discord: add thread binding kill switches and refresh plan doc
* Discord: fix thread bind channel resolution
* Routing: centralize account id normalization
* Discord: clean up thread bindings on startup failures
* Discord: add startup cleanup regression tests
* Docs: add long-term thread-bound subagent architecture
* Docs: split session binding plan and dedupe thread-bound doc
* Subagents: add channel-agnostic session binding routing
* Subagents: stabilize announce completion routing tests
* Subagents: cover multi-bound completion routing
* Subagents: suppress lifecycle hooks on failed thread bind
* tests: fix discord provider mock typing regressions
* docs/protocol: sync slash command aliases and delete param models
* fix: add changelog entry for Discord thread-bound subagents (#21805 ) (thanks @onutc)
---------
Co-authored-by: Shadow <hi@shadowing.dev >
2026-02-21 16:14:55 +01:00
Vignesh Natarajan
cd6bbe8cea
Session: enforce startup sequence on bare reset greeting
2026-02-20 20:38:56 -08:00
Harold Hunt
844d84a7f5
Issue 17774 - Usage - Local - Show data from midnight to midnight of selected dates for browser time zone (AI assisted) (openclaw#19357) thanks @huntharo
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test:macmini (override approved by Tak for this run; local baseline failures outside PR scope)
Co-authored-by: huntharo <5617868+huntharo@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-02-20 20:09:03 -06:00
Coy Geek
914a7c5359
fix: Device Token Scope Escalation via Rotate Endpoint ( #20703 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 4f2c2ecef4f53777dafc94cbdf1aa07ef0a2b1c0
Co-authored-by: coygeek <65363919+coygeek@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-02-20 17:38:58 +00:00
Mariano
e98ccc8e17
iOS/Gateway: stabilize background wake and reconnect behavior ( #21226 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 7705a7741e06335197a2015593355a7f4f9170ab
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-02-19 20:20:28 +00:00
Peter Steinberger
a1cb700a05
test: dedupe and optimize test suites
2026-02-19 15:19:38 +00:00
Peter Steinberger
397f243ded
refactor: dedupe gateway session guards and agent test fixtures
2026-02-19 14:27:36 +00:00
Peter Steinberger
74c51aeb1e
style: format gateway server methods
2026-02-19 13:32:58 +00:00
Peter Steinberger
ff74d89e86
fix: harden gateway control-plane restart protections
2026-02-19 14:30:15 +01:00
Vincent Koc
981d266480
security(gateway): block webchat session mutators ( #20800 )
...
* chore(ci): local claude settings gitignore
* Gateway: block webchat session mutators
* Changelog: note webchat session mutator guard
* Changelog: credit report for webchat mutator guard
2026-02-19 01:54:02 -08:00
Peter Steinberger
5556675aae
test(gateway): dedupe APNs wake fixture setup in node invoke tests
2026-02-19 07:33:16 +00:00
Peter Steinberger
9a100d520d
refactor(gateway): dedupe exec approvals node validation
2026-02-18 23:09:09 +00:00