Skip to content

v0.84.0-beta

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Jul 22:01
8c6f531

Changelog

All notable changes to OpenAlice will be documented in this file.

[0.84.0-beta] - 2026-07-23

UTA

  • Close the order state machine + PnL read-state fix (#325)

Build

  • Add Turborepo for workspace build orchestration
  • desktop: Dedupe Windows Git runtime

Config

  • Default crypto to bybit demo, securities to alpaca paper with tickers

Desktop

  • Add in-app update prompt

Merge

  • Unified trading architecture + AGPL-3.0 relicense

Polish

  • analysis: Date-only daily bars + simulate entry-slip note (dogfooding)

Refine

  • analysis: Snapshot bars opt-in + rss window default cap (model-payload ergonomics)
  • workspaces: Reframe self-schedule file as an issue declaration
  • issues: Make the Issues board sidebar-less + full-width (Linear parity)

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

⚙️ CI

  • Add GitHub Actions workflow and fix time-sensitive test
  • Add automatic release workflow on master merge
  • Publish opentypebb to both GitHub Packages and npmjs
  • Add workflow_dispatch + independent registry checks for publish
  • desktop: Build + publish per-platform installers on release
  • desktop: Drop macos-13 (Intel) from the build matrix
  • release: Pass --tag to git-cliff so notes aren't headed "[Unreleased]"
  • alice-invest: Add complete validation workflow
  • alice-invest: Enable corepack in validation workflow
  • release: Retire macOS release builds

⚡ Performance

  • Decouple CCXT init from startup, allow plugins to start immediately
  • ui: Bypass React during sidebar drag — update DOM width directly
  • uta: Listing-driven sync — hanging stop/TP orders cost zero per pass
  • entities: Cache the backlink scan + fix Tracked loading UX

🎨 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
  • 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
  • flow: Hide dead-side event nodes
  • Compact activity rail in short windows
  • Add stepped activity rail breakpoints

🐛 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 options key 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
  • Restore opentypebb src exports for local dev, use publishConfig for dist
  • session: Remove duplicate assistant text persistence
  • ci: Write local .npmrc for npmjs publish to avoid GitHub Packages auth conflict
  • 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
  • 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
  • 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)
  • 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
  • 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/
  • 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
  • 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
  • Initialize select fields with first option when no default is set
  • Hyperliquid market loading + e2e support for wallet-based CCXT
  • Hyperliquid market orders via placeOrder override
  • 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
  • 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
  • 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
  • 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
  • cron: Prune orphan snapshot / heartbeat via migration 0004
  • workspaces/codex: Translate streamable-http MCP entries to codex flags
  • tabs: Bump persist version after retiring diary kind
  • trading: Route aliceId through resolveNativeKey for read-side tools
  • trading: Seal UNSET_DECIMAL sentinel at TradingGit wire boundary
  • workspaces: Allow port 3002 origin for web terminal CORS
  • 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)
  • 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 .cmd shims 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-workspace MCP key in -c override
  • entity-store: Serialize mutations + tolerate malformed lines (concurrent-write corruption)
  • workspace: Headless live-smoke — pi prompt terminator + codex approval
  • workspace: Codex headless reports via the alice-workspace CLI (CLI-mode)
  • 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
  • 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
  • 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
  • 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
  • desktop: Drop in-window menu bar on Win/Linux + surface real bootstrap errors
  • ui: Mount only the tab's own session terminal — stop cross-tab WS kick war
  • workspaces: Coalesce concurrent resumes of the same session (ANG-120 defense-in-depth)
  • workspaces: Use real pi install command (@earendil-works/pi-coding-agent)
  • ui: Don't flash the "runtime not installed" nudge during /agents load
  • ui: Preload quick-chat credentials on mount to kill the picker waterfall
  • workspaces: Ship Windows .cmd twins for the alice CLI shims (issue #364 P2)
  • market-data: Surface real K-line fetch errors instead of masking as "no data"
  • quant: Surface bars() fetch failures as kind:"data-source", not "type"
  • ui: Guard sidebar resize() — don't throw "Layout not found" on fresh mount
  • ui: Date labels follow the app locale, not the system locale
  • market-data: Count-only broker bar requests collapsed to one in-progress bar
  • market-data: Alpaca SIP→IEX fallback + honest per-broker bar capability
  • migrations: 0010 — migrate legacy workspace declarations to per-issue markdown
  • ui: Scope sub-account reads with a latest-wins guard
  • guardian: Resolve dev bin shims to absolute .CMD paths on Windows
  • uta,ui: Non-blocking reads during broker connect + connecting state
  • ui: Ask Alice sidebar blank on cold start — dead skeleton behind template gate
  • workspaces: Require explicit default agent runtime
  • ui: Show agent picker label when no default runtime
  • workspaces: Use agent-specific terminal input
  • workspaces: Preserve terminal input bytes
  • ui: Suppress duplicate mapped terminal keys
  • ui: Replay terminal output on theme changes
  • Keep onboarding responsive during runtime probes
  • release: Honor prerelease metadata channels
  • automation: Compact transient runtime events
  • automation: Make run history scrollable
  • cli: Simplify conversation addressing
  • issues: Reject unresumable owners
  • webpi: Compact tool results and polling
  • webpi: Align user messages to the right
  • chat: Separate selection from activation
  • chat: Open workspaces in quick chat
  • pi: Bundle managed search tools
  • connectors: Normalize Markdown attachment encoding
  • cli: Require explicit installer confirmation
  • codex: Launch interactive sessions with full access
  • issues: Explain interrupted runs and guide retries
  • Harden remote workspace startup
  • Wait for Guardian takeover readiness
  • connector: Build smoke artifact deterministically
  • alice-invest: Degrade inbound bridge during startup
  • Serialize Windows session persistence
  • Route brapi quotes and tolerate empty Binance margin
  • Route selected vendor bars and Binance order observation
  • Respect brapi chart ranges
  • ci: Prefer direct pnpm shim on Windows
  • market-data: Enrich brapi key metrics
  • market: Correct candle tooltip encoding
  • market-data: Report HG Brasil connection diagnostics
  • ui: Show market provider test errors
  • market-data: Surface HG Brasil authorization errors
  • portfolio: Query Pluggy custody per item
  • portfolio: Use configured MeuPluggy item IDs
  • portfolio: Map Pluggy custody balances correctly
  • ibkr: Canonicalize conId contracts before routing
  • ibkr: Align text decoder framing
  • ibkr: Close liveness and option-mark gaps
  • docker: Copy pnpm patches before install
  • pi: Preserve native global config
  • market: Restore source-aware chart navigation
  • ui: Make settings responsive and scrollable
  • ui: Distinguish palette previews
  • ui: Clarify model injection settings
  • ui: Preserve chat session across file navigation
  • ui: Preserve Ask Alice shell across drill-ins
  • ci: Disable Electron sandbox in Linux smoke
  • pluggy: Hide zero-balance custody positions
  • ci: Disable sandbox in workspace smoke
  • pluggy: Derive cost basis from transactions
  • pluggy: Reject placeholder zero returns
  • ci: Run workspace smoke under xvfb
  • market: Query BCB series by date window
  • ui: Reset stale forecast tab state
  • beta: Include exchange cash in model portfolio

📚 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)
  • Add v1 roadmap to README
  • Add OpenTypeBB tutorial for running financial data with OpenAlice
  • Fix API key requirements in provider table
  • 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
  • Branch safety rules in CLAUDE.md — never delete dev, never --delete-branch
  • Rename Agent SDK → Claude in frontend, update README + CLAUDE.md
  • 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
  • Add orderType param guide to placeOrder tool description
  • Update README badges and project structure
  • 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
  • Event system guide + CLAUDE.md subsystem pointer
  • claude.md: Rolling dev→master PR convention for multi-session work
  • 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
  • todo: Track MCP-out-of-connectors refactor
  • todo: Close MCP-out-of-connectors entry (done in 6188fd9)
  • TODO: Flag profile + AI Provider model needs structural rethink
  • 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
  • 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
  • claude: Add demo-mode subsystem guide — check handlers when changing /api/* surfaces
  • 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
  • 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
  • UTA live-testing scenario catalog — institutionalize the dogfood loop
  • skills: Point rss guidance at opencli when the feed archive is thin
  • claude-md: Correct stale logging convention
  • Contributor recognition — CONTRIBUTORS.md + README wall + CLAUDE.md convention
  • contributors: Credit @2233admin for the Linear shell design pass
  • contributors: Credit @lvysssss for the Windows workspace-launch fixes
  • readme: Reframe Automation for the self-scheduling model
  • contributors: Credit @walkonbothsides + warm up the framing
  • skills: Document the issue board on the alice-workspace skill + fix stale self-scheduling verbs
  • claude-md: External-PR policy — quarantine gate, reference-and-rewrite
  • contributors: Credit @bakabaka0613 for the TWSE/TPEx vendor need
  • readme: Add @bakabaka0613 to the Contributors wall
  • contributors: Credit @JasonWang1124 for the earliest TWSE request
  • contributors: Credit @bakabird (#384/#387/#390) and @rudyll (#340)
  • contributors: Credit @2233admin for the Windows guardian tsx→.CMD fix (#378)
  • tools: Correct global-macro board provider label (was "(OECD)")
  • Add Codex agent instructions
  • agents: Preserve PR commit history
  • workspace: Define session provenance spine
  • Pipeline serial dev CI feedback
  • Clarify PR roles by delivery mode
  • Preserve Claude installer reference
  • Keep installer scripts local only
  • Codify CLI installer contract
  • Define native remote runtime architecture
  • Add remote quickstart
  • alice-invest: Define architecture and delivery plan
  • alice-invest: Refine architecture and executable backlog
  • alice-invest: Decouple market readiness and fix delivery graph
  • alice-invest: Define fork governance workflow
  • alice-invest: Record inbound session dispatch
  • alice-invest: Decide structured router boundary
  • alice-invest: Decide signal monitor architecture
  • alice-invest: Add operational runbooks
  • alice-invest: Record validation publication blocker
  • alice-invest: Correct CI blocker status
  • alice-invest: Record remaining external blockers
  • alice-invest: Record zero pending backlog
  • Credit jalilsedna for IBKR report
  • alice-invest: Record successful validation workflow

🔧 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
  • 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
  • Introduce ISessionStore interface and test doubles (MemorySessionStore, MockConnector)
  • 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)
  • 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
  • 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
  • Move account lifecycle from main.ts to AccountManager
  • Broker self-registration with configSchema + configFields + fromConfig
  • 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
  • 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
  • Ccxt override hooks accept defaultImpl + fix hyperliquid markPrice
  • 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
  • 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)
  • 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
  • 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
  • config: Extract MCP server out of connectors into top-level
  • workspaces: Drop global-config inheritance, wire MCP per-spawn
  • inbox: Drop kind field — Linear inbox has no such category
  • inbox: Per-entry read state, drop watermark model
  • inbox: Jump-to-workspace as Linear-style reply bar, not floating button
  • workspace: Finance-research uses cp-discovery, not plugin install
  • activitybar: Linear-style widened sidebar with collapsible sections
  • 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
  • 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)
  • 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)
  • 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()
  • workspaces: CLI-only tool injection — no MCP into workspaces
  • ui: Migrate the workspace launcher sidebar off legacy workspaces.css to Tailwind
  • issues: Move the issue→inbox-reports join into the domain (svc.issueDetail)
  • ui: Centralize terminal theme profile
  • ui: Remove terminal output color rewriting
  • webpi: Remove message identity chrome
  • reports: Standardize on html extension
  • terminal: Adopt Orca keyboard pipeline
  • ui: Adopt semantic color system
  • terminal: Adopt renderer-authoritative appearance
  • ui: Make theme palettes universal

🚀 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 channel UI with popover + config modal
  • Per-channel Vercel AI SDK model override (provider/model/baseUrl/apiKey)
  • Add Agent SDK as third AI provider backend
  • ui: Add Agent SDK to frontend provider UI
  • Add streaming event layer to AI providers
  • ui: Consume SSE streaming events for real-time AI response progress
  • Publish @traderalice/opentypebb to GitHub Packages
  • opentypebb: Add widgets.json endpoint for OpenBB Workspace frontend
  • ui: Add favicon
  • opentypebb: Add SEC provider with EquitySearch model
  • openbb: Enable embedded API server by default
  • openbb: Hot-reload embedded API server via plugin lifecycle
  • 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
  • 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
  • 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
  • Add single-level TPSL (take profit / stop loss) to placeOrder
  • Expose TPSL on fetched orders (OpenOrder.tpsl)
  • 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
  • Snapshot management in Dev page + CLAUDE.md verification rules
  • Dynamic CCXT credentials + single-page New Account wizard
  • 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
  • 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
  • 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
  • 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
  • workspaces: Add VS Code-style Workspaces activity
  • workspaces/chat: Write Alice persona into CLAUDE.md + AGENTS.md
  • workspaces/auto-quant: Zero-config via public mirror + per-workspace isolated data
  • 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
  • workspaces/ui: Paused-session view — blurred faux-TUI backdrop
  • inbox: Add workspace-anchored Inbox v0 alongside legacy notifications
  • inbox: Docs + comments schema, live render from workspace
  • inbox: Inbox_push MCP tool via per-workspace /mcp/:wsId route
  • inbox: Jump-to-workspace CTA below comments
  • workspace: Session cards in no-session empty state
  • workspace: Finance-research template + satellite-repo pattern
  • 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
  • activitybar: Introduce Beta section; promote trading-related entries
  • 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
  • demo: Add Vercel Web Analytics, gated to demo mode only
  • cli: Add alice workspace 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 alice CLI, 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)
  • 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
  • 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
  • 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
  • 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
  • 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)
  • desktop: Supervise UTA in the Electron shell + beta-aware L1 update check
  • workspaces: Native cross-platform bootstrap — bundle git (dugite) + port bash to Node
  • workspaces: Auto-detect installed agent runtimes + frontend install guidance
  • workspaces: Inject AI config into quick-chat for loginless runtimes (opencode/pi)
  • workspaces: Workspace self-scheduling + retire central cron
  • ui: Redesign inbox detail + add prose base size + hide editor tabs by default
  • ui: Graduate Automation from Beta to the primary nav section
  • ui: Cluster inbox by workspace with a Time/Workspace view toggle
  • ui: Per-activity secondary-sidebar width + layout polish across 7 sidebars
  • ui: Spawn a session per chat workspace from Ask Alice
  • ui: Per-workspace "+" opens the Ask Alice composer, targeted
  • analysis: Retrospective / Time-Machine primitives — as-of snapshot, backtest, dated news, freshness contract
  • issues: Phase 1 — human+AI issue board over per-workspace markdown issues
  • issues: Phase 2a — read-only issue detail view + link runs to issues
  • issues: Phase 2b — issue write paths (UI edits + comments, CLI verbs)
  • issues: Issues join the [[]] graph — cross-ref entities + issues, warn on duplicate names
  • inbox: Stamp agent-invisible origin on entries → Inbox↔issue cross-link
  • issues: Expose the global issue board on the alice-workspace CLI (reads global, writes local)
  • workspaces: Seed per-agent default credentials into new workspaces
  • inbox: Phase 2 origin — stamp interactive-session pushes (agent-invisible)
  • market-data: Reach global equities via yfinance online search
  • market-data: Opt-in incremental vendors + Eastmoney CN A-share
  • market-data: Native TWSE/TPEx vendor — search, quote, metrics, profiles
  • market-data: Self-describing vendors + agent-toggleable picker
  • uta,ccxt: Sub-accounts — backward-compatible multi-wallet layer
  • uta: Risk visibility, proxy bridging, partial-tolerant aggregation
  • ui,uta: Instrument long-name + primary exchange on contract rows
  • trading: AI auto-trading master switch (replaces dead evolution mode)
  • ui: Systematic first-load skeletons + shimmer for data surfaces
  • ui: Skeleton loading for the chat + workspace sidebars
  • ui: Skeleton loading for remaining data surfaces
  • workspaces: Add self-described display metadata
  • ui: Add terminal theme controls
  • Make agent runtime readiness probes async
  • Probe runtimes in the durable chat workspace
  • automation: Normalize headless runtime output
  • automation: Paginate run history
  • automation: Add durable resume identities
  • automation: Add readable resume ids
  • issues: Add explicit execution ownership (#533)
  • inbox: Record published report revisions (#534)
  • issues: Expose Session provenance (#535)
  • trading: Attribute UTA decisions to Sessions (#536)
  • workspace: Add provenance-aware collaboration (#537)
  • chat: Teach awaited peer collaboration
  • cli: Ask Inbox and Issue authors
  • cli: Collect peer replies together
  • collaboration: Ask Inbox and Issue agents
  • issues: Make markdown What canonical
  • ui: Add visual Markdown issue editor
  • ui: Autosave issue What inline
  • issues: Unify and coalesce activity log
  • issues: Unify assignee and schedule ownership
  • workspaces: Add WebPi session surface
  • webpi: Group tool activity in transcript
  • remote: Add SSH tunnel connector
  • cli: Add local runtime bootstrap
  • cli: Add guided installer experience
  • cli: Harden guided installer
  • reports: Support static HTML attachments
  • workspaces: Add safe template upgrades
  • workspaces: Add safe Workspace absorb
  • Install broker integrations as optional packs
  • Add sticky issue owners and mutation activity (#606)
  • Add native server and managed ssh remote
  • Add workspace template upgrade CLI
  • Bootstrap source runtime build tools
  • Add workspace manager control plane
  • installer: Bootstrap managed Pi
  • installer: Align remote bootstrap with local CLI
  • Publish the stable CLI installer
  • remote: Manage source checkout lifecycle
  • alice-invest: Add safety configuration foundation
  • connector: Define generic inbound text contract
  • connector: Define inbound journal state machine
  • connector: Persist inbound journal and dedupe
  • connector: Dispatch inbound messages with retry
  • connector: Add authenticated Alice inbound bridge
  • connector: Mount authenticated inbound bridge
  • connector: Recover inbound work after restart
  • workspaces: Persist external conversation bindings
  • workspaces: Serialize external conversation dispatch
  • workspaces: Resume external conversations through session control
  • workspaces: Dispatch inbound conversations to sessions
  • connector: Reserve new conversation command
  • workspaces: Rotate external conversation bindings
  • connector: Add owner conversation rotation
  • alice-invest: Add safe router fast path
  • alice-invest: Define fixed income contracts
  • alice-invest: Define market freshness contract
  • alice-invest: Add structured router transport
  • alice-invest: Validate structured router output
  • alice-invest: Define router decision schema
  • alice-invest: Implement message router
  • alice-invest: Add fixed income calculations
  • alice-invest: Compare fixed income products
  • alice-invest: Gate B3 source evidence
  • alice-invest: Gate crypto source evidence
  • alice-invest: Add market universe gates
  • alice-invest: Define signal contracts
  • analysis: Add trailing volatility indicator
  • alice-invest: Add B3 trend strategy
  • alice-invest: Add crypto spot strategy
  • alice-invest: Add deterministic risk validator
  • alice-invest: Add append-only signal ledger
  • alice-invest: Format Telegram signals
  • alice-invest: Add reproducible B3 backtest
  • alice-invest: Add reproducible crypto backtest
  • alice-invest: Add B3 shadow mode
  • alice-invest: Add crypto shadow mode
  • alice-invest: Evaluate B3 shadow evidence
  • alice-invest: Evaluate crypto shadow evidence
  • alice-invest: Add capability readiness core
  • alice-invest: Gate readiness by market evidence
  • alice-invest: Dispatch gated paper alerts
  • alice-invest: Add deterministic signal monitor
  • alice-invest: Add redacted correlation audit
  • alice-invest: Add operational health metrics
  • ui: Add Alice Invest operations tab
  • alice-invest: Expose operational readiness
  • alice-invest: Persist readiness evidence
  • alice-invest: Derive readiness from evidence
  • alice-invest: Expose readiness evidence
  • alice-invest: Migrate readiness evidence journal
  • alice-invest: Complete signal lifecycle monitor
  • alice-invest: Recover monitor inbox delivery
  • ui: Display alice invest evidence and blockers
  • alice-invest: Supervise monitor ticks in Alice
  • alice-invest: Record monitor gaps and crossings
  • market-data: Add brapi research source
  • Show brapi profiles and key metrics
  • Show key metrics refresh time
  • market-data: Add brapi fundamentals
  • market: Show quote and reporting base dates
  • market-data: Enable BRAPI intraday candles
  • market: Show candle details on hover
  • market-data: Add HG Brasil research vendor
  • portfolio: Add read-only Pluggy custody sync
  • portfolio: Include Open Finance custody in equity dashboard
  • portfolio: Present Pluggy as a connected account
  • uta: Expose Pluggy custody as read-only account
  • terminal: Enable Kitty keyboard reporting
  • terminal: Restore cold attaches from headless snapshots
  • ai: Register model semantics for workspace injection
  • ui: Add paired day and night palettes
  • market: Add FX analysis workbench
  • ui: Add three terminal-aware palettes
  • ai: Surface and inject reasoning effort defaults
  • demo: Showcase sessions with WebPi
  • portfolio: Show cached holdings while refreshing
  • pluggy: Surface investment returns
  • portfolio: Add investment returns page
  • market: Add Brazil market context board
  • market: Show portfolio equity quotes
  • portfolio: Add wealth forecast
  • beta: Forecast wealth from monthly contributions
  • beta: Add balanced model portfolio comparison
  • beta: Reserve six months of salary in fixed income

🧪 Testing

  • Add 48 unit tests for equity indicator calculator
  • Add unit tests for trading dispatchers and wallet state machines
  • Add message pipeline integration tests (42 tests)
  • Add core module unit tests (134 tests)
  • Add web streaming integration tests (chat pipeline + SSE transport)
  • Add streaming POST SSE transport tests (3 tests)
  • 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
  • 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
  • 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
  • Add analysis tool e2e tests across equity/crypto/commodity
  • e2e: OKX broker — covers spot synthesis end-to-end
  • e2e: Assert UNSET_DECIMAL never crosses TradingGit wire boundary
  • 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
  • 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
  • config: Cover workspace-credential-defaults routes; enrich demo
  • automation: Cover current Claude and Codex streams
  • cli: Add local installer Docker smoke
  • Harden broker pack installation
  • cli: Make install identity fixture portable
  • Make Windows package checks resilient
  • Allow cold broker registry loading on Windows
  • workspaces: Await external dispatch scheduling
  • workspaces: Stabilize external dispatch serialization
  • alice-invest: Rerun validation blockers
  • alice-invest: Record environment validation rerun
  • alice-invest: Fix readiness evidence fixture
  • Stabilize slow recovery checks
  • alice-invest: Validate operational readiness view
  • installer: Close the dev release loop
  • market-data: Drop direct BLS e2e
  • desktop: Normalize Windows probe paths