Skip to main content

Chat header decluttered + collapsible Trace Ingestion

· 2 min read
Brain Research Visualizer

Two small left-region tweaks give the Neural Brain chat more breathing room: a stripped-down chat header and a collapsible Trace Ingestion tile.

Decluttered chat header

The chat tile header (.brain-chat-header) previously showed a "Neural Brain" title plus a live-telemetry status pill (pulse dot + "Live telemetry" / "Waiting for signal"). Both were removed; the header now holds only the close (×) button, right-aligned.

  • index.html: dropped .brain-chat-title and .brain-chat-status-inline (which contained #brainChatStatus). The dialog now names itself with aria-label="Neural Brain chat" instead of the dangling aria-labelledby="brainChatTitle" (no such element ever existed).
  • src/brain-ui.ts: removed brainChatStatus from the cached-element list and the per-tick els.brainChatStatus.textContent = … write, so nothing references the deleted node.
  • css/app.css: .brain-chat-header is now justify-content: flex-end; removed the unused .brain-chat-title, .brain-chat-status-inline, .pulse-dot, and @keyframes pulseDot rules.

Collapsible Trace Ingestion tile

The observability panel (#obs-panel) gained a chevron toggle in its header (#obsCollapse) that collapses the tile to just its header, hiding .obs-body. Because the slot is flex: 0 0 auto and #leftChat is flex: 1, collapsing the panel hands that vertical space straight to the chat.

  • Defaults to collapsed so the chat gets maximum real estate out of the box.
  • The choice is persisted across reloads in localStorage under exepert.obsCollapsed, wrapped in try/catch for private-mode / SSR safety.
  • aria-expanded + aria-controls="obsBody" keep the toggle accessible; the chevron rotates 180° when expanded.

The panel's ? help link pointed at Plans/guide-trace-ingestion.md, which Vite resolved to a raw, unrendered .md file on the app origin (a blank page). It now opens the rendered Docusaurus guide page at /docs/guides/trace-ingestion.

On local app origins, docs links default to http://localhost:3000, which matches the separate Docusaurus dev server. In production, leave VITE_DOCS_URL unset: the Vercel build bundles the rendered docs into the app's dist/ folder, so the link resolves on the deployed app origin under /docs.

See the UI guide for the chat tile contract and the trace-ingestion tile notes.