Releases: TraderAlice/OpenAlice
Releases · TraderAlice/OpenAlice
v0.10.0-beta.5
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
📚 Documentation
- TODO: Flag profile + AI Provider model needs structural rethink
🔧 Refactoring
- workspaces: Drop global-config inheritance, wire MCP per-spawn
🚀 Features
- workspaces: Per-workspace AI provider config via CLI-native files
- workspaces/ui: Add ⚙ AI Provider button to sidebar workspace row
- workspaces/ui: Readable tab titles + sidebar truncate + SDK icons
- workspaces: Overview dashboard with card-based status view
- workspaces: Group Overview dashboard by template type
- chat: Two-section sidebar — workspace chat (recommended) + traditional
- chat: Chat sidebar UX — default tag, collapsible groups, visual parity
v0.10.0-beta.4
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🚀 Features
- workspaces/auto-quant: Zero-config via public mirror + per-workspace isolated data
v0.10.0-beta.3
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- cron: Prune orphan snapshot / heartbeat via migration 0004
- workspaces/codex: Translate streamable-http MCP entries to codex flags
📚 Documentation
- todo: Track MCP-out-of-connectors refactor
- todo: Close MCP-out-of-connectors entry (done in 6188fd9)
🔧 Refactoring
- config: Extract MCP server out of connectors into top-level
🚀 Features
- workspaces: Add VS Code-style Workspaces activity
- workspaces/chat: Write Alice persona into CLAUDE.md + AGENTS.md
v0.10.0-beta.2
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- ui/diary: Newest-first ordering — diary is a feed, not a chat
- broker/ccxt: Refuse partial market load on init
- trading: NetLiquidation aggregation correctly subtracts short marketValue
- ui/tabs: Crypto.randomUUID fallback for non-secure contexts
- tool/trading: Tolerate empty string in positiveNumeric
🔧 Refactoring
- ui/sidebar: Move Diary from ActivityBar into Chat sidebar
- task: Migrate heartbeat / cron / task-router to AgentWorkRunner
- task: Migrate heartbeat/cron to AgentWork emitters; collapse per-source events into canonical; delete task-router
- snapshot: Scheduler driven by Pump instead of cron-engine
- heartbeat: Migrate to Pump; remove isInternalJob filter; orphan cron cleanup
🚀 Features
- core: AgentWork primitive + ProviderResult.toolCalls plumbing
- tool: Add notify_user — intent signal for autonomous notifications
- core: Add canonical agent.work.* events for AgentWork dispatch
- core: Agent-work-listener with source registry + 17 tests
- core: Extract parseDuration to src/core/duration.ts
- core: Pump primitive — interval-scheduled callback
v0.10.0-beta.1
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
Rename
- ui: /trade → /trading-as-git for semantic clarity
Revert
- ui: Drop react-resizable-panels — caused initial-load layout flash
- ccxt: Drop canonical localSymbol; wire format is broker-native identity
⚡ Performance
- ui: Bypass React during sidebar drag — update DOM width directly
🐛 Bug Fixes
- test: Uta-lifecycle e2e — string vs number assertions
- brokers/longbridge: Live mark price + options/warrants multiplier
- ui/chat: Scope auto-scroll to container, not scrollIntoView
- trading: Rebuild spot avgCost from fill history with markPrice bootstrap
- trading: ReconcileBalance fields must be string, not Decimal
- ui/tabs: Hide tab-strip scrollbar, add wheel→horizontal scroll
- ui/chat-sidebar: Notifications row reads as button, not header
- ui/simulator: Mark-price input refreshes after Set/Tick actions
- mock: Unify position-map key — getNativeKey everywhere
- mock: 3 multi-asset bugs surfaced via simulator QA pass
- ui: Portfolio position pill mirrors canonical SecType
- mock: Allow externalTrade SELL to open short positions
- uta: Wallet bootstrap respects broker-reported avgCost
- market-data: Repair FRED end-to-end + add market-data e2e harness
- ui: MarketDataPage hints — drop unimplemented providers, refresh dead URLs
- eia: Repair credential prefix + sort syntax + value coercion
- version: Hit /releases (not /releases/latest) so prerelease tags surface
📚 Documentation
- readme: Rework header badges, add community + getting help
- claude: Branch convention for invasive refactors
- claude: Drop worktree convention; point parallel work at cloud
- todo: Cost-basis bootstrap overwrites broker avgCost
- todo: Drop cost-basis bootstrap entry — fixed in ab51371
- todo: IBKR getNativeKey may collide on option-chain fanout
🔧 Refactoring
- trading: Narrow all UTA monetary fields to string
- trading/tool: Tighten positiveNumeric to string-only
- ui: Sidebar styling pass + drop misleading SSE indicator
- web: Downgrade default channel — editable, no longer privileged
- ui: Section abstraction + dialog-driven channel CRUD + panel scaffolding
- ui: Align with VS Code structure — ActivityBar / Sidebar / approval-in-sidebar
- ui: Nest settings sub-routes under /settings/*
- ui: Chat moves to explicit /chat route (was at root /)
- ui/sidebar: Extract SidebarRow, full-color text + active accent bar
- ui/automation: Hoist sub-tabs into the sidebar
- ui/logs: EventLogSection switches from SSE to 3s polling
- Connectors/web split — webui/ owns the UI server, connectors/web/ keeps the chat connector
- trading: Extract one-shot order pipeline into domain
- notifications: Drop SSE stream, switch to 20s polling
- ui: Move simulator account creation into Dev → Simulator tab
- ui/simulator: Two-column layout + PnL column, drop Chinese strings
- trading: Phase 1 — type discipline + shared position math
- trading: Phase 2 — broker output funnels through buildContract / buildPosition
- trading: Phase 3 — drain CCXT wire format from canonical Contract
- trading: Phase 4 — strict SecType union + full IBKR taxonomy
🚀 Features
- uta: Detail page at /uta/:id + UTA-naming pass top-to-bottom
- uta: Manual order entry from frontend
- brokers/others: LeverUp Monad perp DEX adapter via OCT relayer
- brokers/longbridge: Longbridge OpenAPI multi-region adapter
- trading: Broker preset wizard — Recommended vs Crypto sections
- ui: VS Code-style activity bar + secondary sidebar
- ui: URL-routed Dev tabs + absorb Logs as Dev sub-page
- ui: Wrap ChatPage in PanelGroup (v2, no app-level wrap)
- ui: Trading as its own ActivityBar item — separate activity from Chat
- ui: Drag-to-resize Sidebar + reusable Resizer primitive
- ui: Swap hand-rolled Sidebar resize for react-resizable-panels v4
- ui: Persist resizable panel layout to localStorage
- trading: Split CRYPTO secType into CRYPTO + CRYPTO_PERP
- ui/tabs: Workspace store foundation (zustand + types)
- ui/tabs: Replace Routes with TabHost — phase 1 shell switchover
- ui/chat: Drop SSE push channel, add disconnect-resume polling
- ui/tabs: Phase 2 — decouple ActivityBar from tabs, add sidebars
- ui/tabs: Per-activity ActivityBar behavior + Portfolio sidebar
- ui/live: Introduce LiveStore abstraction, migrate useAccountHealth
- core: Notifications store as canonical record; per-connector surfacing
- ui/notifications: Notification center sidebar + LiveStore
- ui: Notifications inbox tab + chat-sidebar entry with unread badge
- ui/chat: Confirm dialog before deleting a channel
- trading: MockBroker simulator console — manual撮合 + DevPage tab
- trading: Derive UTA id from broker identity, drop user-typed ids
- ui/simulator: Tab strip + sticky action panel + event log + keyboard
- ui/tabs: Right-click context menu — close others / right / left / all + copy URL
- simulator: Support OPT / FOP / FUT / STK / CASH / BOND alongside CRYPTO
- uta: Ephemeral test UTA lifecycle (boot purge + manual destroy)
- tool: Expose FRED via three economy tools (search/series/regional)
- tool: Expose EIA energy outlook + petroleum status as economy tools
- tool: Expose BLS search + series as economy tools, fix NaN sneak-through
- opentypebb: Classify network-unreachable errors for AI tool callers
- ui/uta: Redesign Trading list + UTA detail with live data, NAV chart, grouped positions, snapshot timeline
- ui: Cross-cutting design polish — typography scale, lucide icons, PnL color discipline, live-pulse indicator, Portfolio polish
- migration: Introduce versioned migration framework + extract AI credentials as 0002
- ai-providers: Preset-driven SDK adapter selection for test path
- ai-provider page: Credentials + SDKs two-region layout with bidirectional highlight
- version: GitHub Releases update detection + banner UI
v0.10.0-beta.0
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- market: Unshrink financial statements + persist K-line view in URL
- market: Align panel field keys with opentypebb canonical schema
- opentypebb: Alias FMP equity quote yearHigh/yearLow/marketCap
- market-data: Hot-reload provider + credentials when config changes
- opentypebb: Align yfinance fundamentals fields to canonical schema
- market: Yfinance market cap alias + tolerate ratios 500
- opentypebb: Alias yfinance quote change / change_percent / last_timestamp
- market: Rename KlinePanel setInterval setter to avoid shadowing
- config: Auto-migrate legacy accounts.json instead of crashing
📚 Documentation
- Event system guide + CLAUDE.md subsystem pointer
- claude.md: Rolling dev→master PR convention for multi-session work
🔧 Refactoring
- market: Drop bid/ask from QuoteHeader
- market: Instant multi-line tooltip on Card info icon
- connectors: Single shared message producer on ConnectorCenter
- market: Sort tradeable contracts by familiarity, not broker order
- market: Collapse tradeable contracts beyond the first 3
- news: Harden write path + retire v1 getNews
- opentypebb/fmp: Split degradation logs from real errors
- trading: Preset-based UTA config (BREAKING)
🚀 Features
- market: Per-asset-class detail routes with equity pilot
- market: Per-card data source hint + partial metrics tolerance
- market: Auto-refresh price-sensitive panels on a timer
- chat: Infinite-scroll-up history pagination
- ai-providers: Add DeepSeek preset (V4 Pro default)
- trading: Broker-side contract search domain helper + HTTP route
- market: TradeableContractsPanel — bridge analysis to UTA
- trading: Centralized broker-search normalization rules
- market: Pass assetClass through TradeableContractsPanel
- brokers: Shared fuzzy ranker + optional catalog refresh
- brokers: EnumeratingCatalog for Alpaca + CCXT, 6h refresh cron
- brokers/ccxt: Synthesize spot holdings into Position records
- trading/wizard: Multi-step new-account flow with explicit test
🧪 Testing
- e2e: OKX broker — covers spot synthesis end-to-end
v0.9.0-beta.13
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🎨 UI
- flow: Hide dead-side event nodes
🐛 Bug Fixes
- CommodityClient used equity provider instead of commodity provider
- Clarify tool description — SMA/RSI return scalar, no [-1]
- Eliminate floating-point precision artifacts in trading monetary fields
- Align equity() API return type with Decimal string fields
- Use ReactNode instead of global JSX.Element in DiaryPage
- Avoid ENOENT race in cron engine save() on concurrent writes
- ui: Unstick chat scroll during streaming + Push panel precision
- market: Client-side timeframe zoom + provider badge on K-line
- opentypebb: FMP date range + error-log safety in amakeRequest
- market-search: Rank by match quality instead of asset-class order
📚 Documentation
- Rewrite README intro and restructure features
- Restructure Architecture section, reorder Key Concepts below it
- Clean up Quick Start, move project structure to docs/
- Redesign README hero with centered logo and tagline
- Log three open bugs in TODO.md
- ai-providers: Note why Kimi uses agent-sdk despite Moonshot pushing OpenAI-compat
🔧 Refactoring
- Reorganize Events/Heartbeat/AgentStatus into Scheduler+Logs
- Unify tab bar style, merge Tools into Settings, rename to Automation
- Split News into feed terminal + collector config
- Rename Activity → Diary and redesign as card-based feed
- Remove trigger event + trigger-router
- agent-sdk: Classify auth errors to quiet user-fixable misconfig
- brain: Drop emotion dimension, constrain frontal lobe to self-referring notes
- trading: Migrate Order price fields to Decimal end-to-end
- market-data: Merge opentypebb HTTP routes into web plugin
- ui: Stop onScroll from mutating chat scroll lock
🚀 Features
- Commodity canonical naming + catalog search
- CalculateIndicator returns dataRange with OHLCV time span
- Add GET /api/news endpoint + dev watch mode
- Add news feed view with lookback/source filtering
- Introduce AgentEvent type system with runtime validation
- Add Activity page exposing heartbeat session as read-only status feed
- Default Claude to Opus 4.7 and expose inline model switcher in profile list
- Introduce ListenerRegistry for unified event subscription lifecycle
- Open the system — webhook ingest + TriggerListener + causedBy
- Constrained emitter + topology endpoint + Flow visualization
- Unified subscribes/emits grammar + typed webhook ingest
- Event system maturation — metadata + fire() + wildcard aura + metrics
- Producer concept — pure event sources in the listener registry
- Task-router listener + task.requested external event
- Webhook sub-tab on /automation — docs + try-it for event ingestion
- security: Bearer-token auth on /api/events/ingest
- news: Curated feed menu + per-feed enable/description
- ai-providers: Add GLM (Zhipu) preset via Anthropic-compatible endpoint
- ai-providers: Region-aware endpoint picker + Kimi preset
- diary: Add Brain sidebar showing frontal lobe + emotion state
- market: Symbol search + K-line page, provider resolution from config
- market: Interval selector + labeled button groups on K-line
- ai-providers: Bump Kimi default to K2.6
- ui: Test buttons on existing AI provider profiles
- agent-sdk: Observability — result metadata, opt-in debug, notes doc
🧪 Testing
- Add analysis tool e2e tests across equity/crypto/commodity
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