mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-05 12:33:33 +00:00
Makes native iMessage polls behave correctly end to end. What changed: - Inbound polls render with a numbered-options vote cue so the agent casts a native vote instead of answering the poll in prose. - poll-vote resolves the poll reference from pollId/pollGuid/messageId and now defaults to the current inbound poll message when the model omits it; still errors when no reference exists. - poll-vote echo suppression is session-scoped, so the redundant spoken answer is dropped across the separate poll and comment runs. - A poll's inline-reply caption is folded (not delivered as a standalone question) only when the poll creator and reply sender are both known and equal; unknown/mismatched sender falls through to the normal inbound decision gate, so no inbound reply is silently dropped. Evidence: - 64 passing tests in the poll suites (poll-comment, poll-render, actions), incl. sender fail-closed regressions; pnpm build clean. - Two Codex autoreviews clean (patch is correct); ClawSweeper re-review rated it platinum hermit. - Live-verified on macOS 26.4.1 on the deployed gateway: poll "What color pill?" -> native vote delivered with a 7333-byte payload, caption folded, zero echo. Note: vote delivery also depends on the imsg vote-stamp fix (openclaw/imsg#150); OpenClaw ships ahead of imsg per owner decision.