Peter Steinberger
c962bcba37
test: reclassify sandbox merge and exec path suites as unit tests
2026-02-22 10:28:43 +00:00
Peter Steinberger
9ab7b85a66
perf(test): tighten background abort timing windows
2026-02-22 10:28:43 +00:00
Peter Steinberger
c995f9be07
test: reclassify mocked announce and sandbox suites as unit tests
2026-02-22 10:28:43 +00:00
Peter Steinberger
27f0d7ebcc
test: reclassify auth-profile-rotation suite as unit test
2026-02-22 10:28:43 +00:00
Peter Steinberger
c0b1c10a08
test: reclassify mocked runner/safe-bins suites as unit tests
2026-02-22 10:28:43 +00:00
Peter Steinberger
a9b26d83de
perf(test): narrow pi-embedded runner e2e import path
2026-02-22 10:28:42 +00:00
Peter Steinberger
2b0ca9447c
perf(test): trim bash e2e sleep and poll windows
2026-02-22 10:28:42 +00:00
Peter Steinberger
c348a13640
perf(test): lower subagent fast-mode wait floors
2026-02-22 10:28:42 +00:00
Peter Steinberger
54e0786ba6
perf(test): reduce subagent announce fast-mode polling waits
2026-02-22 10:28:42 +00:00
Peter Steinberger
a96139e18c
perf(test): mock compact module in auth rotation e2e
2026-02-22 10:28:42 +00:00
Peter Steinberger
eda941f395
perf(test): remove flaky transport timeout and dedupe safeBins checks
2026-02-22 10:28:42 +00:00
Peter Steinberger
d72b4ead18
perf(test): lower fast-mode nested output wait floor to 70ms
2026-02-22 10:28:42 +00:00
Peter Steinberger
7ccf62fb4c
test(agents): remove dead shell-timeout override in safeBins suite
2026-02-22 10:28:42 +00:00
Peter Steinberger
60773c124e
perf(test): lower fast-mode nested output wait floor to 80ms
2026-02-22 10:28:42 +00:00
Peter Steinberger
36375f121f
perf(test): trim nested subagent output wait floor in fast mode
2026-02-22 10:28:42 +00:00
Peter Steinberger
2900eb5456
perf(test): trim background abort settle waits and dedupe cmd fixture
2026-02-22 10:28:42 +00:00
Peter Steinberger
7d13227d41
test(agents): dedupe auth profile rotation fixture setup
2026-02-22 10:28:42 +00:00
Peter Steinberger
6b5c20055b
perf(test): speed subagent announce retry polling in fast mode
2026-02-22 10:28:42 +00:00
Peter Steinberger
8ad85de800
test(reply): align native trigger suite with fast-test fixture patterns
2026-02-22 10:28:42 +00:00
Peter Steinberger
9882bfe186
perf(test): compact remaining heartbeat fixture writes
2026-02-22 10:28:42 +00:00
Peter Steinberger
c8d473c8e8
test(heartbeat): use shared sandbox in sender target suite
2026-02-22 10:28:42 +00:00
Peter Steinberger
29e41d4c0a
fix: land security audit severity + temp-path guard fixes ( #23428 ) (thanks @bmendonca3)
2026-02-22 11:26:17 +01:00
Brian Mendonca
bc78b343ba
Security: expand audit checks for mDNS and real-IP fallback
2026-02-22 11:26:17 +01:00
Peter Steinberger
b13fc7eccd
docs(security): clarify workspace memory trust boundary
2026-02-22 11:22:29 +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
Frank Yang
e33d7fcd13
fix(telegram): prevent update offset skipping queued updates ( #23284 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 92efaf956bf906a176d1e6c5488ddcb02d89b4e1
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com >
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Reviewed-by: @obviyus
2026-02-22 15:50:33 +05:30
maweibin
98a03c490b
Feat/logger support log level validation0222 ( #23436 )
...
* 1、环境变量**:新增 `OPENCLAW_LOG_LEVEL`,可取值 `silent|fatal|error|warn|info|debug|trace`。设置后同时覆盖**文件日志**与**控制台**的级别,优先级高于配置文件。
2、启动参数**:在 `openclaw gateway run` 上新增 `--log-level <level>`,对该次进程同时生效于文件与控制台;未传时仍使用环境变量或配置文件。
* fix(logging): make log-level override global and precedence-safe
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-22 11:15:13 +01:00
Peter Steinberger
bf56196de3
fix: tighten feishu dedupe boundary ( #23377 ) (thanks @SidQin-cyber)
2026-02-22 11:13:40 +01:00
SidQin-cyber
9e5e555ba3
fix(feishu): address dedup race condition, namespace isolation, and cache staleness
...
- Prefix memoryCache keys with namespace to prevent cross-account false
positives when different accounts receive the same message_id
- Add inflight tracking map to prevent TOCTOU race where concurrent
async calls for the same message both pass the check and both proceed
- Remove expired-entry deletion from has() to avoid silent cache/disk
divergence; actual cleanup happens probabilistically inside record()
- Add time-based cache invalidation (30s) to DedupStore.load() so
external writes are eventually picked up
- Refresh cacheLoadedAt after flush() so we don't immediately re-read
data we just wrote
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-22 11:13:40 +01:00
SidQin-cyber
9a8179fd59
feat(feishu): persistent message deduplication to prevent duplicate replies
...
Closes #23369
Feishu may redeliver the same message during WebSocket reconnects or process
restarts. The existing in-memory dedup map is lost on restart, so duplicates
slip through.
This adds a dual-layer dedup strategy:
- Memory cache (fast synchronous path, unchanged capacity)
- Filesystem store (~/.openclaw/feishu/dedup/) that survives restarts
TTL is extended from 30 min to 24 h. Disk writes use atomic rename and
probabilistic cleanup to keep each per-account file under 10 k entries.
Disk errors are caught and logged — message handling falls back to
memory-only behaviour so it is never blocked.
2026-02-22 11:13:40 +01:00
Peter Steinberger
73804abcec
fix(feishu): avoid template tmpdir join in dedup state path ( #23398 )
2026-02-22 11:12:01 +01:00
Peter Steinberger
bfc9ecf32e
test: harden temp path guard detection ( #23398 )
2026-02-22 11:12:01 +01:00
Peter Steinberger
57ce7214d2
test: stabilize temp-path guard across runtimes ( #23398 )
2026-02-22 11:12:01 +01:00
Peter Steinberger
1b327da6e3
fix: harden exec sandbox fallback semantics ( #23398 ) (thanks @bmendonca3)
2026-02-22 11:12:01 +01:00
Brian Mendonca
c76a47cce2
Exec: fail closed when sandbox host is unavailable
2026-02-22 11:12:01 +01:00
Peter Steinberger
5a0032de3e
refactor(signal): extract daemon lifecycle and typed exit handling
2026-02-22 11:09:10 +01:00
Peter Steinberger
602a1ebd55
fix: handle intentional signal daemon shutdown on abort ( #23379 ) (thanks @frankekn)
2026-02-22 10:59:34 +01:00
Frank Yang
1051f42f96
fix(stability): patch regex retries and timeout abort handling
2026-02-22 10:59:34 +01:00
Vignesh Natarajan
99a2f5379e
Memory/QMD: normalize Han-script BM25 search queries
2026-02-22 01:53:00 -08:00
Peter Steinberger
9f0b6a8c92
fix: harden ACP gateway startup sequencing ( #23390 ) (thanks @janckerchen)
2026-02-22 10:47:38 +01:00
janckerchen
7499e0f619
fix(acp): wait for gateway connection before processing ACP messages
...
- Move gateway.start() before AgentSideConnection creation
- Wait for hello message to confirm connection is established
- This fixes issues where messages were processed before gateway was ready
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 10:47:38 +01:00
Peter Steinberger
59807efa31
refactor(plugin-sdk): unify channel dedupe primitives
2026-02-22 10:46:34 +01:00
Peter Steinberger
edaa5ef7a5
refactor(gateway): simplify restart flow and expand lock tests
2026-02-22 10:44:47 +01:00
Peter Steinberger
bd4f670544
refactor: simplify windows ACL parsing and expand coverage
2026-02-22 10:43:03 +01:00
Peter Steinberger
9b9cc44a4e
fix: finalize modelByChannel validator landing ( #23412 ) (thanks @ProspectOre)
2026-02-22 10:41:40 +01:00
Peter Steinberger
6dad6a8cd0
fix: cover channels.modelByChannel validation/auto-enable
2026-02-22 10:41:40 +01:00
pickaxe
d79f10297f
also skip modelByChannel in plugin-auto-enable channel iteration
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 10:41:40 +01:00
pickaxe
0d93c9f759
fix: include modelByChannel in config validator allowedChannels
...
The hand-written config validator rejects `channels.modelByChannel` as
"unknown channel id: modelByChannel" even though the Zod schema, TypeScript
types, runtime code, and CLI docs all treat it as valid. The `defaults`
meta-key was already whitelisted but `modelByChannel` was missed when
the feature was added in 2026.2.21.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 10:41:40 +01:00
Vignesh Natarajan
9325418098
chore: fix temp-path guard skip for *.test-helpers.ts
2026-02-22 01:41:06 -08:00
Peter Steinberger
dd07c06d00
fix: tighten gateway restart loop handling ( #23416 ) (thanks @jeffwnli)
2026-02-22 10:38:32 +01:00