Skip to content

feat(web): queue messages while a chat is running (outbox parity with mobile) #20

Description

@radroid

Summary

The web app has no message queue — sending while a turn is running is blocked. Mobile already has a per-thread "thread outbox". Bring full parity to web.

Behavior (mirror mobile)

  • Every send enqueues to a per-thread FIFO outbox; the head auto-delivers when the thread is idle + connected (holds while running/starting).
  • Queued items are editable and removable; queue persists across reload (localStorage).
  • Composer: when the chat is running, the primary button becomes Queue; Stop/interrupt moves to a secondary control.

Implementation

  • Client-only: the server does not buffer mid-turn sends (confirmed) — holding is purely a client concern.
  • Hook: ChatView onSend + a drain useEffect keyed on threadSettled predicates (canSettle / effectiveSettled / hasQueuedTurnStart).
  • Reuse pure helpers from packages/shared where applicable; do not modify the mobile app.

Part of the overnight web-app notifications + queue work.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions