Two audit rounds after WS rollback: lighten hub options snapshot, cache hub balances without extra fetch_balance, soft-poll single-flight, and document fixes in R1/R2 reports.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip full REST tickers when WS is warm, seed subscriptions off-request, and keep the old chain visible while refreshing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace soft REST polling with OKX public tickers WS ingest and browser SSE patches so list quotes stay live while watching an expiry.
Co-authored-by: Cursor <cursoragent@cursor.com>
SSE only refreshed positions; chain asks were one-shot until manual reload, which could mislead open decisions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop treating total_received=0 as a real bid recycle, fall back to exchange upl for display totals, and keep row/summary aligned.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match exchange history by sheets and open time so an earlier close is not overwritten with the later trade's PnL.
Co-authored-by: Cursor <cursoragent@cursor.com>
Env OKX_TRADE_MODE selects standalone options, perp hedge, or OO hedge; hide the other module UI and use group or position limits per mode.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enforce concurrent option contract count on standalone and hedge buys; editable in env UI with hot reload (0 = unlimited).
Co-authored-by: Cursor <cursoragent@cursor.com>
Selecting 指定币数量 opens an order dialog; pending orders move into a 当前委托 tab after 当前持仓; harden remark autofill that showed dekun.
Co-authored-by: Cursor <cursoragent@cursor.com>
Map plan/leg close_reason codes like target_down_win_leg and expiry to Chinese labels in detail, form, and stats.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep the category tabs and search toolbar page-level so they sit above the numbered trade/review/stats sections.
Co-authored-by: Cursor <cursoragent@cursor.com>
Separate trade/review/stats blocks, tuck filters into a toolbar, and hide empty stat groups so the page scans more easily.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add a dedicated lightbox above the review dialog and raise global imgModal z-index so enlargements are no longer hidden behind it.
Co-authored-by: Cursor <cursoragent@cursor.com>
Treat the filter as fuzzy q over underlying/inst/strategy (BTCUSDT->BTC) instead of exact strategy_tag, which always wiped pending rows.
Co-authored-by: Cursor <cursoragent@cursor.com>
Monitor board only needs positions, balances, and targets; drop the OKX positions-history pull each poll, and surface timeout errors via msg.
Co-authored-by: Cursor <cursoragent@cursor.com>
Background poll builds a memory snapshot; the page reads snapshot and refreshes on SSE instead of hitting heavy exchange APIs on each load.
Co-authored-by: Cursor <cursoragent@cursor.com>