--- kind: task slug: chat-ui-and-navigation title: Build chat routes and left-rail navigation plan_slug: workspace-communications epic_slug: workspace-chat status: ready priority: P1 tenant_id: global owner: unassigned cursor_todo_id: null updated_at: "2026-10-22" --- # Task summary Add the workspace Chat destination, channel UI, composer, and durable unread indicators to the existing application shell. ## Description Create workspace-context routes for channel selection and conversation, integrate Chat into the left icon rail, and use existing Radix/Tailwind UI primitives. Project/object entry points follow in `Task-contextual-chat-authorization.md`; do not imply they work yet. Show only authorized channel titles, previews, mention candidates and counts, and clear inaccessible cached content after revocation. Agent mention-to-add is a separate reviewed membership flow, not a composer side effect. The rail shows a dot when any channel sequence exceeds its durable read boundary and a numeric badge for validated mentions plus unread direct-channel activity. Badge counts come from durable server state, are refreshed by realtime events, and later transition to unified notification projections without changing the rail contract. ## Subtasks - [ ] Add `/[workspaceSlug]/chat` and `/[workspaceSlug]/chat/[channelSlug]` routes. - [ ] Build channel navigation, per-channel cursor-paginated history, a minimal complete thread list/reply surface, and composer states. - [ ] Add Chat to the icon rail with accessible unread, mention, and direct-message indicators. - [ ] Advance read state only to the highest intentionally viewed sequence and reconcile changes from other devices. - [ ] Handle optimistic message/reply sends, retries, per-channel reconnect catch-up, empty states, keyboard navigation, and mobile layout. ## Owner or assignee `unassigned` ## Status `ready` ## Estimation `L` ## Acceptance criteria - [ ] Chat is keyboard-accessible from the existing left rail. - [ ] Message/thread history and sequence-based unread state survive reload and multi-device use. - [ ] Cross-device mark-read events reconcile rail and channel indicators to durable server truth. - [ ] Failed optimistic messages and replies are visibly retryable and cannot silently disappear. - [ ] Mention badges use an accessible label and do not rely on color alone. - [ ] `pnpm lint && pnpm type-check && pnpm test` pass. ## Links to related Epic / Plan - Epic: `./Epic-workspace-chat.md` - Plan: `../Plan-workspace-communications.md`