- Decouple WebSocket connection from session lifecycle: workflows continue running after disconnect
- Message buffering with ring buffer (max 1000) for chat history replay on reconnect
- Session garbage collection: 24-hour TTL for terminal sessions via background asyncio task
- Multi-tab support: last tab wins, old WebSocket closed on new connection for same session
- Cancel now sends explicit WebSocket message instead of relying on disconnect detection
- Replace hardcoded API keys and BASE_URL with ${API_KEY}/${BASE_URL} placeholders in yaml configs
- Convert chat from tab-based to persistent collapsible overlay panel
- Chat panel visible alongside Graph view as a side overlay
- Toggle button (chevron) to collapse/expand the overlay panel
- 'Chat' in view toggle activates full-screen chat mode filling left panel
- 'Graph' in view toggle shows graph with chat as overlay
- isChatPanelOpen state preserved across mode switches
- Default viewMode is 'chat' (full-screen on load)
- No Spatial features included
Replace native HTML title attributes on help icons with the
existing RichTooltip component for consistent cross-browser
tooltip behavior. The native title attribute has inconsistent
behavior across Safari and Edge, causing help tooltips to not
appear when users interact with the question mark icons.
Fixes#538
This PR provides full cross-platform support (Windows/macOS/Linux) for the development environment.
Key Changes
Makefile: Refactored dev and stop targets using cross-env and kill-port to support PowerShell/CMD.
Compatibility: Replaced Unix-specific grep/awk in the help target with a Python one-liner.
Bug Fix: Added encoding='utf-8' to tools/sync_vuegraphs.py to prevent charmap decode errors on Windows systems.
Dependencies: Added necessary dev-tools to package.json files to ensure a seamless "clone and run" experience.