## Summary Build the management dashboard UI: channel registration, visual route editor (ReactFlow), and threads/turns monitoring. ## Tasks ### Channel Registration - [ ] List registered channels with status (connected/disconnected) - [ ] Add channel wizard: select platform → enter credentials → test connection → save - [ ] Edit / delete channels - [ ] Show channel API key (masked by default, copy button) ### Route Editor (ReactFlow) - [ ] Visual flow: channel nodes → criteria nodes → recipient nodes - [ ] Drag-and-drop route creation - [ ] Criteria configuration panel (channel, group, DM, thread, mention, sender, content pattern) - [ ] Priority ordering (drag to reorder) - [ ] Test route: simulate an inbound message → highlight matching routes ### Threads & Turns Dashboard - [ ] List threads with filters (channel, target, date range, status) - [ ] Thread detail: chronological turn log with message content - [ ] Turn detail: raw envelope, A2H intent/response (if applicable), timestamps - [ ] Search across threads ### Settings - [ ] Global configuration: default token TTL, trust layer toggle - [ ] Per-channel overrides ## Acceptance Criteria - User can register a new Slack channel via the wizard and see it listed - User can create a route visually in ReactFlow and save it - Route test correctly highlights matching routes for a simulated message - Thread list is filterable and searchable - Thread detail shows full turn history - All CRUD operations reflect immediately in the UI ## Dependencies - #11 (Server: API Routes) — dashboard consumes the management API ## References - [VISION.md — Architecture / UI Layer](./VISION.md#5-architecture) - [VISION.md — Tech Stack](./VISION.md#7-tech-stack) - [PLAN.md — Phase 4.3](./PLAN.md#43-dashboard-ui)
Activity
claude commentedon Apr 10, 2026
@claude Implement this issue.
meta/17meta/17fixes #13in the PR bodyclaude commentedon Apr 10, 2026
Claude finished @claude[bot]'s task in 13m 23s —— View job •
claude/17-issue-13-20260410-2244• Create PR ➔Implemented Dashboard UI
lib/api-client.ts)What was implemented
New pages (
/dashboard/*):/dashboard/dashboard/channels/dashboard/routes/dashboard/threads/dashboard/threads/[id]/dashboard/settingsNew API endpoints:
POST /api/routes/test— simulate inbound criteria → returns matching route IDs (used by "Test Route" panel)GET /api/settings— read global settings from MongoDBPUT /api/settings— update global settingsUpdated:
GET /api/threads—channelIdis now optional; addedsearchquery param for full-text filteringlib/db.ts— addedlistThreads(),getSettings(),updateSettings(),AppSettings,ChannelOverridetypes/dashboardAntdRegistryfor proper Next.js SSR CSS handling|
github-actions commentedon Apr 10, 2026
To retry with fix context, comment
@claude fixon this issue.ggondim commentedon Apr 10, 2026
@claude fix
claude commentedon Apr 10, 2026
Claude finished @ggondim's task in 11m 54s —— View job •
claude/17-issue-13-20260410-2321• Create PR ➔Fixed Dashboard UI Implementation
AppSettings/ChannelOverridetypes directly inapi-client.ts(avoids importing from server-onlylib/db.tsin client components)onConnectparameter frombuildGraphinRouteFlowCanvas.tsx…,→) instead of JS string literals in JSXWhat was implemented
New pages (
/dashboard/*):/dashboard/dashboard/channels/dashboard/routes/dashboard/threads/dashboard/threads/[id]/dashboard/settingsNew API endpoints:
POST /api/routes/test— simulate inbound criteria → returns matching route IDsGET /api/settings— read global settings from MongoDBPUT /api/settings— update global settingsUpdated:
GET /api/threads—channelIdnow optional; addedsearchquery paramlib/db.ts— addedlistThreads(),AppSettings,ChannelOverride,getSettings(),updateSettings()/dashboardAntdRegistryfor proper Next.js SSR CSS handling•
claude/17-issue-13-20260410-2321github-actions commentedon Apr 10, 2026
❌ Fix agent also failed. View run — Manual intervention may be needed.