**All tests passed. Two bugs found and fixed:** 1. **Delete/archive missing refresh** — `Dashboard.tsx`: after deleting or archiving a thread, the UI wasn't refreshing immediately (waited for the 3s poll). Also, deleting the currently-selected thread left the stale detail panel open. Fixed: added `refresh()` after delete/archive, and `setSelectedKey(null)` when the selected thread is deleted. 2. **Missing types** — `types.ts`: `ThreadData.channel` didn't include `"code"` (causing the chat input to never show for code threads), and `status` didn't include `"archived"`. Fixed both union types. Rebuilt and restarted. All API endpoints verified working: threads, session-tails, delete, update, attach.