Releases: TraderAlice/OpenAlice
Releases · TraderAlice/OpenAlice
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
v0.9.0-beta.2
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
⚙️ CI
- Publish opentypebb to both GitHub Packages and npmjs
🐛 Bug Fixes
- Restore opentypebb src exports for local dev, use publishConfig for dist
- session: Remove duplicate assistant text persistence
🔧 Refactoring
- Move model-factory to vercel-ai-sdk, rename engine.spec
- Merge ai-config.ts into config.ts
- Create src/server/ for port-exposed services
- Move skills to data/default/skills/
- Extract Connector types to connectors/types.ts
- Extract GenerateProvider types to ai-providers/types.ts
🚀 Features
- Publish @traderalice/opentypebb to GitHub Packages
v0.9.0-beta.1
Changelog
All notable changes to Open Alice will be documented in this file.
[Unreleased]
Config
- Default crypto to bybit demo, securities to alpaca paper with tickers
Merge
- Unified trading architecture + AGPL-3.0 relicense
⚙️ CI
- Add GitHub Actions workflow and fix time-sensitive test
- Add automatic release workflow on master merge
⚡ Performance
- Decouple CCXT init from startup, allow plugins to start immediately
🎨 UI
- Polish frontend design — chat input, sidebar, card system
- Round 2 polish — shared components, transitions, table hover
- Round 3 polish — toast system, send spinner, mobile fixes
🐛 Bug Fixes
- Inject persona + brain state into Claude Code provider
- Extract assistant text when Claude Code result is empty
- Align SettingsPanel with actual backend config structure
- Use --disallowedTools instead of --allowedTools for evolution mode
- Restore --allowedTools and hot-reload evolutionMode
- ui: Batch quality fixes — XSS, toggle, SSE dedup, error feedback
- Default mcpPort to 3001 so MCP tools server always starts
- Inject MCP tool permissions via --allowedTools, gitignore .claude/
- Skip crypto trading tools when engine is null
- openbb: Remove commodity from provider config, fix provider option lists
- Pass ccxt options under
optionskey instead of spreading at top level - tools: Set correct providers for equity fundamental and news tools
- openbb: Split news providers and handle 204 No Content
- Make MCP Server always-on — Claude Code provider depends on it for tools
- test: Update engine.spec.ts to match new VercelAIProvider constructor
- Connectors config auto-init and migration defaults
- Derive validSections from sectionSchemas to prevent config API drift
- news-collector: Retry RSS fetch once on failure
- docs: Replace Mermaid & syntax for broader renderer compatibility
- SSE stability — auto-reconnect with exponential backoff
- Clarify searchContracts/getContractDetails tool descriptions
- Update stale equitySearch/cryptoSearch references in tool descriptions
- Soften marketSearchForResearch description to avoid mandatory pre-search
- Seed platforms.json + accounts.json to disk on legacy migration
- Sequential loadMarkets with per-type retries for CCXT
- Add init retry with exponential backoff for AlpacaAccount
- Enforce aliceId as required contract identifier for trading tools
- opentypebb: Point exports to src/ so tsx resolves without build
- Upgrade opentypebb hono 4.7.4 → 4.12.7 to resolve type mismatch
- Allow 'agent-sdk' in backend switch API validation
- ui: Persist streamed tool calls and show thinking dots during text generation
- ci: Let pnpm version come from package.json packageManager field
- streaming: Push intermediate text events from Claude Code and Agent SDK providers
- session: Persist intermediate text blocks during tool loops
📚 Documentation
- Sync README with recent features
- Document Web UI dev workflow and dual-port architecture
- Sync README with OpenBB integration and provider default change
- Overhaul README to reflect recent architecture changes
- Delete stale scheduling.md, fix mcp-ask config section
- Add Key Concepts glossary and simplify Quick Start
- Delete stale scheduling_zh.md
- Remove dead live demo link, update header badges
- Add browser tool description prefix clarifying Chrome extension requirement
- Update README for unified trading architecture and AGPL-3.0
- Update README to reflect TypeScript-native OpenBB engine
- Update README for Engine removal, Agent SDK, and ConnectorCenter rename
- Add CI and license badges, remove redundant license section
- Add contributing guide (issues welcome, PRs not accepted)
🔧 Refactoring
- Split persona/heartbeat into default + user override
- Move Settings from slide drawer to dedicated page tab
- Unify AI provider default into Zod config system
- ui: Replace header tabs with sidebar navigation and widescreen layout
- Split analysis-kit into thinking-kit + analysis-tools
- Split Sandbox into KlineStore + NewsStore
- Merge analysis-kit + analysis-tools into archive-analysis
- Disconnect archive-analysis from runtime
- Remove lookback from indicator formula, use interval-based data window
- Extract unified indicator calculator to extension/analysis-kit
- openbb: Per-asset-class default provider instead of single global default
- ui: Extract shared form components and deduplicate config pages
- Absorb archive-analysis into news-collector, delete dead module
- Remove trading whitelist, replace with optional symbol-whitelist guard
- Consolidate AI provider config into single file and dedicated page
- Unify connector interface with structured delivery
- Introduce ConnectorCenter to centralize outbound notification logic
- Event-driven interaction tracking in ConnectorCenter
- Simplify heartbeat status to binary HEARTBEAT_OK / CHAT_YES
- Rename wallet* to trading*, make commit/push/sync source optional
- Provider tool injection + slim AccountCapabilities
- Remove adjustLeverage and leverage from OrderRequest
- IBKR-aligned OrderRequest + modifyOrder + dead code cleanup
- Split resolveContract into searchContracts + getContractDetails
- Unify equitySearch + cryptoSearch + currencySearch into marketSearchForResearch
- Merge platform into account flow in TradingPage
- Replace slide panel with centered modal dialogs
- Split CcxtAccount into smaller modules
- Split AlpacaAccount into smaller modules
- ai-provider: Align VercelAIProvider with ClaudeCodeProvider interface
- ui: Redesign DataSourcesPage with two distinct conceptual zones
- AgentCenter becomes orchestration center, providers slim down, Engine deleted
- persistence: Unify session persistence in AgentCenter
🚀 Features
- Add MCP Ask connector for external agent conversation
- Add evolution mode — two-tier permission system
- Auto-seed config files on first startup, untrack from git
- ui: Add responsive sidebar — collapse to hamburger menu on narrow screens
- ui: Add section descriptions to Settings and fix nav highlight
- ui: Beautify chat — ChatGPT/Claude-style layout, code copy, animations
- ui: Polish layout — SVG sidebar icons, Alice avatar, message grouping, safe area
- Add OpenBB equity data layer (src/openbb/equity)
- Equity symbol search with local regex index
- Equity indicator calculator with OpenBB data
- Make interval a required parameter in indicator formula syntax
- Add OpenBB crypto data layer (types + client)
- Add OpenBB commodity data layer (types + client)
- Add EIA petroleum status and energy outlook endpoints to commodity client
- Add OpenBB currency data layer (types + client)
- Add crypto search tool (adapter layer)
- Add currency search tool (adapter layer)
- Register crypto search, currency search, and analysis-kit tools
- Add Data Sources page with connection test and provider key management
- web: Render tool calls as collapsible groups in chat history
- Add multi-provider model support with hot-reload
- openbb: Inject provider credentials via HTTP header and add economy client
- ui: Expand provider keys to 8 providers with descriptions
- ui: Add per-provider Test button for API key validation
- ccxt: Add ticker, funding rate queries and fix realizedPnL
- ccxt: Expose order book depth query for liquidity evaluation
- alpaca: Add real-time quote and native closePosition
- crypto: Add extensible guard pipeline for trading operations
- ui: Add Crypto Trading config page with exchange and guard management
- ui: Replace manual save buttons with auto-save and debounce
- securities: Add extensible guard pipeline for trading operations
- ui: Add Securities Trading config page with broker and guard management
- openbb: Add News client and complete Commodity client coverage
- tools: Expose equity fundamentals and news tools to AI loop
- ui: Add Portfolio Dashboard + split routes and API into domain modules
- ui: Add card-based SDK selector and enable/disable toggles to trading pages
- ui: Add sidebar nested navigation for trading config pages
- Consolidate connector configs into connectors.json with enable/disable toggles
- ui: Multi-select card grid for connectors enable/disable
- news-collector: Add persistent news collection with RSS and OpenBB piggyback
- Hot-reload connector enable/disable without restart
- ui: Add News Collector section to DataSourcesPage with enable/disable cards
- Add Custom provider option for relay/proxy endpoints
- Add /dev debug page + rename deliver() to send() with kind
- Persist push messages to session for history survival
- Persistent media store with 3-word content-addressable names
- Image ContentBlock + date-based media storage
- Add paginated event log with full disk history
- Add dedicated Heartbeat page with config, prompt editor, and recent events
- Add Tool Panel for granular tool enable/disable with hot-reload
- Add unified trading types — Contract, ITradingAccount, AccountManager, TradingGit
- Add unified guard pipeline — merge crypto + securities guards
- Unified trading architecture — provider adapters, tool factory, main.ts rewrite
- Add test coverage, fix CCXT bug, merge frontend trading UI
- Unified multi-account tool routing with source parameter
- Aggregate getQuote across all accounts
- Add read-only mode to CcxtAccount for keyless market data access
- Introduce Platform layer for multi-account trading
- Trading config CRUD API + table/panel UI redesign
- Alpaca realized PnL via FILL activities + Portfolio page redesign
- Add React Router for URL-based navigation
- Replace Python OpenBB sidecar with in-process OpenTypeBB SDK
- openbb: Add backend selector and embedded API server support
- opentypebb: Add ~40 economy/commodity routes with FRED, OECD, BLS, EIA providers
- web: Add sub-channel support with per-channel AI config
- ui: Redesign chan...