mirror of
https://github.com/openclaw/openclaw.git
synced 2026-10-03 01:29:56 +00:00
Follow-up to #161053 (shared-session emoji reactions). Reaction writes now run through the SQLite worker admission the sibling session stores use (runOpenClawAgentWorkerWrite); the native path stays only for process-held incognito databases the worker cannot reopen by path, and the handler revalidates live authority around the awaited write. The plugin action dispatch path awaits onPlatformSendDispatch right before the synchronous handoff fence, exactly like the send path, so the reaction mirror re-reads the conversation binding at the final handoff and refuses a message whose conversation was rebound while the action runner prepared delivery. Channels with one bot reaction per message (Telegram bots, WhatsApp) declare the new optional ChannelPlugin.capabilities.reactionSlots = "single"; when a person removes one emoji while others remain, the mirror re-sets the newest surviving emoji instead of clearing the slot. Multi-slot channels are unchanged. Also trims redundant scaffolding in the reaction handler, kernel, UI component and worker. Proof: 119 focused tests across store, handler, dispatch and UI; mocked Gateway reactions e2e; typecheck lanes; database-worker inventory check; live two-person Gateway proof with the qa-channel mirror reporting delivered through the final-dispatch hook. |
||
|---|---|---|
| .. | ||
| config | ||
| docs/design-system | ||
| public | ||
| scripts | ||
| src | ||
| test | ||
| .gitignore | ||
| AGENTS.md | ||
| index.html | ||
| package.json | ||
| tsconfig.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
| vitest.node.config.ts | ||