- New shared launch module (web/src/lib/launch): preflight client, model/
exchange resolution, and a single launchAutopilot orchestrator used by both
Strategy Studio and the guided launch panel — the two previously duplicated
and divergent launch implementations are gone.
- Preflight runs BEFORE any strategy mutation, so a failed launch no longer
rewrites/activates the strategy as a side effect; readiness and minimums
come from the server (live balances) instead of stale client caches.
- Guided panel polls preflight every 20s so deposits are detected without
manual refresh; step metas show live balances and required minimums; the
beginner wallet page polls its balance while the deposit screen is open.
- Every failure now routes to a guided fix: hyperliquid-funds gets its own
setup anchor (scrolls to the launch panel), start rejections surface the
server's preflight reason (including manual restarts from the trader list),
and structured error bodies flow through ApiError.errorData.
- Terminal dashboard shows a persistent runtime banner when the AI fee wallet
runs low/empty or the trader enters safe mode.
- Vitest coverage for setup-target routing, readiness helpers, and the
launch orchestration order (no side effects before preflight).
* feat: implement exchange account state management and UI updates
- Added functionality to invalidate exchange account state cache on exchange config updates, creation, and deletion.
- Introduced new API endpoint to fetch exchange account states.
- Updated frontend components to display exchange account states, including status and balance information.
- Enhanced user experience by refreshing exchange account states after relevant actions.
* feat: enhance trader creation readiness in AITradersPage and BeginnerGuideCards
---------
Co-authored-by: Dean <afei.wuhao@gmail.com>
sonner's toast.promise() returns a toast ID (not a Promise), so
await resolves immediately and subsequent data refresh fetches stale
data. Users had to manually reload to see changes.
Fixed across AITradersPage, SettingsPage, and TraderConfigModal.