- Sidebar: the hairline above the user block is inset to the content
edges instead of running edge-to-edge (concept language).
- User menu: the Discord community link renders the actual Discord mark
(inlined simple-icons path, CC0) instead of lucide MessagesSquare.
- Dialogs: open/close animation toned down, zoom 98 instead of 95 and
150ms instead of 200ms.
- Settings modal: switching tabs no longer remounts the intercepted
route (and replayed the whole open animation on every click). The rail
now swaps sections via history.replaceState, which Next syncs into
usePathname(), so the dialog stays mounted and tab switches are
instant. Verified via Playwright: dialog DOM node survives three tab
switches, URL tracks the section, Esc still closes back.
- /chat loading: the shared dashboard skeleton stretched edge-to-edge in
chat's full-bleed wrapper (chat's own layout is what suspends, so a
chat/loading.tsx cannot catch it). The shared fallback is now route-
aware and renders a two-pane chat silhouette for /chat.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>