Submatter/plans/Plan-workspace-communications/Epic-workspace-chat/Task-chat-ui-and-navigation.md

56 lines
2.5 KiB
Markdown
Raw Permalink Normal View History

---
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`