openclaw/extensions
efe-arv f66f563c1a fix(matrix): fix multiple Conduit compatibility issues preventing message delivery
## Changes

### 1. Fix client.start() hanging forever (shared.ts)
The bot-sdk's `client.start()` returns a promise that never resolves
(infinite sync loop). The plugin awaited it, blocking the entire provider
startup — `logged in as` never printed, no messages were processed.

Fix: fire-and-forget with error handler + 2s initialization delay.

### 2. Fix DM false positive for 2-member rooms (direct.ts)
`memberCount === 2` heuristic misclassified explicitly configured group
rooms as DMs when only bot + one user were joined. Messages were routed
through DM policy and silently dropped.

Fix: remove member count heuristic; only trust `m.direct` account data
and `is_direct` room state flag.

Ref: #20145

### 3. Prevent duplicate event listener registration (events.ts)
When both bundled channel plugin and extension load, listeners were
registered twice on the same shared client, causing inconsistent state.

Fix: WeakSet guard to skip registration if client already has listeners.

Ref: #18330

### 4. Add startup grace period (index.ts)
`startupGraceMs = 0` dropped messages timestamped during async setup.
Especially problematic with Conduit which retries on `M_NOT_FOUND`
during filter creation.

Fix: 5-second grace period.

### 5. Fix room ID case sensitivity with Conduit (index.ts)
Room IDs (`!xyz`) without `:server` suffix failed the
`includes(':')` check and were sent to `resolveMatrixTargets`, which
called Conduit's `resolveRoom` — returning lowercased IDs. The bot-sdk
emits events with original-case IDs, causing config lookup mismatches
and reply delivery failures (`M_UNKNOWN: non-create event for room of
unknown version`).

Fix: treat `!`-prefixed entries as room IDs directly (skip resolution).
Only resolve `#alias:server` entries.

## Testing

Tested with Conduit homeserver (lightweight Rust Matrix server).
All fixes verified with gateway log tracing:
- `logged in as @arvi:matrix.local` — first successful login
- `room.message` events fire and reach handler
- Room config matching returns `allowed: true`
- Agent generates response and delivers it to Matrix room
2026-03-02 00:15:10 +00:00
..
acpx fix(acpx): share windows wrapper resolver and add strict hardening mode 2026-03-01 23:57:06 +00:00
bluebubbles fix(channels): align command-body parsing sources 2026-03-01 23:11:48 +00:00
copilot-proxy chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
device-pair
diagnostics-otel chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
diffs chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
discord chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
feishu fix(security): harden webhook memory guards across channels 2026-03-02 00:12:05 +00:00
google-gemini-cli-auth chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
googlechat chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
imessage chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
irc chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
line chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
llm-task chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
lobster test(lobster): preserve execFile in child_process mock 2026-03-02 00:10:51 +00:00
matrix fix(matrix): fix multiple Conduit compatibility issues preventing message delivery 2026-03-02 00:15:10 +00:00
mattermost fix(channels): align command-body parsing sources 2026-03-01 23:11:48 +00:00
memory-core chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
memory-lancedb chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
minimax-portal-auth chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
msteams fix(channels): align command-body parsing sources 2026-03-01 23:11:48 +00:00
nextcloud-talk chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
nostr fix(security): harden webhook memory guards across channels 2026-03-02 00:12:05 +00:00
open-prose chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
phone-control
qwen-portal-auth
shared fix(acpx): share windows wrapper resolver and add strict hardening mode 2026-03-01 23:57:06 +00:00
signal chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
slack chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
synology-chat fix(security): harden webhook memory guards across channels 2026-03-02 00:12:05 +00:00
talk-voice
telegram chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
test-utils
thread-ownership
tlon chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
twitch chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
voice-call chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
whatsapp chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00
zalo fix(security): harden webhook memory guards across channels 2026-03-02 00:12:05 +00:00
zalouser chore(release): bump version to 2026.3.1 2026-03-01 21:14:17 +00:00