mirror of https://github.com/openclaw/openclaw.git
## 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 |
||
|---|---|---|
| .. | ||
| acpx | ||
| bluebubbles | ||
| copilot-proxy | ||
| device-pair | ||
| diagnostics-otel | ||
| diffs | ||
| discord | ||
| feishu | ||
| google-gemini-cli-auth | ||
| googlechat | ||
| imessage | ||
| irc | ||
| line | ||
| llm-task | ||
| lobster | ||
| matrix | ||
| mattermost | ||
| memory-core | ||
| memory-lancedb | ||
| minimax-portal-auth | ||
| msteams | ||
| nextcloud-talk | ||
| nostr | ||
| open-prose | ||
| phone-control | ||
| qwen-portal-auth | ||
| shared | ||
| signal | ||
| slack | ||
| synology-chat | ||
| talk-voice | ||
| telegram | ||
| test-utils | ||
| thread-ownership | ||
| tlon | ||
| twitch | ||
| voice-call | ||
| zalo | ||
| zalouser | ||