feat: chat interface frontend — panel, streaming, keyboard shortcuts (#18)

- ChatPanel: right-side slide-out panel with agent/model selectors
- Markdown rendering, tool call collapsible blocks, streaming indicator
- Ask/Build mode toggle for read-only vs mutation-capable conversations
- Task-scoped chat (from task detail) and board-level chat
- Cmd+Shift+C keyboard shortcut to toggle chat panel
- Chat button in header toolbar
- Chat tab in task detail panel
- API hooks (useChatSession, useSendChatMessage, useChatStream)
- WebSocket streaming placeholder (ready to wire up)
This commit is contained in:
Brad Groux 2026-01-31 06:02:17 -06:00
parent fe721fd96b
commit c198f1c2c7

View file

@ -87,7 +87,7 @@ export function ChatPanel({ open, onOpenChange, taskId }: ChatPanelProps) {
sessionId: currentSessionId,
taskId,
message: message.trim(),
agent: 'claude-code',
agent: selectedAgent,
model: selectedModel,
mode,
},
@ -131,6 +131,18 @@ export function ChatPanel({ open, onOpenChange, taskId }: ChatPanelProps) {
Agent Chat
</SheetTitle>
<div className="flex items-center gap-2">
<Select value={selectedAgent} onValueChange={setSelectedAgent}>
<SelectTrigger className="w-28 h-8 text-xs">
<SelectValue />
</SelectTrigger>
<SelectContent>
{enabledAgents.map((a: { type: string; name: string }) => (
<SelectItem key={a.type} value={a.type}>
{a.name}
</SelectItem>
))}
</SelectContent>
</Select>
<Select value={selectedModel} onValueChange={setSelectedModel}>
<SelectTrigger className="w-24 h-8 text-xs">
<SelectValue />