Commit Graph

1380 Commits

Author SHA1 Message Date
teconomix 5cc04e2fac test(mattermost): add sendMedia threadId fallback test 2026-03-14 06:32:33 +00:00
teconomix 62b6d6fca7 fix(mattermost): carry thread context to non-inbound reply paths
Fixes a bug where replies triggered from TUI/WebUI or by agent-initiated
sends (tool callbacks, subagent responses, message tool) land in the
Mattermost channel root instead of the originating thread.

Root cause: three gaps in the outbound routing path for turns not
directly triggered by an inbound Mattermost message:

1. dispatch-from-config.ts: sendPayloadAsync passed ctx.MessageThreadId,
   which is undefined for webchat/TUI turns. Now falls back to the
   session entry's deliveryContext.threadId (the lastThreadId stored when
   the session was first created from an inbound Mattermost message).

2. route-reply.ts: threadId was only forwarded as replyToId for Slack.
   Mattermost uses the same root_id mechanic, so the same fallback now
   applies to Mattermost too.

3. channel.ts (Mattermost outbound): sendText/sendMedia only consumed
   replyToId, ignoring threadId. Added threadId as a defense-in-depth
   fallback for any path that sets threadId but not replyToId.

All three gaps in a single PR. Tests added for each fix path.

Fixes #39759
2026-03-14 06:31:47 +00:00
Peter Steinberger 49a2ff7d01
build: sync plugins for 2026.3.14 2026-03-14 06:05:39 +00:00
kkhomej33-netizen e7d9648fba
feat(cron): support custom session IDs and auto-bind to current session (#16511)
feat(cron): support persistent session targets for cron jobs (#9765)

Add support for `sessionTarget: "current"` and `session:<id>` so cron jobs can
bind to the creating session or a persistent named session instead of only
`main` or ephemeral `isolated` sessions.

Also:
- preserve custom session targets across reloads and restarts
- update gateway validation and normalization for the new target forms
- add cron coverage for current/custom session targets and fallback behavior
- fix merged CI regressions in Discord and diffs tests
- add a changelog entry for the new cron session behavior

Co-authored-by: kkhomej33-netizen <kkhomej33-netizen@users.noreply.github.com>
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
2026-03-14 16:48:46 +11:00
Peter Steinberger 2ce6b77205
chore: bump pi to 0.58.0 2026-03-14 04:33:37 +00:00
Josh Avant f4fef64fc1
Gateway: treat scope-limited probe RPC as degraded reachability (#45622)
* Gateway: treat scope-limited probe RPC as degraded

* Docs: clarify gateway probe degraded scope output

* test: fix CI type regressions in gateway and outbound suites

* Tests: fix Node24 diffs theme loading and Windows assertions

* Tests: fix extension typing after main rebase

* Tests: fix Windows CI regressions after rebase

* Tests: normalize executable path assertions on Windows

* Tests: remove duplicate gateway daemon result alias

* Tests: stabilize Windows approval path assertions

* Tests: fix Discord rate-limit startup fixture typing

* Tests: use Windows-friendly relative exec fixtures

---------

Co-authored-by: Mainframe <mainframe@MainfraacStudio.localdomain>
2026-03-13 23:13:33 -05:00
yunweibang f4a2bbe0c9
fix(feishu): add early event-level dedup to prevent duplicate replies (#43762)
* fix(feishu): add early event-level dedup to prevent duplicate replies

Add synchronous in-memory dedup at EventDispatcher handler level using
message_id as key with 5-minute TTL and 2000-entry cap.

This catches duplicate events immediately when they arrive from the Lark
SDK — before the inbound debouncer or processing queue — preventing the
race condition where two concurrent dispatches enter the pipeline before
either records the messageId in the downstream dedup layer.

Fixes the root cause reported in #42687.

* fix(feishu): correct inverted dedup condition

check() returns false on first call (new key) and true on subsequent
calls (duplicate). The previous `!check()` guard was inverted —
dropping every first delivery and passing all duplicates.

Remove the negation so the guard correctly drops duplicates.

* fix(feishu): simplify eventDedup key — drop redundant accountId prefix

eventDedup is already scoped per account (one instance per
registerEventHandlers call), so the accountId prefix in the cache key
is redundant. Use `evt:${messageId}` instead.

* fix(feishu): share inbound processing claim dedupe

---------

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-13 22:37:40 -05:00
Peter Steinberger 8bc163d15f fix(ci): repair helper typing regressions 2026-03-14 03:22:53 +00:00
Peter Steinberger 6a61d5504c refactor: share extension deferred and runtime helpers 2026-03-14 02:40:28 +00:00
Peter Steinberger 1ac4bac8b1 refactor: share extension monitor runtime setup 2026-03-14 02:40:28 +00:00
Peter Steinberger 6decaebcf2 test: share plugin api test harness 2026-03-14 02:40:27 +00:00
Peter Steinberger c3e78908c7 test: share feishu startup mock modules 2026-03-14 02:40:27 +00:00
Peter Steinberger 97dc493e2a refactor: share extension channel status summaries 2026-03-14 02:40:27 +00:00
Peter Steinberger e885f1999f refactor: reduce extension channel setup duplication 2026-03-14 02:40:27 +00:00
Peter Steinberger 74e50d3be3 test: share send cfg threading helpers 2026-03-14 02:40:27 +00:00
Peter Steinberger 55ebdce9c3 refactor: share open allowFrom config checks 2026-03-14 02:40:27 +00:00
Peter Steinberger 38b09866b8 test: share directory runtime helpers 2026-03-14 02:40:27 +00:00
Peter Steinberger 27e863ce40
chore: update dependencies 2026-03-14 02:09:53 +00:00
Peter Steinberger 258945d4d0 test: share status issue assertion helpers 2026-03-14 01:41:17 +00:00
Peter Steinberger 0acd1f63fc test: share startup account lifecycle helpers 2026-03-14 01:41:17 +00:00
Peter Steinberger b61bc4948e refactor: share dual text command gating 2026-03-14 01:41:17 +00:00
Peter Steinberger 91d9573b55 refactor: declone model picker model ref parsing 2026-03-14 01:41:17 +00:00
Peter Steinberger c0831927b0 refactor: share allowlist wildcard matching 2026-03-14 01:41:17 +00:00
Peter Steinberger 66de7311c7 test: share whatsapp outbound poll fixtures 2026-03-14 01:41:17 +00:00
Peter Steinberger 1ec6b012f8 refactor: share zalo status issue helpers 2026-03-14 01:41:17 +00:00
Peter Steinberger 7285e04ead refactor: share whatsapp outbound adapter base 2026-03-14 01:41:17 +00:00
Peter Steinberger 827b166bbc refactor: share zalo send context validation 2026-03-14 01:41:16 +00:00
Peter Steinberger d55fa78e40 refactor: share delimited channel entry parsing 2026-03-14 01:41:16 +00:00
Peter Steinberger 81ea997d40 refactor: share self hosted provider plugin helpers 2026-03-14 01:40:41 +00:00
Peter Steinberger 8de2f7339c test: fix current ci regressions 2026-03-14 01:29:04 +00:00
fabiaodemianyang 983fecc106
fix(feishu): preserve non-ASCII filenames in file uploads (#33912) (#34262)
* fix(feishu): preserve non-ASCII filenames in file uploads (#33912)

* style(feishu): format media test file

* fix(feishu): preserve UTF-8 filenames in file uploads (openclaw#34262) thanks @fabiaodemianyang

---------

Co-authored-by: Robin Waslander <r.waslander@gmail.com>
2026-03-14 01:42:46 +01:00
Val Alexander 0e8672af87
fix(ui): stop dashboard chat history reload storm (#45541)
* UI: stop dashboard chat history reload storm

* Changelog: add PR number for chat reload fix

* fix: resolve branch typecheck regressions
2026-03-13 19:19:53 -05:00
Peter Steinberger a474a9c45d test: reuse feishu streaming merge helper 2026-03-13 23:35:28 +00:00
Peter Steinberger b6c297af8c test: share matrix sdk test mocks 2026-03-13 23:35:28 +00:00
Peter Steinberger 4df8722edf test: share feishu monitor startup mocks 2026-03-13 23:35:28 +00:00
Peter Steinberger 0f8531dea6 test: share synology channel harness 2026-03-13 23:35:28 +00:00
Peter Steinberger 9b0e333f2c refactor: share bluebubbles multipart helpers 2026-03-13 23:35:28 +00:00
Peter Steinberger d7aa3cc1c3 test: share zalouser test helpers 2026-03-13 23:35:28 +00:00
Peter Steinberger 66979bcc2f refactor: share self hosted provider auth flow 2026-03-13 23:35:28 +00:00
Peter Steinberger bbb52087ed test: dedupe llm task embedded run setup 2026-03-13 23:35:27 +00:00
Peter Steinberger a5671ea3d8 test: dedupe discord delivery target setup 2026-03-13 23:35:27 +00:00
Peter Steinberger ccd763aef7 test: dedupe gemini oauth fallback checks 2026-03-13 23:35:27 +00:00
Peter Steinberger b4719455bc test: dedupe gemini oauth project assertions 2026-03-13 23:35:27 +00:00
Peter Steinberger 088d6432a4 test: dedupe diffs file artifact assertions 2026-03-13 23:35:27 +00:00
Peter Steinberger f7b9cfebe1 test: dedupe diffs http local get setup 2026-03-13 23:35:27 +00:00
Peter Steinberger 86caf454f4 refactor: share device pair ipv4 parsing 2026-03-13 23:35:27 +00:00
Peter Steinberger 9b24f890b2 refactor: share voice call message actions 2026-03-13 23:35:27 +00:00
Peter Steinberger 017c0dce32 test: dedupe msteams attachment redirects 2026-03-13 23:35:27 +00:00
Peter Steinberger fd58268f04 test: dedupe bluebubbles normalize fixtures 2026-03-13 23:35:27 +00:00
Peter Steinberger 2ebc7e3ded test: dedupe msteams revoked thread context 2026-03-13 23:35:27 +00:00