block / block/buzz

Desktop: room shows no 'Working' indicator when a bot answers a room-level mention with a threaded reply (typing is thread-scoped)

Open
#7,587 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

**Summary**

When a bot answers a room-level @mention and its reply is threaded under the triggering message (the OpenClaw Buzz plugin's default `replyToMode`), the bot's typing indicator (kind 20002) carries the triggering message as its thread root. Desktop treats that as thread-scoped typing and, by design, keeps it off the channel-level surfaces (`useChannelActivityTyping.ts`: "thread-only typing must not light channel-level surfaces"). Result: the human asked in the room, the bot is working, and the room shows nothing until the reply lands. Only the thread view (which does not exist yet from the human's point of view) would have shown "Working".

Agents without an observer stream (remote harnesses, no `buzz-acp`) only have the typing fallback, so for them the room never shows work on room-level questions.

**Repro (desktop 0.5.23 source, read 2026-09-11)**

1. Bot connected via a remote harness (no kind-24200 observer frames), replies threaded.
2. Human posts a room-level message mentioning the bot.
3. Bot publishes 20002 with `["h", room]` + `["e", , "", "reply"]` every 3 s while working.
4. Channel pane composer bar and sidebar badge stay idle; the reply then appears as "1 reply" under the human's message.

Measured with a relay subscriber: 8 typing events over ~15 s, all thread-scoped, zero channel-scoped.

**Ask**

When thread-scoped bot typing targets a thread head that is visible in the channel pane (a top-level message), surface it in the channel: e.g. a "working in thread" affordance on the root message, or count it toward the composer bar with a thread hint. Related: #5250 (no indicator in forum threads), #5066 (channel-scoped activity on iOS).

**Workaround we run**

Plugin-side: publish a second, channel-scoped 20002 (h tag only) alongside the thread-scoped one while the reply is in flight. Works, but it is a dist patch we have to carry across plugin updates.

Contributor guide

Open the contributing guide

Research direction

Start by reading useChannelActivityTyping.ts and tracing how thread-scoped kind 20002 events reach the channel pane composer bar, sidebar badge, and root messages. Verify the behavior with a top-level room mention whose reply is threaded and confirm that visible thread-root activity produces a channel-level working affordance without incorrectly lighting unrelated channel surfaces.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
desktop, frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.