openclaw/docs/channels
Vincent Koc 89a1e99815
fix(slack): finalize replyToMode off threading behavior (#23799)
* fix: make replyToMode 'off' actually prevent threading in Slack

Three independent bugs caused Slack replies to always create threads
even when replyToMode was set to 'off':

1. Typing indicator created threads via statusThreadTs fallback (#16868)
   - resolveSlackThreadTargets fell back to messageTs for statusThreadTs
   - 'is typing...' was posted as thread reply, creating a thread
   - Fix: remove messageTs fallback, let statusThreadTs be undefined

2. [[reply_to_current]] tags bypassed replyToMode entirely (#16080)
   - Slack dock had allowExplicitReplyTagsWhenOff: true
   - Reply tags from system prompt always threaded regardless of config
   - Fix: set allowExplicitReplyTagsWhenOff to false for Slack

3. Contradictory replyToMode defaults in codebase (#20827)
   - monitor/provider.ts defaulted to 'all'
   - accounts.ts defaulted to 'off' (matching docs)
   - Fix: align provider.ts default to 'off' per documentation

Fixes: openclaw/openclaw#16868, openclaw/openclaw#16080, openclaw/openclaw#20827

* fix(slack): respect replyToMode in DMs even with typing indicator thread

When replyToMode is 'off' in DMs, replies should stay in the main
conversation even when the typing indicator creates a thread context.

Previously, when incomingThreadTs was set (from the typing indicator's
thread), replyToMode was forced to 'all', causing all replies to go
into the thread.

Now, for direct messages, the user's configured replyToMode is always
respected. For channels/groups, the existing behavior is preserved
(stay in thread if already in one).

This fix:
- Keeps the typing indicator working (statusThreadTs fallback preserved)
- Prevents DM replies from being forced into threads
- Maintains channel thread continuity

Fixes #16868

* refactor(slack): eliminate redundant resolveSlackThreadContext call

- Add isThreadReply to resolveSlackThreadTargets return value
- Remove duplicate call in dispatch.ts
- Addresses greptile review feedback with cleaner DRY approach

* docs(slack): add JSDoc to resolveSlackThreadTargets

Document return values including isThreadReply distinction between
genuine user thread replies vs bot status message thread context.

* docs(changelog): record Slack replyToMode off threading fixes

---------

Co-authored-by: James <jamesrp13@gmail.com>
Co-authored-by: theoseo <suhong.seo@gmail.com>
2026-02-22 13:27:50 -05:00
..
bluebubbles.md docs: revert automated heading consistency edits (#22743) 2026-02-21 11:18:29 -05:00
broadcast-groups.md docs: canonicalize docs paths and align zh navigation (#11428) 2026-02-07 15:40:35 -05:00
channel-routing.md fix(routing): exclude peer-specific bindings from guild-wide matching (#15274) 2026-02-14 03:05:09 +01:00
discord.md fix: fail closed missing provider group policy across message channels (#23367) (thanks @bmendonca3) 2026-02-22 12:21:04 +01:00
feishu.md docs: revert automated heading consistency edits (#22743) 2026-02-21 11:18:29 -05:00
googlechat.md docs: revert automated heading consistency edits (#22743) 2026-02-21 11:18:29 -05:00
grammy.md refactor(config): unify streaming config across channels 2026-02-21 19:53:42 +01:00
group-messages.md docs: canonicalize docs paths and align zh navigation (#11428) 2026-02-07 15:40:35 -05:00
groups.md fix: fail closed missing provider group policy across message channels (#23367) (thanks @bmendonca3) 2026-02-22 12:21:04 +01:00
imessage.md fix: fail closed missing provider group policy across message channels (#23367) (thanks @bmendonca3) 2026-02-22 12:21:04 +01:00
index.md feat: IRC — add first-class channel support 2026-02-10 17:33:57 -06:00
irc.md feat: IRC — add first-class channel support 2026-02-10 17:33:57 -06:00
line.md fix: fail closed missing provider group policy across message channels (#23367) (thanks @bmendonca3) 2026-02-22 12:21:04 +01:00
location.md Docs: add nav titles across docs (#5689) 2026-01-31 15:04:03 -06:00
matrix.md fix: fail closed missing provider group policy across message channels (#23367) (thanks @bmendonca3) 2026-02-22 12:21:04 +01:00
mattermost.md fix: fail closed missing provider group policy across message channels (#23367) (thanks @bmendonca3) 2026-02-22 12:21:04 +01:00
msteams.md docs: revert automated heading consistency edits (#22743) 2026-02-21 11:18:29 -05:00
nextcloud-talk.md docs: revert automated heading consistency edits (#22743) 2026-02-21 11:18:29 -05:00
nostr.md docs: revert automated heading consistency edits (#22743) 2026-02-21 11:18:29 -05:00
pairing.md fix: enforce feishu dm policy + pairing flow (#14876) (thanks @coygeek) 2026-02-13 05:48:22 +01:00
signal.md fix: fail closed missing provider group policy across message channels (#23367) (thanks @bmendonca3) 2026-02-22 12:21:04 +01:00
slack.md fix(slack): finalize replyToMode off threading behavior (#23799) 2026-02-22 13:27:50 -05:00
telegram.md docs(telegram): align Node22 network defaults and setup guidance 2026-02-22 17:54:16 +01:00
tlon.md docs: revert automated heading consistency edits (#22743) 2026-02-21 11:18:29 -05:00
troubleshooting.md docs(telegram): document allowlist id requirement 2026-02-14 16:51:59 +01:00
twitch.md docs: revert automated heading consistency edits (#22743) 2026-02-21 11:18:29 -05:00
whatsapp.md fix: fail closed missing provider group policy across message channels (#23367) (thanks @bmendonca3) 2026-02-22 12:21:04 +01:00
zalo.md docs: revert automated heading consistency edits (#22743) 2026-02-21 11:18:29 -05:00
zalouser.md docs: revert automated heading consistency edits (#22743) 2026-02-21 11:18:29 -05:00