Woodstock Docs
Proposals

Channel threads

Side conversations inside each channel, with a personal thread list and agents that stay in the discussion.

Proposal — not built yet. Agreed product direction with Vee, for alignment with Turbo.

Take a side conversation out of the main channel without losing its context. A supplier question stays in the channel; the comparison, attached quotations and agent answer live in its thread.

Try the wireframe

Switch between Desktop and Mobile. Click a reply count to open a conversation, or use the channel panel to browse your threads. The preview uses sample content; sending and edge cases are not simulated. Reply actions are exposed beneath messages for the demo; in the product they belong in the message action menu.

Open the wireframe in a new tab ↗

How it works

  • Reply or Reply in thread: Reply stays in the main channel. Reply in thread opens a separate discussion attached to that message; its first sent reply creates the thread.
  • A small summary under the root: participant avatars, reply count and latest-reply time open the conversation. Participants are people or agents who posted, not everyone following.
  • Inside the existing channel panel: Threads sits alongside App, Activity, Routines and Members. Choose a conversation, then use Back to return to the list. The drawer toggle closes the panel; mobile uses the full-screen counterpart.
  • Your list, in this channel: starting, replying or being directly mentioned adds a thread to your personal list, ordered by latest activity. A thread in #general never appears in #random. Simply viewing one does not add it.
  • Only mentions interrupt: ordinary thread replies stay silent, including replies to your own message. No Following label or mute control.
  • Agents stay in the discussion: mention an agent to invoke it; reply to its answer to continue. Progress, questions, approvals and answers stay in the thread. The channel’s auto-capture rules still apply to drops there.

A few boundaries

  • Before the first reply: show “Reply to start this thread.” Opening it creates no empty thread in the list; leaving preserves your draft and channel position.
  • Read state: replies become read when viewed in the thread, not when opening the channel or list.
  • Deleted messages: deleting the root leaves a placeholder and keeps the discussion. Withdrawn replies retain their placeholders and remain in the count.
  • Mention links: open the parent channel and its thread; thread Back returns to that channel’s personal list.
  • Existing replies: inline replies stay where they are.
  • Out of scope: nested threads, titles, private-thread invitations, closing/archiving and “also send to channel”.
  • Access: everyone’s existing channel access still applies; a mention grants no new permissions.

For implementation alignment: Turbo should lead the backend/runtime prep for thread messages, personal lists/read state, mention-only notifications and thread-aware agent/capture work. The current messaging contract needs an owner-reviewed extension before implementation. Detailed requirements and acceptance checks live in docs/product/WS002_chat-enhancements/WS002_threads-prd.md; the decision record is 0273.

On this page