- ClOrdID: use numeric IDs (C++ strtoull parsed 'D-42' as 0)
- ExecType: handle FIX standard '150=F' for trades (was checking '1'/'2')
- Use order data from _pending instead of missing exec report tags
- Add MECore stage to pipeline visualizer (OEG > Book > MECore > Match)
- Log full C++ actor path: OEG > Book > MECore > Match > Trade > DB > CH
- Auto-restart FIX gateway on engine crash
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add crash diagnostics: show eunex_me log output on startup failure
When eunex_me exits early or fails to listen, the error now includes
the last 20 lines of the log. Added /engine/log endpoint for debugging.
Also restart Python FIX gateway on failure to avoid leaving port 9001 dead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Auto-start eunex_me when toggling C++ engine mode
When switching to C++ mode, automatically stop Python FIX gateway,
start the eunex_me binary, wait for it to listen on the FIX port,
then connect the bridge. When switching back, stop eunex_me and
restart the Python FIX gateway. Added process lifecycle management
with PID tracking, log files, and 30s startup timeout.
UI shows 'C++ Starting...' during the switch and disables the toggle.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix deadlock in CppEngineBridge causing Server not ready on HF Spaces
connect() held self._lock (threading.Lock) and called _send_logon() ->
_send_fix() which tried to acquire the same non-reentrant lock, causing
a deadlock. Flask thread hung forever, browser timed out.
Fix: Lock() -> RLock() (reentrant). Also add 10s fetch abort timeout.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix JSON parse errors when server not ready (HF Spaces startup race)
- Add CppEngineBridge: FIX 4.4 TCP client connecting to eunex_me:9001
- Toggle switch in dashboard header to switch between Python and C++ engine
- Green/red dot shows C++ engine availability (health check every 15s)
- Orders route through FIX protocol when C++ mode is active
- Receives ExecutionReports and updates dashboard state in real-time
- Message Flow shows [C++] prefix for orders routed to C++ engine
- GET/POST /engine/mode API for programmatic control
- Simulation and seed orders always use Python engine
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.9.3: Add .env config, auto-load env vars in shared/config.py
- Add .env with LLM_PROVIDER, OLLAMA_MODEL, HF_MODEL defaults
- shared/config.py auto-loads .env (with or without python-dotenv)
- Dashboard reads LLM_PROVIDER from env for provider selection
- HF Space uses HF_TOKEN secret + auto fallback to free model
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.9.2: Auto-discover HF_TOKEN from cache, fix LLM provider logging
- Read HF_TOKEN from ~/.cache/huggingface/token when env var not set
- Add detailed logging for all LLM providers (Ollama, Groq, HF errors)
- Fix CH ai_trader HF URL: use router.huggingface.co instead of api-inference
- Add method="POST" to HF request in dashboard
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.9.1: Fix Ollama integration, thin volume bars, model selector with health check
- Fix AI Analyst hanging forever: broadcast error event on LLM failure
- Add Ollama health check endpoint with green/red status indicator
- Add Ollama model list endpoint and model selector dropdown in UI
- Fix _try_ollama: increase timeout to 120s, log errors instead of swallowing
- Make volume chart bars thin with constant width (maxBarThickness: 6)
- Ticker background more distinct (#162040 with accent borders and shadow)
- CH ai_trader: increase Ollama timeout and log errors
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Price chart split into two canvases: thin candlesticks + close line above, volume bars below
- Ticker tape with gradient background and accent borders for visibility
- Message Flow Visualizer now interactive: click orders to see their pipeline path with animated stages
- Backend passes orderId/tradeId through all log_message calls for message grouping
- New LLM trading strategy for CH members with Ollama/Groq/HuggingFace fallback
- CH dashboard with strategy dropdown and LLM explanation panel
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.8.0: AI Market Analyst and Developer Message Flow Visualizer
F5: AI Analyst with three-provider fallback (Ollama/Groq/HuggingFace).
Builds market context prompt from live trades and order book, generates
3-4 sentence analysis. Provider switchable from UI. Insights broadcast
via SSE and cached in memory.
F6: Message Flow Visualizer traces the full order lifecycle through
OEG -> Book -> Match -> Trade -> DB -> CH pipeline. Uses function
patching to intercept engine methods. Shows per-stage counters and
live log with monospace formatting.
Dashboard now has 3 tabs: Trading, AI Analyst, Message Flow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.7.0: Daily close persistence, ticker tape, OHLCV candlestick chart
End Day saves closing prices to daily_close SQLite table. Start Day
loads previous closing prices and uses them as seed prices for market
continuity across sessions. Dashboard adds scrolling ticker tape with
real-time prices and percentage change. Chart upgraded to candlestick
rendering with OHLCV wicks and color-coded volume bars.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
C++ AITraderActor now uses per-symbol reference prices matching real
market levels instead of hardcoded 100-200 range. Dashboard adds
MarketSimulator thread that auto-generates orders and crossing trades
every 30s when session is active. Config updated with all 7 symbols.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.3.0: FIX gateway, Clearing House with AI traders, enhanced dashboard
- Replace single-threaded Simplx shim with multi-threaded actor engine
(per-core threads, mailbox queues, cross-core async event delivery)
- Add abstract PersistenceStore with InMemoryStore and KafkaStore
- Add Docker Compose with Kafka KRaft mode (no Zookeeper)
- Add Flask web dashboard with SSE streaming, order book view, trade
blotter, BBO snapshots, and session controls
- Add 6 multi-threaded engine tests (26 total tests pass)
- Support EQU (Cash/Equities) and EQD (Derivatives) segments
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>