2.5 KiB
| kind | slug | title | plan_slug | epic_slug | status | priority | tenant_id | owner | cursor_todo_id | updated_at |
|---|---|---|---|---|---|---|---|---|---|---|
| task | chat-ui-and-navigation | Build chat routes and left-rail navigation | workspace-communications | workspace-chat | ready | P1 | global | unassigned | null | 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]/chatand/[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 testpass.
Links to related Epic / Plan
- Epic:
./Epic-workspace-chat.md - Plan:
../Plan-workspace-communications.md