Skip to content

Commit 8abc633

Browse files
authored
Add Signal status reaction lifecycle (#98791)
1 parent 0e22e54 commit 8abc633

12 files changed

Lines changed: 1429 additions & 26 deletions

File tree

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
8d3f96473f2a898cf780bd8e0e13d18680ca8c826113afc85d68e427f08bde38 config-baseline.json
2-
e9233d48c7e9a6ea0c0fe88dc3e967f1d442f7aaf5378456e0122327b09cab62 config-baseline.core.json
3-
3481095e60646b4b1449c939d4b88c272fdff11c736000ed1bbe501720ca8e9a config-baseline.channel.json
4-
ade8513f5d154d0322fded9d30d3709c0908e37306f72a01585d057141befd0b config-baseline.plugin.json
1+
21f3dfbfff89b8d1dc161b5b04317ac073c50a3f8db182b0166044777ee414db config-baseline.json
2+
779f198adce17689fba937916cc95a6a8088c510d0b18af0bcb6165c85d579c5 config-baseline.core.json
3+
f356486b9f38b96034c0e73775198cf25d872bfc2d3d5c886ccfde8ed1b5f881 config-baseline.channel.json
4+
859aa272b0dad53b7080c6fefcf775347ae79a1998ec39dd18b732c90d9df90c config-baseline.plugin.json

docs/channels/signal.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,24 @@ Groups:
289289
- **Read receipts**: when `channels.signal.sendReadReceipts` is true, OpenClaw forwards read receipts for allowed DMs.
290290
- Signal-cli does not expose read receipts for groups.
291291

292+
## Lifecycle status reactions
293+
294+
Set `messages.statusReactions.enabled: true` to let Signal show the shared
295+
queued/thinking/tool/compaction/done/error reaction lifecycle on inbound turns.
296+
Signal uses the inbound message timestamp as the reaction target; group
297+
reactions are sent with the Signal group id plus the original sender as the
298+
target author.
299+
300+
Status reactions also require an ack reaction and a matching
301+
`messages.ackReactionScope` (`direct`, `group-all`, `group-mentions`, or `all`).
302+
Set `channels.signal.reactionLevel: "off"` to disable Signal status reactions.
303+
The message-tool `react` action remains stricter: it requires
304+
`reactionLevel: "minimal"` or `"extensive"`.
305+
306+
`messages.removeAckAfterReply: true` clears the final status reaction after the
307+
configured hold time. Otherwise Signal restores the initial ack reaction after
308+
the final done/error state.
309+
292310
## Reactions (message tool)
293311

294312
- Use `message action=react` with `channel=signal`.

docs/docs_map.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,7 @@ Do not edit it by hand; run `pnpm docs:map:gen`.
817817
- H2: How it works (behavior)
818818
- H2: Media + limits
819819
- H2: Typing + read receipts
820+
- H2: Lifecycle status reactions
820821
- H2: Reactions (message tool)
821822
- H2: Approval reactions
822823
- H2: Delivery targets (CLI/cron)

docs/gateway/config-agents.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1386,10 +1386,10 @@ Variables are case-insensitive. `{think}` is an alias for `{thinkingLevel}`.
13861386
- Per-channel overrides: `channels.<channel>.ackReaction`, `channels.<channel>.accounts.<id>.ackReaction`.
13871387
- Resolution order: account → channel → `messages.ackReaction` → identity fallback.
13881388
- Scope: `group-mentions` (default), `group-all`, `direct`, `all`.
1389-
- `removeAckAfterReply`: removes ack after reply on reaction-capable channels such as Slack, Discord, Telegram, WhatsApp, and iMessage.
1390-
- `messages.statusReactions.enabled`: enables lifecycle status reactions on Slack, Discord, Telegram, and WhatsApp.
1389+
- `removeAckAfterReply`: removes ack after reply on reaction-capable channels such as Slack, Discord, Signal, Telegram, WhatsApp, and iMessage.
1390+
- `messages.statusReactions.enabled`: enables lifecycle status reactions on Slack, Discord, Signal, Telegram, and WhatsApp.
13911391
On Slack and Discord, unset keeps status reactions enabled when ack reactions are active.
1392-
On Telegram and WhatsApp, set it explicitly to `true` to enable lifecycle status reactions.
1392+
On Signal, Telegram, and WhatsApp, set it explicitly to `true` to enable lifecycle status reactions.
13931393
- `messages.statusReactions.emojis`: overrides lifecycle emoji keys:
13941394
`queued`, `thinking`, `compacting`, `tool`, `coding`, `web`, `deploy`, `build`,
13951395
`concierge`, `done`, `error`, `stallSoft`, and `stallHard`.

0 commit comments

Comments
 (0)