Releases: TraderAlice/OpenAlice
Releases · TraderAlice/OpenAlice
v0.51.0-beta.2
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
⚙️ CI
- desktop: Build + publish per-platform installers on release
🚀 Features
- desktop: Supervise UTA in the Electron shell + beta-aware L1 update check
v0.51.0-beta.1
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- uta,alpaca: Single attached exit leg → oto, not bracket
- ui: Morph workspace AI-config Save button into Test until verified
- workspaces: Persist session title across reload
- workspaces: Unstick PTY on socket drop + dev terminal transport hardening
- workspaces: Every create path enables all adapters, not just template head
- ui: Revert Midnight to neutral charcoal-black (drop the navy tint)
- ui: Responsive shell + two-sidebar hierarchy pass
- ui,uta: Render boolean preset fields as toggles, submit real booleans
- uta,ccxt: Guard demoTrading/sandbox against exchanges without the endpoint
- workspaces: Retry credential probe with thinking enabled for mandatory-reasoning models
📚 Documentation
- claude-md: Correct stale logging convention
- Contributor recognition — CONTRIBUTORS.md + README wall + CLAUDE.md convention
- contributors: Credit @2233admin for the Linear shell design pass
🚀 Features
- workspaces,ui: Ask-Alice quick-chat launch — seeded TUI + landing composer
- workspaces: Quick-chat is one chat workspace per day
- ui: Files panel default-collapsed, Workspaces below News, pending-push badge
- ui: Trading-as-Git history as one recency stream + per-UTA filter
- ui: Ask Alice as the primary entry + cleaner session rows
- ui: Redesign the Ask Alice sidebar — prominent New chat, chat-history feel
- ui: Split-button on New chat — keep New workspace in a dropdown
- ui: Session titles from the first message + state-as-action icon
- ui: Confirm before deleting a session
- workspaces: Cross-workspace file collaboration — inbox read + peer path + git identity
- ui: Linear dark palette — re-traced from #302, glare-softened
- ui: Linear shell density pass + responsive Ask Alice backdrop
- ui: Light / dark / auto theme — Daybreak + Midnight palettes + toggle
- ui: Theme the Workspaces surface + terminal (kill the dark island)
- uta: Add Binance broker preset (live + demo trading)
v0.50.0-beta.1
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- tool: Dogfood findings — search false-negative, stale approval channel, self-correcting errors
- uta,tool,cli: TPSL refusal gate + the trading-as-git ergonomics sweep
- uta: STP/STP LMT reach CCXT venues via base-type + triggerPrice
- uta,tool: Round-4 dogfood — getOrders crash, orderId truncation, spot reduceOnly, ambiguous portfolio rows
- uta,cli: Round-6 alpaca live findings — strict flags, stage-time order validation, bracket leg tracking
- ibkr: Round-7 IBKR paper acceptance — TPSL gate, open-orders wiring, conId quotes, account-cache deltas, secType decode
- uta,ibkr: AliceId-expansion numeric-default clobber + 10xxx error routing
- ibkr,ui: Community-issue sweep — currency-keyed account values (#295), mixed-book valuation (#314/ANG-101), dead-connection gate (#294), symbol-first display (#208)
- uta,ibkr: Option sign/unit correctness (S14) + multi-row sync boot-loop crash
📚 Documentation
- UTA live-testing scenario catalog — institutionalize the dogfood loop
- skills: Point rss guidance at opencli when the feed archive is thin
🔧 Refactoring
- workspaces: CLI-only tool injection — no MCP into workspaces
🚀 Features
- uta,ui: UTA detail page becomes an exchange frontend
- ui: Exchange-style two-column layout, honest account panel, aligned header actions
- tool,cli: Agent-boundary compaction — trading outputs stop lying to the model
- uta,ibkr: Hub/leaf contract identity — bond chains, option chains, FX families
v0.42.0-beta.1
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
UTA
- Close the order state machine + PnL read-state fix (#325)
⚡ Performance
- uta: Listing-driven sync — hanging stop/TP orders cost zero per pass
🐛 Bug Fixes
- trading: Asset class is venue-decided, not a secType guess (CCXT ≠ commodity)
- workspaces: Auto-trust project MCP servers in claude adapter spawns
- docker: Repair self-host image after the desktop package split
- ui: Terminal renderer escape hatch + unified WebGL degradation
- ports: Wildcard-aware port probe + bind MCP to loopback by default
- mcp: Lock MCP/CLI listener to loopback, never honor BIND_HOST
- market,tools: OECD house/share price fetchers — post-reshuffle dataflows
- market: FMP insider-trading aliases for the stable endpoint
- market: Normalize FMP etf-sectors weight to decimal — same units as the yfinance fallback (consumers must not see provider-dependent units)
- market: Per-board hub breaker, tripped only by transport failures
- uta: Collapse the FX currency client to SDK-only — the missed openbb-api consumer
- tool: SectorRotation goes hub-first like the UI route — agents and the UI must read the same board
- remote-access: Same-origin PTY WS upgrade + trusted-proxy-gated X-Forwarded-* trust
- ui: Template detail page — metadata header, 13px prose, list markers
- security: Mask credentials in POST/PUT /uta response echoes
- ui: Close the create-UTA wizard on save, not on first connect
- uta: Close the order state machine — auto-sync poller, fill data, PnL invariant
- uta: Cost basis consumes sync fills at execution price
- uta: Bybit open-orders listing sweeps spot+swap — unscoped call silently hides spot
- uta: Surface Alpaca error bodies — opaque 422s carried the real reason all along
📚 Documentation
- Introduce the Data Hub in README — zero-key market data story
- workspace: Teach the three-CLI split in template instructions
- Data root → ~/.openalice + sealed accounts.json across docs
🔧 Refactoring
- ui: Unify asset search (one logic, both boxes) + source-aware sidebar
- ui: One board hook + one meta grammar
- market: Remove the openbb-api backend — divorce step 1
- tools,cli: News → rss — the name should say what the data is
- paths: Unify on OPENALICE_HOME + route stray data/ literals through dataPath()
🚀 Features
- market,ui: Federated K-line sources in the chart — pick the provider (Phase 3)
- market,ui: Reform the asset search to be source-aware (explicit provider)
- market,ui: Reference-data contract + Movers board (own standard, not OpenBB-compat)
- market,ui: Calendar board (earnings / IPO / ex-dividend, FMP)
- market,ui: Macro board (curated FRED regime dashboard)
- market,ui: Term Structure board (Deribit BTC/ETH futures curve)
- market,ui: S&P 500 valuation strip on the market landing (multpl, keyless)
- market,tools,ui: Global Macro board + OECD country tools
- market,tools,ui: IMF PortWatch shipping data — stub provider retired
- config: User-global data-vendor keys (~/.openalice/provider-keys.json)
- market,tools: Keyless yfinance fallbacks for FMP-only cells
- guardian: Configurable ports via data/config/ports.json + env
- market,tools,ui: Land the salvageable no-consumer endpoints
- market,tools: Fix the broken long-tail fetchers and land the rest
- market,ui: Fed board + Global Macro house/share columns + batched OECD
- market: Reference cache — the hub's cache layer in single-node form
- market: Hub-first reference boards — zero-key out of the box
- market: Endpoint-grain hub coverage — FRED/EIA/BLS proxy sentinel + hub calendars
- ui: Surface meta.origin on boards — hub/local/stale badges
- market: Hub-first rotation + detail panels off the legacy passthrough + settings reorder
- uta: Hub FX table — one cached GET replaces per-currency vendor fetches
- cli:
traderhub— a dedicated CLI for low-frequency market data - workspace: Bundle a self-maintained opencli-reader skill into chat
- workspace,ui: CLI as the default tool access + community template tier
- ui: I18n for template/create surfaces, spawn → create, auto-derived tags
- cli: Alice-uta — trading lands on the CLI surface (cron stays MCP-only)
- ui: Make the secondary sidebar per-activity optional — News goes full-width
- ui: Status-first Market Data settings — coverage map + Advanced fold
- guardian: Own the Vite dev port — probe, strictPort, truthful banner, origin allowlist
- workspaces: Headless runs capture their agent session id + full output log
- webui: Spawn-with-resume accepts adapter-native session ids
- ui: Headless runs as a collapsed second tier under each workspace
- paths: Default user-data home moves to ~/.openalice
- desktop: Relocate packaged user data into ~/.openalice on first launch
- security: Seal broker credentials at rest (AES-256-GCM, machine-bound key)
- uta: Record externally-placed orders as squashed [observed] commits
- uta: External-order observation cadence is configurable, default 15m
- ui: External-order monitoring cadence is editable from the Trading page
🧪 Testing
- config: Sandbox the global-provider-keys spec (OPENALICE_HOME temp dir)
- market: Strict-type the cache spec helper (tsc-only issue post-merge)
- Pin OPENALICE_HOME to sandbox roots in vitest + smoke harness
v0.41.0-beta.1
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- quant: Calc-v2 diagnostic polish from adversarial dogfooding
- workspace: Launch opencode/pi from the frontend on Windows
- ui: Restore preset enumeration — region dropdown + model combobox, shared
- ui: Endpoint URL is a read-only input box (unlocks on Custom), not tiny text
- ui: Credential edit round-trips the API key (was redacted → looked unsaved)
- ui: Loading a credential resets the model to the matched provider's default
- ai-config: Codex tab Test clamped to responses; workspace test authMode by baseUrl
- ai-config: Probe gives reasoning models room; clean message on empty reply
- bars: UTA Bar.timestamp arrives as a string over the wire — normalize
📚 Documentation
- quant: Align v1/v2 + expose calculateQuant via CLI + sync skill
- ai: Update CLAUDE.md for the World-B deletion; drop orphaned agent-sdk-notes
- readme: Reflect the World-B deletion — native-CLI execution + credential vault
- Refresh adapter list (+ opencode/pi) and web-subchannels description
🔧 Refactoring
- ui: WorkspaceAIConfigModal shares the useTestGate abstraction
- ai: Delete World B — in-process AI loop, AgentWork, heartbeat
- config: Remove the now-dead profile + heartbeat machinery
- trading: UTA health as a capability ladder (connect / read / write)
🚀 Features
- market-data: Federated bar layer — Phase 0 (vendor, behavior-preserving)
- market-data,trading: Broker K-lines via UTA + federated search — Phase 1 (CCXT)
- trading: Alpaca getHistorical — equity broker bars (Phase 4a)
- trading: Keyless read-only data UTAs — OOTB crypto K-lines, no key
- analysis: Quant Calculator v2 — barId-keyed Python-subset DSL (Phase 2)
- ai-config: Refresh provider model catalog to current lineups
- workspace: Central credentials — template injection + bidirectional modal
- automation: Cron fires a headless Workspace run, not in-process AgentWork
- ui: Reframe AI Provider page as a credential vault; Test via probe
- ui: Add Agent runtimes panel to the AI Provider page
- ai-config: First-class wire-shape registry + modern test-gated credential form
- ai-config: Persist wireShape on the credential + show the resolved endpoint URL
- ai-config: Unify Test on a shared wireShape dispatcher + honor it at runtime
- ai-config: Credential holds a wires map (multi-wire), dedup by key
- ai-config: Multi-wire credentials — one key declares every shape it speaks
- quant,trading: Retire v1 indicator from the tool surface + harden UTA bootstrap
- quant: Expose searchBars — the unified barId search handle for v2
- cli: Expose searchBars as
alice analysis search-bars— workspace agents run v2 via CLI - quant: Panels — dict/list result so v2 batches many computations in one call
- quant: 7 more primitives + a dedicated openalice-quant skill
v0.40.0-beta.2
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- workspace: Codex headless reports via the alice-workspace CLI (CLI-mode)
🚀 Features
- cli: Split the alice CLI into an export family (data + workspace)
- workspace: Headless task management plane (registry + async dispatch + panel)
- ui: Headless Runs panel — frontend for the management plane
- workspace,ui: Runs panel — store full prompt + collapsible task cell
v0.40.0-beta.1
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- core: Use AgentWorkResultProbe in agent-work spec gate
- demo: Wire Chat sidebar — add chat-template workspace + align templates to real names
- demo,ui: Correct /api/news handler shape + bump persist version v4→v5
- tests: Isolate session-store specs from shared on-disk file
- workspaces: Exclude Codex key files from workspace git
- equity: Ratios returns TTM + history, not just a TTM snapshot
- ui: Render the toolAccess dropdown on all create surfaces
- guardian: Resolve
.cmdshims on Windows dev spawn + CI smoke - guardian/smoke: Strip ANSI before matching; block on Windows cleanup
- guardian: Tree-kill children on Windows so UTA restart doesn't orphan
- guardian: Windows-safe basename in flag watcher (broker-config restart)
- codex: Use responses.create stream instead of responses.stream()
- workspace/codex: Don't quote
openalice-workspaceMCP key in -c override - entity-store: Serialize mutations + tolerate malformed lines (concurrent-write corruption)
- workspace: Headless live-smoke — pi prompt terminator + codex approval
📚 Documentation
- claude: Add demo-mode subsystem guide — check handlers when changing /api/* surfaces
🔧 Refactoring
- workspaces: Unify AI-config IO behind CliAdapter
- workspaces: Launcher-owned context injection + uniform initial commit
- workspaces: Tool-use disposition to persona, drop internal/external framing
- workspaces: Neutral instruction.md source → copied to CLAUDE.md + AGENTS.md
- ui: Centralize locale-aware formatting (i18n stage 1)
🚀 Features
- demo: Add Vercel Web Analytics, gated to demo mode only
- cli: Add
aliceworkspace CLI adapter over the tool registry - demo: Snapshot AAPL market data, serve in demo mode
- skills: Pre-trade pipeline — sector-rotation + build-thesis, tool-agnostic
- workspaces: Tell chat agents to hand finished work back via the inbox
- workspaces: Chat-cli template — tools via
aliceCLI, inbox via MCP - workspaces: Launcher-level toolAccess option (MCP vs CLI); merge chat-cli into chat
- devtools: Pre-fill Tools tab from a tool's declared example input
- devtools: Declare example inputs for the read-only data tools
- devtools: Example inputs for trading tools (mutations conservative)
- ui: Create-workspace dialog + single-source the form across surfaces
- entities: Phase 1 — entity store + entity_upsert/entity_search MCP tools
- entities: Phase 2 — Tracked tab + [[name]] backlinks
- entities: Surface entity_upsert / [[name]] in the chat workspace instruction
- entities: Self-describing asset names — kind-prefixed (stock-vst, crypto-btc)
- workspace: Drop the git panel; fold the files panel from a top-bar toggle
- workspace: Add opencode as a third agent adapter
- workspace: Add Pi as a fourth agent adapter (CLI-injection tools)
- ui: React-i18next foundation + language picker (i18n stage 2)
- ui: Translate ActivityBar + Settings page (i18n slice)
- ui: Translate nav secondary sidebars (i18n batch 1)
- ui: Translate login gate (i18n batch 2)
- devtools: Tool-audit skill + repo-root .mcp.json for dev-side auditing
- analysis: Right-side volume signals — RVOL/OBV/MFI/VWAP + relative-volume movers
- discovery: Add dollar_volume (traded notional) as the absolute volume axis
- tool: Expose ETF tools to the agent (ANG-79) — thematic-ETF self-serve
- workspace: Give Pi full MCP via an injected bridge extension
- ui: Show all agents on template cards + opencode/pi glyphs
- analysis: Sector rotation map — GICS-11 cross-section (ANG-80)
- ui/market: Sector rotation map — quadrant chart + ranked table
- ui/workspace: Top-right Spawn button on template detail, unify create flow
- ui/workspace: Always-visible "New session" button in workspace header
- ui: Dedicated file viewer tab + clickable [[wikilinks]]
- workspace: Pi by-id session resume via launcher-assigned id
- workspace: Codex + opencode by-id session resume (post-spawn harvest)
- workspace: Unified headless launch interface + standard dispatch API
- ui: Add Traditional Chinese (zh-Hant)
- ui: Translate Inbox / Tracked / News pages (i18n)
- ui: Translate Chat workspace surface (i18n)
v0.30.0-beta.1
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- build: Resolve UI dist caching footgun + electron pack readiness
- test: Sync workspace aliases to e2e + bbProvider configs
- electron: Upgrade to v38 + restore full turbo build
- workspaces: Templates resolution survives tsup bundling
- ui: Mobile secondary sidebar accessible via drill-down drawer
- workspaces: Override PWD env to match spawn cwd
- workspaces: PWD env override + observable resume failure
- workspaces/codex: Read MCP URL from spawn env, not backend env
- workspaces/claude: Drop fragile --continue, fresh-spawn when no id
- ui/sidebar: Trim ActivityBar, widen secondary, popover BETA hint
- ui/sidebar: Inline disclosure for BETA hint, avoid overflow clip
- ui/routing: Land on Inbox instead of Traditional Chat by default
- ui/routing: Redirect /chat URLs to /inbox
- ui/sidebar: Move Chat above Workspaces in top nav
- trading-proxy: Rewrap upstream Response so middleware can mutate headers
- trading-proxy: Use
*catch-all instead of/*(Hono routing) - docker: Restore broker SDK deps to root package.json
- uta: Make services/uta typecheck clean (closes ANG-65)
- ui: Activate matching sidebar on URL adoption
- workspaces: De-stale chat / finance-research / auto-quant templates
- ui: Retarget store.spec off the removed chat ViewSpec
- ui: Unwire deleted chat/channels demo MSW handlers from the barrel
- ui: Bump tab-store persist version (drop stale chat/notif tabs)
📚 Documentation
- todo: Record vitest config consolidation followup
- todo: Retire mcp-ask connector
- readme: Rewrite Quick Start for the dev orchestrator + 5173 reality
- readme: Reflect UTA-split architecture — two-process model + carrier framing
- readme: Add Authentication section + Docker login hint
- claude.md: Rewrite Project Structure + Key Architecture
- claude.md: Rewrite Git Workflow + retire TODO.md to Linear
- claude.md: Point future-work surface at Linear (follow-up to d1d417f)
- claude.md: Rewrite Quick Start + Pre-commit Verification
- claude.md: Refuse external PRs before pull, not after
- claude.md: Reframe architecture around Workspace launcher + Trading-context injector
- claude.md: Note --filter='!@traderalice/desktop' for cloud sessions
- claude: Update CLAUDE.md for the legacy-chat excision
- readme: Align README with legacy-chat excision
🔧 Refactoring
- config: Single-source port architecture, derive everything from connectors.json
- build: Dev/test consume workspace package source, drop predev hook
- paths: Centralize fs resolution behind paths.ts, prep for DMG
- uta-protocol: Lift broker preset catalog into shared package
- telegram: Await UTA-manager calls in prep for SDK swap
- uta-service: Relocate simulator routes from Alice to UTA
- tool/trading: Await UTA-manager + per-account async calls (Phase A)
- trading: Move aliceId expansion into UnifiedTradingAccount
- uta-split: Physically move src/domain/trading into services/uta
- ui: Split Trading Accounts × Portfolio responsibilities
- workspaces: Drop CLI-pick checkboxes from create flow
- build: Extract Electron shell to apps/desktop
- ui: Move Automation from Legacy to Beta in sidebar nav
- core: Excise legacy chat cluster + retire AgentCenter (backend)
- ui: Remove traditional-chat / notifications-legacy / connectors surfaces
🚀 Features
- electron: Introduce guardian skeleton (port probe + backend spawn)
- dev: Orchestrator unifies pnpm dev to single command with auto port adjustment
- workspaces: Path-centric debug infra for session spawn/resume
- workspaces: Headless probe API for self-debug closure
- docker: Self-host image with bundled claude + codex CLIs
- ui/workspace: Collapsible side panels + Git status labels
- workspaces: Template catalog + README convention + version lineage
- uta-protocol: Bootstrap shared wire protocol package
- uta-service: Bootstrap co-located UTA service process
- guardian: Introduce L2 supervisor module, replace scripts/dev.ts
- guardian: Add flag-based UTA restart protocol
- uta-split: Cut Alice trading routes over to BFF proxy
- uta-client: Lift trading types to uta-protocol + build SDK skeleton
- uta-service: Add 4 routes the AI tool layer needs
- uta-client: Wire SDK's commit/sync/simulatePriceChange/getContractDetails
- uta-service: Add 4 stage-only wallet routes for the AI tool layer
- uta-service: Expand aliceId server-side in contracts/details route
- uta-service: Add POST /quote with aliceId expansion + SDK envelope fixes
- alice: Swap main.ts to UTAManagerSDK — Alice no longer holds broker state
- docker: Dual-bundle build + tini-supervised Guardian prod entry
- safe: Add agent-first red-team penetration kit
- auth: Admin token + session cookie + middleware (L1+L2 gate)
- auth: Gate WebSocket upgrades + close TDD loop on playbooks 01-03
- auth: UI login gate + /api/auth/status localhost passthrough
- auth: SPA shell exception + bind 0.0.0.0 in container
- ui: Stage 1 demo mode — UI runs with no backend
- workspace: Bearer auth option for Claude provider config
- workspace: Carry authMode through profile Apply + MiniMax preset
- ai-providers: Honor profile authMode in GenerateRouter runtime (ANG-72)
- demo: Stage 2 PR-1 — Vercel-deployable + visual skeleton
- demo: Stage 2 PR-2 — PTY transcript replay + recorder tool
- demo: Stage 2 PR-3 — flagship scenario (Inbox ↔ workspace ↔ transcript)
- demo: Stage 2 PR-4 — secondary fixture richness
- migrations: Add 0007 to retire legacy-chat config orphans
🧪 Testing
- paths: Cover dataPath/defaultPath/uiBundlePath/templatesPath
- auth: Unit tests for token-store, session-store, and middleware
- core: Rewrite AgentWork/heartbeat/cron specs for the rewired path
v0.21.0-beta.5
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🚀 Features
- activitybar: Introduce Beta section; promote trading-related entries
v0.21.0-beta.4
Changelog
All notable changes to OpenAlice will be documented in this file.
[Unreleased]
🐛 Bug Fixes
- workspaces: Allow port 3002 origin for web terminal CORS
📚 Documentation
- claude.md: Cover cloud claude/* side-branch hotfix pattern
- readme: Add Workspace + Inbox to Key Concepts
- readme: Post-Workspace generation pass — Brain retired, two-layer Automation, Inbox + Workspace surfaced
- claude-md: Add README maintenance discipline
- readme: Drop "Roadmap to v1" section
🔧 Refactoring
- activitybar: Linear-style widened sidebar with collapsible sections
🚀 Features
- workspaces: Windows compat via Git for Windows bash wrap
- inbox: Per-entry delete (trash button + Delete shortcut)
- workspace: AI provider test button with test-before-save gating
- workspace: Lock Codex wire_api to "responses" + chat-only provider hint
- activitybar: Split Chat into workspace-shortcut + Legacy section
- activitybar: Promote Connectors to Legacy section, drop from Settings