openclaw - ✅(Solved) Fix [Feature]: Support quote replies in signal [1 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#68665Fetched 2026-04-19 15:08:53
View on GitHub
Comments
0
Participants
1
Timeline
1
Reactions
0
Author
Participants
Timeline (top)
labeled ×1

Support quote replies in signal.

Root Cause

Support quote replies in signal.

PR fix notes

PR #57806: Signal quote reply

Description (problem / solution / changelog)

Summary

Describe the problem and fix in 2–5 bullets:

  • Problem: Signal quoted replies were only used as a fallback body, so quote id/author context was dropped before hooks saw the message, as a result OpenClaw could not see quote replies. This PR adds that feature.
  • What changed: Signal inbound handling now maps quote metadata into MsgContext, hook mappers forward that reply metadata into plugin/internal hook events, and the Signal inbound-context test was rewritten to mock heavy seams before import so the coverage actually runs.
  • This PR depends on running signal-cli 0.13.14 or greater. I explicitly didn't couple verifying that is present with this PR, but can do so in a follow-up PR. I have a draft of doing it in Doctor but ran into test timeout hell with doctor-install.ts tests.
  • The tests I (via Codex) wrote are also heavily mocked due to timeout issues. Happy to discuss trade-offs / adjust.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Integrations
  • API / contracts
  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes #
  • Related #
  • This PR fixes a bug or regression

Root Cause / Regression History (if applicable)

  • Root cause: extensions/signal/src/monitor/event-handler.ts only treated dataMessage.quote.text as a body fallback and never mapped quote id/author into finalized inbound context; src/hooks/message-hook-mappers.ts also did not forward reply metadata into plugin/internal hook events.
  • Missing detection / guardrail: no Signal hook-path test asserted ReplyTo* propagation end-to-end, and the old inbound-context test was heavy enough to stall on import.
  • Prior context (git blame, prior PR, issue, or refactor if known): long-standing omission in Signal inbound context plus generic hook canonicalization; not tied to a known recent refactor.
  • Why this regressed now: not a recent regression, more an exposed gap once reply-aware hook consumers needed quote context.
  • If unknown, what was ruled out: N/A

Regression Test Plan (if applicable)

  • Coverage level that should have caught this:
    • Unit test
    • Seam / integration test
    • End-to-end test
    • Existing coverage already sufficient
  • Target test or file: extensions/signal/src/monitor/event-handler.inbound-context.test.ts and src/auto-reply/reply/dispatch-from-config.test.ts
  • Scenario the test should lock in: a quoted Signal inbound message populates ReplyToId, ReplyToBody, ReplyToSender, and ReplyToIsQuote in MsgContext, and hook metadata preserves those fields.
  • Why this is the smallest reliable guardrail: it covers Signal parsing, finalized inbound context, and hook mapping without needing a live Signal daemon.
  • Existing test that already covers this (if any): src/auto-reply/reply/dispatch-from-config.test.ts now covers reply metadata on hook emission once the inbound context includes it.
  • If no new test is added, why not: N/A

User-visible / Behavior Changes

  • Signal inbound hook consumers now receive quoted-reply metadata in hook payloads: replyToId, replyToBody, replyToSender, and replyToIsQuote.
  • No config, env, or default behavior changes.
  • Test-only change: the focused Signal inbound-context test no longer stalls on import.

Diagram (if applicable)

Before:
Signal quoted reply -> quote text maybe used as fallback body -> hook metadata loses reply context

After:
Signal quoted reply -> MsgContext ReplyTo* fields -> canonical hook context -> plugin/internal hooks receive reply metadata

Security Impact (required)

  • New permissions/capabilities? (No)
  • Secrets/tokens handling changed? (No)
  • New/changed network calls? (No)
  • Command/tool execution surface changed? (No)
  • Data access scope changed? (No)
  • If any Yes, explain risk + mitigation: N/A

Repro + Verification

Environment

  • OS: tested Linux & macOS
  • Runtime/container: Node 24 + pnpm + Vitest
  • Model/provider: gpt 5.4
  • Integration/channel (if any): Signal
  • Relevant config (redacted): synthetic Signal receive envelope via test harness; default Signal test deps with quoted reply payload

Steps

  1. From main or latest release, quote reply in Signal, and ask the OpenClaw to play it back.

Expected

  • OpenClaw can see the quoted message.

Actual

  • OpenClaw cannot see the quoted message.

Evidence

Attach at least one:

  • Failing test/log before + passing after
  • Trace/log snippets
  • Screenshot/recording
  • Perf numbers (if relevant)

Human Verification (required)

What you personally verified (not just CI), and how:

  • Verified scenarios: quoted Signal replies can be played back by OpenClaw assertions still pass; hook metadata propagation is covered in src/auto-reply/reply/dispatch-from-config.test.ts.
  • Edge cases checked: quote id normalization to string, quote author fallback ordering, and no import-time hang in the focused Signal test.
  • What you did not verify: live Signal daemon roundtrip or third-party plugin end-to-end hook consumption.
<img width="1047" height="262" alt="Screenshot 2026-03-30 at 10 44 15 AM" src="https://github.com/user-attachments/assets/91a88abc-6cbe-4d2f-bfbd-ef46b49d822a" />

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Compatibility / Migration

  • Backward compatible? (Yes)
  • Config/env changes? (No)
  • Migration needed? (No)
  • If yes, exact upgrade steps: N/A

Risks and Mitigations

  • Risk: reply metadata is now present in hook payloads where some plugin consumers may have assumed it was absent.
    • Mitigation: the fields are additive and optional, so existing consumers can ignore them safely.
  • Risk: the new test uses aggressive pre-import mocks and could drift from runtime behavior.
    • Mitigation: the assertions stay focused on externally observable handler behavior, and pnpm check plus the targeted Signal test remain green.

Changed files

  • extensions/signal/src/monitor/event-handler.inbound-context.test.ts (modified, +455/-9)
  • extensions/signal/src/monitor/event-handler.ts (modified, +24/-9)
  • extensions/signal/src/monitor/event-handler.types.ts (modified, +9/-1)
  • extensions/signal/src/monitor/inbound-context.ts (modified, +13/-3)
  • src/auto-reply/reply/dispatch-from-config.test.ts (modified, +18/-0)
  • src/hooks/message-hook-mappers.ts (modified, +20/-0)
RAW_BUFFERClick to expand / collapse

Summary

Support quote replies in signal.

Problem to solve

Signal quoted replies were only used as a fallback body, so quote id/author context was dropped before hooks saw the message, as a result OpenClaw could not see quote replies.

Proposed solution

https://github.com/openclaw/openclaw/pull/57806

Alternatives considered

No response

Impact

Affects signal users. Severity effectively blocks responding to any message except the last deterministically. Frequency always Consequence lots of cutting and pasting of previous messages to ensure the right context is used in replies.

Evidence/examples

See PR

Additional information

I've been running this fix for about three weeks. Can't really use Signal without it.

extent analysis

TL;DR

Apply the proposed solution from pull request #57806 to support quote replies in Signal.

Guidance

  • Review the proposed solution in the pull request to understand the changes needed to support quote replies.
  • Verify that the changes do not introduce any regressions or compatibility issues with existing functionality.
  • Test the updated code with various quote reply scenarios to ensure it works as expected.
  • Consider reaching out to the author of the pull request for more information on their testing experience and any potential caveats.

Example

No code snippet is provided as the issue references a specific pull request with the proposed solution.

Notes

The proposed solution has been tested by the author for three weeks, which provides some confidence in its stability. However, further testing and review are still necessary to ensure its correctness and compatibility.

Recommendation

Apply the workaround by merging the proposed solution from pull request #57806, as it has been tested and seems to address the issue effectively.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix [Feature]: Support quote replies in signal [1 pull requests, 1 participants]