55 lines
2.5 KiB
Markdown
55 lines
2.5 KiB
Markdown
---
|
|
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`
|