Peter Steinberger
7f227fc8cc
perf(test): avoid heavy browser barrels in pw-ai tests
2026-02-14 03:13:32 +00:00
Artale
7f0d6b1fcb
fix(heartbeat): exempt wake and hook reasons from empty-heartbeat skip (openclaw#14532) thanks @arosstale
...
Verified:
- pnpm build
- pnpm check
- pnpm test
Co-authored-by: arosstale <117890364+arosstale@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-02-13 19:05:02 -06:00
Peter Steinberger
ad57e561c6
refactor: unify gateway restart deferral and dispatcher cleanup
2026-02-14 00:38:18 +01:00
Peter Steinberger
e794ef0478
perf(test): reduce hot-suite setup and duplicate test work
2026-02-13 23:30:41 +00:00
Bridgerz
ab4a08a82a
fix: defer gateway restart until all replies are sent ( #12970 )
...
* fix: defer gateway restart until all replies are sent
Fixes a race condition where gateway config changes (e.g., enabling
plugins via iMessage) trigger an immediate SIGUSR1 restart, killing the
iMessage RPC connection before replies are delivered.
Both restart paths (config watcher and RPC-triggered) now defer until
all queued operations, pending replies, and embedded agent runs complete
(polling every 500ms, 30s timeout). A shared emitGatewayRestart() guard
prevents double SIGUSR1 when both paths fire simultaneously.
Key changes:
- Dispatcher registry tracks active reply dispatchers globally
- markComplete() called in finally block for guaranteed cleanup
- Pre-restart deferral hook registered at gateway startup
- Centralized extractDeliveryInfo() for session key parsing
- Post-restart sentinel messages delivered directly (not via agent)
- config-patch distinguished from config-apply in sentinel kind
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: single-source gateway restart authorization
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-14 00:29:29 +01:00
Peter Steinberger
dc507f3dec
perf(test): reduce memory and port probe overhead
2026-02-13 23:22:30 +00:00
Peter Steinberger
dac8f5ba3f
perf(test): trim fixture and import overhead in hot suites
2026-02-13 23:16:41 +00:00
nabbilkhan
207e2c5aff
fix: add outbound delivery crash recovery ( #15636 ) (thanks @nabbilkhan) ( #15636 )
...
Co-authored-by: Shadow <hi@shadowing.dev >
2026-02-13 15:54:07 -06:00
Joseph Krug
4e9f933e88
fix: reset stale execution state after SIGUSR1 in-process restart ( #15195 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 676f9ec45135be0d3471bb0444bc2ac7ce7d5224
Co-authored-by: joeykrug <5925937+joeykrug@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-13 15:30:09 -05:00
Peter Steinberger
83bc73f4ea
refactor(exec-approvals): split allowlist evaluation module
2026-02-13 19:08:37 +00:00
Peter Steinberger
81fbfa06ee
refactor(exec-approvals): extract command analysis module
2026-02-13 19:08:37 +00:00
Peter Steinberger
39af215c31
refactor(outbound): extract message action param helpers
2026-02-13 19:08:37 +00:00
Peter Steinberger
c256503ea1
refactor(infra): extract session cost usage types
2026-02-13 19:08:37 +00:00
Peter Steinberger
5a431f57fc
refactor(infra): split heartbeat event filters
2026-02-13 19:08:37 +00:00
nyanjou
77df8b1104
feat(discord): add silent message support (SUPPRESS_NOTIFICATIONS flag)
...
- Add silent option to message tool for Discord
- Passes SUPPRESS_NOTIFICATIONS flag (4096) to Discord API
- Threads silent param through entire outbound chain:
- message-action-runner.ts
- outbound-send-service.ts
- message.ts
- deliver.ts
- discord outbound adapter
- send.outbound.ts
- send.shared.ts
Usage: message tool with silent=true suppresses push/desktop notifications
2026-02-13 12:44:14 -06:00
Peter Steinberger
3cbcba10cf
fix(security): enforce bounded webhook body handling
2026-02-13 19:14:54 +01:00
Peter Steinberger
201ac2b72a
perf: replace proper-lockfile with lightweight file locks
2026-02-13 17:57:30 +00:00
Marcus Castro
7ec60d6449
fix: use relayAbort helper for addEventListener to preserve AbortError reason
2026-02-13 18:13:18 +01:00
Marcus Castro
5ac8d1d2bb
test: add abort .bind() behavioral tests ( #7174 )
2026-02-13 18:13:18 +01:00
Marcus Castro
d9c582627c
perf: use .abort.bind() instead of arrow closures to prevent memory leaks ( #7174 )
2026-02-13 18:13:18 +01:00
Omair Afzal
59733a02c8
fix(configure): reject literal "undefined" and "null" gateway auth tokens ( #13767 )
...
* fix(configure): reject literal "undefined" and "null" gateway auth tokens
* fix(configure): reject literal "undefined" and "null" gateway auth tokens
* fix(configure): validate gateway password prompt and harden token coercion (#13767 ) (thanks @omair445)
* test: remove unused vitest imports in baseline lint fixtures (#13767 )
---------
Co-authored-by: Luna AI <luna@coredirection.ai >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-13 17:04:41 +01:00
Peter Steinberger
de7d94d9e2
perf(test): remove resetModules from config/sandbox/message suites
2026-02-13 15:58:08 +00:00
Peter Steinberger
41f2f359a5
perf(test): reduce module reload overhead in key suites
2026-02-13 15:45:19 +00:00
Peter Steinberger
9131b22a28
test: migrate suites to e2e coverage layout
2026-02-13 14:28:22 +00:00
Peter Steinberger
8899f9e94a
perf(test): optimize heavy suites and stabilize lock timing
2026-02-13 13:29:07 +00:00
Peter Steinberger
990413534a
fix: land multi-agent session path fix + regressions ( #15103 ) ( #15448 )
...
Co-authored-by: Josh Lehman <josh@martian.engineering >
2026-02-13 14:17:24 +01:00
Gustavo Madeira Santana
ac41176532
Auto-reply: fix non-default agent session transcript path resolution ( #15154 )
...
* Auto-reply: fix non-default agent transcript path resolution
* Auto-reply: harden non-default agent transcript lookups
* Auto-reply: harden session path resolution across agent stores
2026-02-12 23:23:12 -05:00
Marcus Castro
39ee708df6
fix(outbound): return error instead of silently redirecting to allowList[0] ( #13578 )
2026-02-13 05:20:03 +01:00
Marcus Castro
13bfd9da83
fix: thread replyToId and threadId through message tool send action ( #14948 )
...
* fix: thread replyToId and threadId through message tool send action
* fix: omit replyToId/threadId from gateway send params
* fix: add threading seam regression coverage (#14948 ) (thanks @mcaxtr)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-13 04:55:20 +01:00
Marcus Castro
e90caa66d8
fix(exec): allow heredoc operator (<<) in allowlist security mode ( #13811 )
...
* fix(exec): allow heredoc operator (<<) in allowlist security mode
* fix: allow multiline heredoc parsing in exec approvals (#13811 ) (thanks @mcaxtr)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-13 04:41:51 +01:00
Joseph Krug
40aff672c1
fix: prevent heartbeat scheduler silent death from wake handler race ( #15108 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: fd7165b93547251c48904fa60b4b608d96bfb65c
Co-authored-by: joeykrug <5925937+joeykrug@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-12 22:30:21 -05:00
Tak Hoffman
1d8bda4a21
fix: emit message_sent hook for all successful outbound paths ( #15104 )
2026-02-12 19:39:09 -06:00
Peter Steinberger
99f28031e5
fix: harden OpenResponses URL input fetching
2026-02-13 01:38:49 +01:00
Peter Steinberger
113ebfd6a2
fix(security): harden hook and device token auth
2026-02-13 01:23:53 +01:00
Vignesh Natarajan
54513f4240
fix: align cron prompt content with filtered reminder events
2026-02-12 16:14:27 -08:00
Vignesh Natarajan
22593a2723
fix: refine cron heartbeat event detection
2026-02-12 16:14:27 -08:00
pvtclawn
c12f693c59
feat: embed actual event text in cron prompt
...
Combines two complementary fixes for ghost reminder bug:
1. Filter HEARTBEAT_OK/exec messages (previous commit)
2. Embed actual event content in prompt (this commit)
Instead of static 'shown above' message, dynamically build prompt
with actual reminder text. Ensures model sees event content directly.
Credit: Approach inspired by @nyx-rymera's analysis in #13317
Fixes #13317
2026-02-12 16:14:27 -08:00
pvtclawn
1c773fcb60
test: fix test isolation and assertion issues
...
- Add resetSystemEventsForTest() in beforeEach/afterEach
- Fix hardcoded status assertions (use toBeDefined + conditional checks)
- Prevents cross-test pollution of global system event queue
Addresses Greptile feedback on PR #15059
2026-02-12 16:14:27 -08:00
pvtclawn
5beecad8ba
test: add test for ghost reminder bug ( #13317 )
2026-02-12 16:14:27 -08:00
pvtclawn
4f687a7440
fix: prevent ghost reminder notifications ( #13317 )
...
The heartbeat runner was incorrectly triggering CRON_EVENT_PROMPT
whenever ANY system events existed during a cron heartbeat, even if
those events were unrelated (e.g., HEARTBEAT_OK acks, exec completions).
This caused phantom 'scheduled reminder' notifications with no actual
reminder content.
Fix: Only treat as cron event if pending events contain actual
cron-related messages, excluding standard heartbeat acks and
exec completion messages.
Fixes #13317
2026-02-12 16:14:27 -08:00
Kyle Tse
2655041f69
fix: wire 9 unwired plugin hooks to core code (openclaw#14882) thanks @shtse8
...
Verified:
- GitHub CI checks green (non-skipped)
Co-authored-by: shtse8 <8020099+shtse8@users.noreply.github.com >
2026-02-12 18:14:14 -06:00
Gustavo Madeira Santana
b02c88d3e7
Browser/Logging: share default openclaw tmp dir resolver
2026-02-12 16:44:04 -05:00
Joseph Krug
5147656d65
fix: prevent heartbeat scheduler death when runOnce throws ( #14901 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 022efbfef959f4c4225d7ab1a49540c8f39accd3
Co-authored-by: joeykrug <5925937+joeykrug@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-12 15:38:46 -05:00
Gustavo Madeira Santana
571a237d5a
chore: move local imports to the top
2026-02-12 15:14:29 -05:00
Gustavo Madeira Santana
8d5094e1f4
fix: resolve symlinked argv1 for Control UI asset detection ( #14919 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 07b85041dc70b5839247dc661f123ff37b745c1c
Co-authored-by: gumadeiras <116837+gumadeiras@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-12 14:45:31 -05:00
Peter Steinberger
b8a5f94f25
refactor(test): consolidate infra unit tests
2026-02-12 17:16:42 +00:00
Karim Naguib
7a0591ef87
fix(whatsapp): allow media-only sends and normalize leading blank payloads ( #14408 )
...
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-02-11 23:21:21 -06:00
buddyh
4baa43384a
fix(media): guard local media reads + accept all path types in MEDIA directive
2026-02-11 15:01:18 -08:00
Kyle Tse
4200782a5d
fix(heartbeat): honor heartbeat.model config for heartbeat turns ( #14103 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: f46080b0adb882c4d18af7ac0e80055505ff640c
Co-authored-by: shtse8 <8020099+shtse8@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-11 14:00:40 -05:00
Sk Akram
620cf381ff
fix: don't lowercase Slack channel IDs ( #14055 )
2026-02-11 20:53:58 +09:00