Changelog
API changes and deprecations for the Hypercall testnet.
See also: REST API Reference · WebSocket API · Authentication
v0.07-testnet — April 17–27, 2026
See also: Week 6 Product Update
Additions
RFQ
- Request for Quote (RFQ) trading system — new trading mode for markets without deep orderbook liquidity. Submit an RFQ, receive real-time quotes from the market maker over the authenticated WebSocket
rfqchannel, and accept or decline. Falls back to a limit order on the orderbook when no quotes are received. Enables fast listing of new assets (US500, USOIL, GOLD, HYPE) without waiting for organic liquidity. - Auto-execute mode — new
SubmitAutoExecuteRfqEIP-712 signature type pre-authorizes execution up to a limit price. The first market maker quote within the limit executes immediately in a single round trip. Falls back to a limit order on the orderbook if no quotes arrive or all quotes exceed the limit. - RFQ quote cards — quotes display per-leg prices, total net premium, and a countdown timer to expiry. Accept or decline with one click.
- Slippage controls — configurable slippage tolerance (1%, 2%, 3%, 5%) relative to the indicative price when submitting an RFQ.
Multi-Leg Trading
- Multi-leg options order builder — clicking an option in the chain adds it as a leg to a multi-leg RFQ order form. Multiple legs accumulate; X button removes individual legs. Legs persist in the URL (
?legs=) so multi-leg orders survive refresh and are shareable. - Strategy auto-detection — detects and labels 28 strategy types: Bull/Bear Call/Put Spread, Long/Short Straddle, Long/Short Strangle, Calendar Spread, Diagonal Spread, Iron Condor, Iron Butterfly, Call/Put Butterfly, Call/Put Condor, Risk Reversal, Collar, Synthetic Long/Short, Ratio Spread, Backspread, Box Spread, Jade Lizard, Seagull, Broken Wing Butterfly, Split-Strike Conversion. Strategy names link to docs.
- Combined payoff, chart, and greeks — multi-leg view shows a combined payoff diagram, a combined theoretical price chart (sum of all leg theos), and aggregated greeks (delta, gamma, theta, vega) with sign adjustment for sell legs.
- Contract vs. strategy greeks toggle — switch between per-contract and aggregated strategy-level greeks in the bottom panel.
- Max legs increased to 10 — up from 4.
Liquidation
- Two-phase liquidation system — partial liquidation via backend-managed IOC close orders, escalating to full liquidation via on-chain auction when partial liquidation is insufficient.
- Liquidations tab — new tab in the bottom panel showing liquidation events for the connected wallet.
GET /monitoring/liquidation— admin endpoint returning per-account margin health, auction data, state transitions, and configuration. Used by third-party liquidation bots.- Example liquidator bot — new
liquidatorcrate demonstrating auction monitoring and on-chain bidding viaStaticAuctioneer.liquidate().
UI
- P&L attribution on equity chart — toggle the layers icon to see per-position stacked area fills on the equity chart. A horizontal bar breakdown below the chart groups positions by underlying, shows per-symbol realized P&L, and supports checkbox filtering to isolate or hide individual positions. Crosshair hover updates the breakdown. See desktop guide.
- Expandable markets panel with breadcrumbs — the left-side markets panel collapses to give the trading surface more room. Breadcrumbs show navigation context (e.g., Assets > BTC > Options).
- Notifications bell — replaces the announcements megaphone. Tabbed dropdown with Notifications (fills) and Announcements tabs. Unread dot renders on first paint via SSR. Per-wallet dismissed-at state stored in localStorage.
- Account hover menu — hovering the profile button shows a dropdown with equity, P&L, buying power, and position count. Users who haven't set a username see a "Choose name" prompt.
- Help in navigation — help button in the navbar linking to documentation.
- Service unavailable chip — red indicator in the header when the backend is unreachable.
- Leaderboard rank chip — live rank badge in the navbar (replaces leaderboard link) with delta indicators showing rank changes as you trade.
- Settled position detail pages — per-position detail view showing theoretical price chart, individual fills, realized P&L breakdown, and friendly instrument names (e.g., "BTC $55,000 Call Apr 14").
- Dynamic social preview images — server-side OG image generation for all shareable pages: instruments (theo chart + greeks), multi-leg strategies (payoff diagram + strategy name), profiles (P&L stats + rank), leaderboard (top 5 with medal badges), and trade confirmations.
- Desktop navbar restructured — footer removed, connect button relocated to header, keyboard shortcut indicators (Ctrl+K) visible.
- Chart header price truncation fixed — prices no longer overflow on desktop chart headers.
PWA
- Root route cutover — all routes consolidated from
/mobile/*to root/*. Legacy/mobile/*paths redirect automatically. Unified URL scheme across desktop and mobile. - iOS PWA upgrade flow — users who installed the old
/mobilePWA see a native-style upgrade modal with step-by-step iOS install instructions (Share > View More > Add to Home Screen) using Apple's official iconography. - iOS splash screens and navigation preload — 12+ device-specific splash screens eliminate white flash on cold start. Navigation preload fetches the page while the service worker boots.
- App shortcuts — long-press the home screen icon for quick access to Portfolio and Deposit.
- Screen wake lock — keeps the screen on during trading sessions in standalone PWA mode. Auto-reacquires on app resume.
- Persistent storage — requests
navigator.storage.persist()to prevent browser from evicting cached app assets.
API
instrument_typeon WebSocket events — fill and order update events now includeinstrument_type("option"or"perp"). Backward-compatible addition.?symbol=filter onGET /profile/trades— filter trade history by instrument symbol. Reduces payload for high-volume traders querying specific instruments.- Perp fills forwarded via WebSocket — Hydromancer perp fills are now published to the WebSocket feed (previously missing).
AcceptRfqQuoteandPlaceOrdervia WebSocket — the full order lifecycle (submit RFQ, receive quotes, accept, place order) can now run over a single WebSocket connection with zero REST calls.fillsfield onPerpOrderResult— Rust SDK now returns fills inline with perp order responses. Fields:coin,side,size,price.
Fixes
- IOC/FOK ghost orders — IOC and FOK orders that partially filled were leaving remainder quantity on the orderbook as ghost orders. Remainders are now canceled immediately after partial fill, and status is set to
Canceledinstead ofPartiallyFilled. - Premium reservation on closing buys — buy orders that close a short position were incorrectly reserving premium, draining equity and triggering false liquidation. Premium reservation is now skipped for position-closing buy orders.
- Expired chains after deploy — expired option chains briefly appeared as Active on server restart. Instruments are now checked against expiry timestamps at load time and immediately marked
ExpiredPendingPrice. - RFQ no-quote fallback — auto-execute RFQ that received no market maker quotes previously showed an error. Now falls back to placing a limit order on the orderbook.
- Marquee mover accuracy — top movers in the ticker bar now derive from the options summary cache using theoretical-vs-24h-theoretical price change, filtered to quoted options only. Previously used raw BBO data which produced noisy or stale values.
- Options summary price_change — BBO reference for price change calculation now uses orderbook bid only, replacing the mark-vs-theo fallback that could produce misleading numbers.
v0.06-testnet — April 14–16, 2026
Breaking Changes
PUT /orderandPUT /bulk_order— new atomic order replacement endpoints. Cancels the existing order and places a new one in the same engine tick. If the cancel fails (order already filled or not found), the new order is not placed. Uses the newReplaceOrderEIP-712 signature type. Clients using the old cancel-then-place pattern should migrate.
Additions
API
GET /profile/realized-pnl— returns per-symbol realized PnL aggregated from fills and settlements. Accepts optionalcompetition_idparameter to scope results to a competition window.realized_pnlfield onGET /profile/trades— each fill row now includes the realized PnL attributed to that specific trade.net_depositsand attribution components onGET /profile/historical-pnl— historical equity snapshot points now include cumulative net deposits and P&L attribution breakdowns.prev_day_pxfield onGET /markets— markets payload now includes previous-day reference price per instrument.
UI
- Announcements megaphone — megaphone icon in desktop and mobile headers with unread count badge. Clicking opens a popover listing announcements (title, body, date, optional image/link). Per-wallet read/dismiss state.
- Edit & replace orders — desktop: pencil icon on open orders for inline price/size editing, checkmark submits, X cancels, row highlights amber during edit. Mobile: tapping an order shows Cancel and Update buttons.
- Settled positions on member page — new "Settled Positions" section between Positions and Trade History. Shows per-symbol realized PnL from expired options and closed trades with green/red coloring. See Settlement for how options settle.
- Realized PnL column in trade history — displays per-fill realized PnL with color coding; position-opening fills show a dash.
- API key management no longer flashes on load — agent list renders immediately instead of popping in after page load.
- Empty positions table hidden — when the user has no open positions, the positions section is hidden entirely instead of showing empty table headers.
- Connect buttons on empty state — restored missing wallet connect buttons on empty-state screens.
PnL
- P&L is now net of premium paid — realized PnL now accounts for the premium paid to open the position. Previously only showed gross payout. Example: a wallet previously showing +27K after accounting for $135K premium paid.
- Settled options grouped by underlying — attribution no longer lists every individual expired symbol; settled positions are collapsed into per-underlying buckets (e.g., "BTC (settled)").
- Live equity no longer drops to zero for OTM positions — the kink where OTM position value abruptly fell to zero on the live tail of the equity chart is fixed.
- Attribution visible for wallets with only expired positions — wallets with no open positions but settled options now correctly show PnL attribution.
Fixes
GET /profilereturning 500 — fixed for wallets with incomplete aggregate data.- Unrealized PnL stale after server restart — portfolios are now repriced immediately on restart instead of waiting for the next mark update.
- DTE off-by-one in payoff diagrams — fixed days-to-expiry calculation that shifted breakeven and max-loss lines.
- Focus steal — fixed focus stealing during UI interactions.
- Chart rendering improvements — various chart display fixes.
v0.05-testnet — April 11–13, 2026
Additions
Push Notifications
- Browser push notifications — subscribe to fill, liquidation, and settlement alerts via Web Push. New endpoints:
POST /push/subscribe,POST /push/unsubscribe,POST /push/preferences. All push endpoints require an EIP-712 wallet signature. Per-type toggles (fills, liquidations, settlements) available in desktop Settings and mobile account preferences. - Desktop toast notifications — real-time toasts for order fills and errors on the desktop layout.
Trading
- Greeks tab (desktop) — new tab in the bottom panel showing per-position delta, gamma, theta, vega, rho, and IV. Column headers have tooltips linking to Greeks reference. Per-underlying subtotal rows; portfolio total when positions span multiple underlyings.
- Sortable leaderboard columns — profit, volume, and efficiency columns on the leaderboard are now clickable to sort.
- Order form improvements — quick amount selectors, improved tooltips, responsive sizing.
- PnL chart on member page — member profiles now show an equity-over-time chart.
- HC/HL stats relocated to side pane — HyperCore and HyperLiquid statistics moved to a side panel.
- Zero-size order rows removed — order list no longer displays orders with zero size.
Ghost Mode
- Ghost mode — unauthenticated users can browse markets, order books, and charts without connecting a wallet. Settings page also accessible without auth. See the desktop guide for details.
- Dynamic per-asset favicons — browser tab icon shows a green ring with the active asset icon. Call/put variants display when viewing options.
Charts
- Vol surface visualization — interactive 3D vol surface viewer at
/risk/vol-surfacefor all listed underlyings. See Oracles for how vol surfaces are sourced. - Portfolio chart defaults to 5-minute interval — smoother rendering on newer accounts (8H view instead of 4D view).
- Chart updates on preference change — switching chart mode in preferences now takes effect immediately without a page reload.
API
- Expiry filter on
GET /options-summary— pass?expiry=YYYY-MM-DDto scope the response to a single expiration.
Account
- Username display names — wallets can set a display name shown on the leaderboard and member pages. Names take effect instantly (no moderator review). Editable inline from both desktop Settings and mobile settings.
Fixes
- Bid/ask sides inverted for some orders — fixed incorrect side assignment depending on on-chain order direction.
- Option chain load time reduced ~60% — faster loading via server-side expiry filtering and pre-fetched chart data for visible strikes.
- Market switching is now instant — no full page reload when switching underlyings on desktop.
- Tenor switching crash on desktop — fixed crash and slowness when switching between option tenors.
- Desktop account page scroll — long trade history content now scrolls properly.
- Mobile /preferences 404 — preferences page now reachable on mobile.
- Buying power updates after deposit — balance now updates immediately after a testnet faucet deposit instead of requiring a refresh.
- Trade gate shown when agent not set up — shows setup actions instead of a non-functional sign button.
- Error banners auto-clear — persistent error banners now dismiss themselves.
- Leaderboard layout on mobile — fixed scrunched values on mobile vs desktop.
- Redirect flicker eliminated — removed visible redirects when navigating to the app.
v0.04-testnet — April 7–10, 2026
See also: Week 4: Desktop Goes Live
Additions
API
GET /historical-theos— theoretical option prices over time, replacing raw last-trade price history. Configurable time intervals and limits. See REST API Reference.GET /historical-theos/batch— fetch theoretical price series for up to 50 instruments in one request. Parameters:instrument_names=A,B,C&interval=1h&limit=100.realized_pnlonGET /profile/trades— fills now return realized PnL.
UI
- Greeks now use theoretical marks — all Greeks calculations use theoretical prices instead of last-trade prices, significantly improving accuracy for illiquid strikes.
- Theoretical price chart on instrument pages — option contract pages display a historical theoretical price chart (replaces raw trade price history).
- Inline position on instrument page — your open position for the active instrument is shown directly on the contract page.
- Empty state improvements — better copy and layout for empty charts and empty states.
Fixes
- Faucet deposit cap — testnet faucet now respects remaining per-wallet allowance instead of a fixed max.
GET /portfoliointermittent 503s — fixed intermittent server errors on the portfolio endpoint.- Loading spinners — eliminated phantom loading spinners during page load.
GET /profile/tradesreturning 500 — fixed for wallets with fills.- Member page layout shift — fixed alignment shift on the member page.
- Default chart label — clarified that default chart preference applies to assets.
v0.03-testnet — April 1–6, 2026
See also: Week 3 Product Update
Breaking Changes
- Portfolio margin model changed — Initial Margin formula changed from
scanning_risktomax(scanning_risk, option_floor) + gamma_overlay. Three new fields in REST and WebSocket portfolio responses:scanning_risk,option_floor,gamma_overlay. Available balance is nowequity - total_margin_used(wascash - total_margin_used). Equity now includes perpetual unrealized PnL. GET /risk/gridchanges — removedinclude_open_ordersparameter. Scenario model changed from single-axis{scenario_type, value}to combined shocks{spot_shock_pct, vol_shock_pct, pnl_weight, is_tail}. Worst-case PnL is now weighted.
Additions
Desktop
- Desktop trading layout — full desktop shell with multi-panel trade view, keyboard navigation, instrument price chart, compact option symbols, and click-to-navigate from positions/orders to instruments.
API
- Option instruments now include underlying symbol and price — option instrument responses expose their underlying asset. See REST API Reference.
Competition & Leaderboard
- Competition system — new endpoints:
GET /competitions,GET /leaderboard,GET /competition-metric-ranks,POST /submitUsernameRequest. Monthly schedule (1st to 1st at 4:00 PM ET). Testnet competition with real prizes (300/$200 in SYN). Market makers excluded from rankings. - Leaderboard UI — rank badge ("Rank #X" or "Trade to win" CTA), prize breakdown card, Hyperliquid Names integration, formatted option symbols ("04/10 $59,000 Call"), FIFO lot P&L, relative timestamps (5m, 2h, 3d).
- Markdown in competition descriptions — competition descriptions support markdown formatting.
Portfolio
- Portfolio margin — cross-margining across correlated positions. Expired instruments excluded from gamma overlay.
UI
- Compact option symbols — human-readable format throughout the UI: "04/10 $59,000 Call".
- Max button on order form — one-click max size based on available margin.
- Thousands separators — all price and size fields display commas.
- Click position/order → instrument — tapping a position or order row navigates to the corresponding contract.
- Preferences page — tooltips, badge cycling, and synced preference state across sessions.
Fixes
- Chart UTC centering — asset charts center on UTC boundaries; timeframe transitions stabilized.
- Swipe gestures (mobile) — fixed erratic swipe-to-cancel and swipe navigation behavior.
- Desktop URL stripping — removed
/mobileprefix from URLs on desktop; strike selection fixed.
v0.02-testnet — March 24–31, 2026
See also: Week 2 Product Update
Additions
Charts
- Historical PnL chart — equity-over-time chart on the home page with interactive crosshair. Touch/click to inspect any point; shows timestamp and updates balance display.
- Asset chart — per-asset spot price chart with y-axis clamped to the visible period range.
Order Management
- Section headers — positions, orders, and history sections have distinct headers for easier scanning.
- Swipe-to-delete orders (mobile) — swipe left on an open order to cancel.
- Cancel order confirmation — dedicated cancel-order dialog.
- Click order row → contract page — tapping an order navigates to the instrument detail view.
- Updated open order appearance — refreshed styling for open orders.
Connectivity
- WebSocket disconnect banners — visible banners when the WS feed drops or the backend is unreachable.
Greeks
- Position Greeks on asset page — aggregate delta, gamma, theta, vega on the asset detail page.
- Contract Greeks on contract page — per-position Greeks on the contract view.
- Breakeven prices across option types — breakeven prices calculated and displayed for calls, puts, and spreads.
Trade History
- Execution time on
GET /profile/trades— trade history rows now include the fill timestamp. - Options chain expiry persistence — selected expiry saved in URL query params and restored on navigation.
- Option instruments include underlying symbol and price — option instruments expose their underlying asset in responses.
Account
- Username system — set a display name for your wallet address, shown on leaderboard and member pages.
Fixes
GET /profile/tradesreturning 500 — fixed for wallets with fills.- Default position display order — positions default to showing value, then PnL, then cost basis (was inconsistent).
- Order footer shows time-to-expiry — added TTE display; 1-second signing delay prevents accidental double-submits.
- Logout on mobile — session state properly cleared on sign-out.
- Light mode background — fixed background color in light mode.
- Smoother page transitions — reduced visual stutter during navigation.
- Swipe background — fixed background rendering during swipe interactions.
v0.01-testnet — March 16–23, 2026
See also: Week 1 Product Update
Additions
Theme & Appearance
- Midnight dark mode — new high-contrast dark theme alongside the existing light mode.
- Auto theme mode — theme automatically matches device light/dark preference. New users default to auto.
Dashboard & Stats
- HL & HC stat fields — toggle between Hyperliquid-specific and Hypercall-specific statistics on the dashboard.
- Put/call ratio — put/call ratio added to the Hypercall stats panel.
- Outcome badges — visual badges for trade outcomes (profit, loss, expired worthless, etc.) with pie chart in position header.
Options Chain
- Strike sorter and selection persistence — strike prices sortable; selection persists across sessions.
- Price target seeding — price target page seeds with the current underlying price instead of blank.
- Underlying price normalization — consistent underlying price display across all pages, including DEX perp data.
Order UX
- Cancel message for filled/expired orders — cancel attempts on already-filled or expired orders show "This order has already been completed or cancelled" instead of a raw error.
Preferences
- Preferences page — tooltips, badge cycling, and synced preference state across sessions.
Fixes
Connectivity
- Data refreshes on WebSocket reconnect — orders, fills, and portfolio re-fetched on WS reconnect instead of showing stale data.
- WS reconnect delay — backoff timer now resets after a healthy connection. Previously never reset, causing all reconnects to wait 30 seconds after a few normal disconnects.
Orders
- Ghost orders on expired instruments — orders on settled instruments are now properly cleaned up, preventing "Orderbook not found" errors on cancel.
- Negative cash balance rejection — BUY orders that would make cash balance negative are now rejected at submission. Rejection message: "Insufficient cash (Standard)". Can be bypassed for risk-reducing buy-to-close orders. See Standard Margin.
UI
- Price target animation — fixed bouncing/stuck animation on the price target page.
- Mobile asset chart clipping — fixed quick action clipping on mobile asset chart.
- Mobile PWA loading hang — fixed an issue causing the mobile PWA to hang on "Loading...".
Known Issues
Staging behavior and known issues are communicated with access; contact the team for details.
Versioning Policy
Stability labels:
- Stable: Router paths and core request/response shapes unlikely to change
Breaking changes: Will be documented here with migration guides.