Releases: TraderAlice/OpenAlice
Releases · TraderAlice/OpenAlice
v0.9.0-beta.12
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- Hyperliquid market loading + e2e support for wallet-based CCXT
- Hyperliquid market orders via placeOrder override
🔧 Refactoring
- Ccxt override hooks accept defaultImpl + fix hyperliquid markPrice
v0.9.0-beta.11
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- Initialize select fields with first option when no default is set
🚀 Features
- Snapshot management in Dev page + CLAUDE.md verification rules
- Dynamic CCXT credentials + single-page New Account wizard
v0.9.0-beta.10
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
Build
- Add Turborepo for workspace build orchestration
🐛 Bug Fixes
- FMP provider schema fixes + add EquitySearch fetcher
- Restore lastInteraction on startup + readSession filter + ISO timestamps
- Telegram auth guard hot-reload chatIds + fix misleading comment
- Persona & heartbeat default file auto-copy + UI editing
- Remove stale createAgent re-export + fix spec type errors
- Resolve remaining tsc errors in bbProvider specs and MockBroker
- Add codex provider support to channels CRUD endpoints
- Improve codex provider error logging with request details
- Add store:false and array input for Codex subscription endpoint
- Use output_item.done for function call_id instead of arguments.done
- MiniMax preset uses agent-sdk backend, not vercel-ai-sdk
- Schema form initialization + remove Custom option from presets
- Require explicit model selection for OAuth presets
- Wait for connection test before closing create modal
- Remove slash from Codex preset name + encode profile slugs in URLs
- Codex ask() uses streaming — subscription endpoint rejects non-streaming
- Test and save are separate user actions
- Force API key mode with CLAUDE_CODE_SIMPLE=1 to disable OAuth fallback
- Agent-sdk ask() throws on error instead of returning error as text
📚 Documentation
- Update README badges and project structure
🔧 Refactoring
- Type all market-data clients with openTypeBB standard models
- Test-provider uses SDK instead of HTTP + add bbEngine to ctx
- Reorganize MarketData config page + add commodity
- Replace ToolLoopAgent with direct generateText calls
- Replace flat AI config with profile-based system
- Codex provider uses structured input instead of text history
- Schema-driven preset forms via JSON Schema
- Replace label with name as profile identifier
- Split preset catalog + useSchemaForm hook + profile preset link
🚀 Features
- Register ETF, Index, Derivatives SDK clients
- Add commodity to calculateIndicator + fix test isolation
- Add FMP CommoditySpotPrice fetcher
- Add session awareness tools + connector context injection
- Dev page tab layout + tool execution workbench
- Telegram magic link onboarding for chat authorization
- Telegram /trading panel with multi-account support
- Hot-reload persona and brain state in system prompt
- Add Codex AI provider — OpenAI models via ChatGPT subscription OAuth
- Codex provider UI + dual auth mode (OAuth / API key)
- Rewrite frontend for profile-based AI config
- Preset system for guided profile creation + OAuth model fix
- Modal-based profile UI + remove global API keys
- Currency-aware UTA with FxService dual-table architecture
- Profile creation UX — name lockdown, duplicate check, connection test
- Ask() accepts profile parameter + test before save
- Currency-aware portfolio UI + FX rates sidebar
🧪 Testing
- Add bbProvider integration test framework + yfinance tests
- Add FMP bbProvider integration tests (33 fetchers)
- Add Codex provider e2e tests
- Add IBKR currency tracking e2e tests
v0.9.0-beta.9
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- IBKR account data — replace request-response with persistent subscription cache
- Enforce aliceId pipe format (accountId|nativeKey) across codebase
- TrailingAmount maps to trailStopPrice instead of auxPrice
- Query conditional/trigger orders via { stop: true } fallback (#90)
- Add .js extensions to ibkr ESM imports (#94)
- Heartbeat dedup test race condition on CI
- ModifyOrder null-check bugs in Alpaca/CCXT + extend field forwarding
📚 Documentation
- Add orderType param guide to placeOrder tool description
🔧 Refactoring
- Exchange override system for CCXT order routing
- Align placeOrder/modifyOrder AI tool params with IBKR Order fields
- Summarize getOrders output + add groupBy contract clustering
- Extract shared MCP export layer with number coercion
🚀 Features
- Add single-level TPSL (take profit / stop loss) to placeOrder
- Expose TPSL on fetched orders (OpenOrder.tpsl)
v0.9.0-beta.8
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- Explicitly reference static members in broker registry
- Resolve pre-existing tsc errors in trading routes, specs, MockBroker
- Switch IBKR package build from tsup to tsc, restore mixin types
- Resolve remaining tsc errors — E2E null checks, tool return type
- ClosePosition with conId-only contract, quote timeout graceful skip
- Broker init idempotent, UTA E2E shared instance, closePosition SMART routing
- Cron listener routing snapshot fires to AI engine
- Snapshot reliability — no fake data, retry on failure, carry-forward in equity curve
- Recompute netLiquidation from fresh position data instead of cached broker totals
- Add null checks to snapshot builder tests for strict tsc
- IBKR socket error crashes process — match Python's graceful disconnect
- Service tests write snapshots to tmpdir instead of data/trading/
📚 Documentation
- Update README + CLAUDE.md for IBKR, broker self-registration, AccountManager lifecycle
- Add IBKR broker README and annotate data source limitations
- Update README for pre-v1 — align structure, mark roadmap complete
🔧 Refactoring
- Move account lifecycle from main.ts to AccountManager
- Broker self-registration with configSchema + configFields + fromConfig
🚀 Features
- Dynamic broker config UI — frontend renders forms from /broker-types
- Account enable/disable toggle
- Capture fill data (qty, avgPrice) in order sync + IBKR completed orders
- Add UTA snapshot system — periodic + event-driven account state capture
- Add equity curve UI and snapshot API routes
- Make snapshot interval configurable via config.json + frontend UI
- Equity curve defaults to single UTA view with account switcher
v0.9.0-beta.7
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
🎨 UI
- Description-aside layout for config pages (MarketData, News)
- Apply ConfigSection layout to Settings, Connectors, AI Provider
- Unified button classes, HeartbeatPage/ToolsPage layout polish
- TradingPage full redesign — cards, 2-step wizard, visual polish
- Pre-release design polish — branding, layout, micro-interactions
- Replace gradient accent with muted dark buttons
- Add OpenAI backend card + tone down button styling
🐛 Bug Fixes
- AlpacaBroker getOrder, UUID orderId, precision — add Alpaca e2e tests
- Remove duplicate logToolCall from providers — AgentCenter pipeline is the single source
- Rehydrate Decimal fields in TradingGit.restore(), add UTA Bybit e2e
- Trading tool descriptions + show staged ops in push panel
- Stop UTA recovery loop for permanent broker errors (missing API keys)
- Remove CcxtBroker read-only mode, require API keys for all accounts
- Verify broker connection before confirming account creation
- CancelOrder return type + parseOperationResult status mapping
- Backend switch drops stale model config + improve Agent SDK error logging
- Clear handshake timeout on success to prevent uncaught TypeError
- Default exchange=SMART and currency=USD for IBKR contracts
- IBKR getMarketClock timeout fallback + E2E singleFork for shared connections
- E2E tests use conId-based aliceId via searchContracts + getNativeKey
📚 Documentation
- Branch safety rules in CLAUDE.md — never delete dev, never --delete-branch
- Rename Agent SDK → Claude in frontend, update README + CLAUDE.md
🔧 Refactoring
- Remove realizedPnL from Alpaca hot path, add UTA real-broker e2e
- IBroker — remove provider field, add generic meta
- Move aliceId from broker layer to UTA layer
- MCP server create-once + auto-restart on config change
- Remove Claude Code CLI provider, unify on Agent SDK
- UTA self-connects on construction, remove external init/markOffline
- Split DataSourcesPage into MarketDataPage + NewsPage
- UTA management — remove legacy migration, add real-time health monitoring
- Move data/default/ → default/
- Eliminate Platform layer — one config = one UTA
- Split uta-real-broker e2e into uta-alpaca + uta-bybit
- Use beforeEach skip for E2E preconditions
- Align Position with IBKR, move crypto types to CCXT
- Separate health recovery from data service pipeline
- Remove hardcoded credential assumptions, add IBKR to UI
- Move contract identity resolution from UTA to IBroker
🚀 Features
- TradingPush requires manual approval via UI panel
- Push approval panel — reject with history, visual polish
- Agent SDK OAuth login + revert MCP server to per-request mode
- UTA health tracking + auto-recovery on broker failure
- Test connection before persisting account, exchange dropdown
- Structured error type system for broker → tool → AI chain
- Add IbkrBroker — IBroker adapter for Interactive Brokers TWS/Gateway
🧪 Testing
- Fix E2E for sync-fill behavior + market hours skip
- Fix remaining return→skip in ccxt-bybit e2e + add README
- Add IBKR E2E tests, refactor setup.ts safety mechanism
- Add order lifecycle E2E tests that run outside market hours
v0.9.0-beta.6
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- build: Fix opentypebb exports for production + add start script
- pipeline: Batch parallel tool results into single user message
- ui: Warn that Anthropic-compatible base URL must end with /v1
- pipeline: Remove double media extraction from text-kind providers
- Restore preview image in README
- Sanitize orphaned tool-calls in toModelMessages
- Correct message dispatch for TWS v201+ protocol
- Include spec files in tsc and fix all type errors
- Add optional chaining for legacy commits without contract/order
- Align frontend types with IBKR-renamed backend fields
- Upgrade deps to resolve 21 of 23 security vulnerabilities
- ci: Build @traderalice/ibkr before tests
- Nullable close price in crypto schema & IME composition guard (#65, #66)
- Order loss in Trading-as-Git — execution detection + precise sync
- Trading system precision — Decimal throughout, add reduceOnly
- AliceId uses market.symbol (unique) instead of market.id (ambiguous)
- Shared e2e setup + fetchClosedOrders without limit/since
- GetOrder uses fetchOpenOrder/fetchClosedOrder (singular)
📚 Documentation
- Add README for @traderalice/ibkr package
- Add DESIGN.md with exploration history and decision rationale
- Add experimental software disclaimer to README
- Update README with UTA architecture and IBKR type system
- Add Trading domain README — UTA design philosophy
🔧 Refactoring
- ai-providers: Rename GenerateProvider → AIProvider + add MockAIProvider
- Move mock.ts files into mock/ directories
- Consolidate provider utils into ai-providers/utils.ts + add vitest config
- Rename ai-provider.ts → ai-provider-manager.ts
- Push history serialization down into providers, remove inputKind
- Split decoder into modular handler files with full protobuf support
- E2e tests share single TWS connection via setup.ts
- Use IBKR types as UTA source of truth
- Rename ITradingAccount → IBroker, AlpacaAccount → AlpacaBroker, CcxtAccount → CcxtBroker
- Introduce UnifiedTradingAccount (UTA) class
- Rename providers/ → brokers/ directory
- Move broker types and factory into brokers/ directory
- Inline dispatcher and state bridge into UTA, add comprehensive tests
- Remove getAccountGit indirection, fix legacy commit crash
- Unified Trading Account (UTA) + IBKR type system (#67)
- Replace stub MockBroker with in-memory exchange simulator
- Trading-as-Git async model — push=submitted, sync=filled
- Remove defaultMarketType from CcxtBroker
- GetOrders(orderIds) — explicit query targets, no more guessing
🚀 Features
- Scaffold @traderalice/ibkr package — types, protocol, decoder, wrapper
- Complete EClient with all 100+ request methods
- Implement protobuf decoding for core TWS messages
- ToolCallLog + fix equity nullable OHLC (#69)
- Sync() accepts delayMs — exchange API settle time
🧪 Testing
- Expand unit test coverage from 62% to 74% statements
- Port Python tests + add comprehensive test suite (51 tests)
- Add unit tests for all IBroker methods on Alpaca and CCXT
- Precision + reduceOnly behavior tests (TDD contracts)
- Add UTA e2e tests — MockBroker lifecycle + Bybit sandbox
- Add raw CCXT diagnostic + e2e serial execution
- E2e confirms aliceId fix — orders now route to perp correctly
- Ccxt-bybit getOrder with 5s delay — still null, not a timing issue
v0.9.0-beta.5
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- ci: Add ui to pnpm workspace for unified dependency install
- ci: Remove pnpm cache from publish job to avoid path error
- openbb: Mount widgets.json on embedded server + align hono version
- Improve Alpaca and CCXT startup error handling for missing/invalid API keys
📚 Documentation
- Add OpenTypeBB tutorial for running financial data with OpenAlice
- Fix API key requirements in provider table
🚀 Features
- opentypebb: Add SEC provider with EquitySearch model
- openbb: Enable embedded API server by default
- openbb: Hot-reload embedded API server via plugin lifecycle
v0.9.0-beta.4
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
⚙️ CI
- Add workflow_dispatch + independent registry checks for publish
🐛 Bug Fixes
- ci: Override NPM_CONFIG_USERCONFIG for npmjs publish
- Add pnpm workspace so opentypebb deps are installed automatically
- ui: Preserve content block order in streaming (text before tools)
- ui: Unify history and streaming message rendering
📚 Documentation
- Add v1 roadmap to README
🔧 Refactoring
- Extract connector classes from inline object literals
- ui: Redesign portfolio positions table for multi-asset UTA support
- streaming: POST /api/chat returns SSE stream instead of JSON
- ui: Extract useChat hook with pure reducer + test coverage (17 tests)
🚀 Features
- ui: Add favicon
🧪 Testing
- Add web streaming integration tests (chat pipeline + SSE transport)
- Add streaming POST SSE transport tests (3 tests)
v0.9.0-beta.3
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- ci: Write local .npmrc for npmjs publish to avoid GitHub Packages auth conflict
🔧 Refactoring
- Introduce ISessionStore interface and test doubles (MemorySessionStore, MockConnector)
🚀 Features
- opentypebb: Add widgets.json endpoint for OpenBB Workspace frontend