Card generation moved to response step:
- Response LLM outputs JSON with "text" + optional "card"
- Cards use actual query data, not placeholder templates
- Plan step no longer includes emit_card (avoids {{template}} syntax)
- Fallback: raw text response if JSON parse fails
History restore on reconnect:
- Frontend fetches /api/history on WS connect
- Renders last 20 messages in chat panel
- Only restores if chat is empty (fresh load)
Graph animation:
- Dynamic node name → graph ID mapping from graph definition
- All nodes (including eras_expert) pulse correctly
- 200ms animation queue prevents bulk event overlap
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Expert retry loop enhanced:
- On "Unknown column" error, auto-DESCRIBEs the failing table
- DESCRIBE result injected into re-plan context
- Unmapped tables handled via SELECT * LIMIT fallback
- Recovery test step 4: abrechnungsinformationen (unmapped) → success
Graph animation queue:
- Events queued and played sequentially with 200ms interval
- Prevents bulk HUD events from canceling each other's animations
- Node pulses and edge flashes play one by one
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- /api/graph/active now includes node_details (model, max_tokens per node)
- graph.js calls initNodesFromGraph() after fetching active graph
- Nodes panel shows all nodes with models immediately on load (before first message)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>