Patch Notes

What's new in OptionsDeck

We ship constantly. Every signal, every chart, every AI improvement is documented here. Subscribe via the link at the bottom to get a weekly digest of major releases.

v2.1.0

Pre-launch hardening — every number honest, full a11y pass, workflow glue
  • New
    Keyboard shortcuts — ? overlay + Gmail-style g-nav

    Press ? anywhere for the shortcut cheatsheet. g-prefix jumps: g d dashboard · g f flow · g a ideas · g p portfolio · g w watchlists · g j journal · g r risk · g s settings · g h heatmap · g l alerts. Bare keys are suppressed while you're typing in an input.

  • New
    Chart → AI idea, everywhere

    Every dealer-positioning surface now closes the loop into a trade: regime-aware Generate-AI-idea CTAs on /gex, /gex/vex, /gex/harmony, /gex/surface, /gex/convergence (Trinity), /iv-surface, and the chart quick-look modal. See the regime, click once, get a defined-risk structure.

  • New
    One-click Watch button on /ticker

    Star toggle on any ticker page drops it into any watchlist inline (auto-creates a default list if you have none). Optimistic — the star fills instantly.

  • New
    Paper Trade button on AI ideas

    Send any AI idea straight to the paper engine with its legs / target / stop intact — closes the promise the /paper empty state was making. Multi-leg ideas post as a strategy; non-Pro users get an honest upgrade toast.

  • New
    Clickable tickers across the whole app

    Tape, whale monitor, multi-leg structure rows, portfolio, journal, alerts, flow concentration, the public wall and track record — every ticker cell now links to its ticker page, and resolved-trade rows deep-link to the /idea/[id] permalink.

  • New
    Combobox recent tickers + more ⌘K routes

    The ticker combobox surfaces your last 5 tickers at the top of the dropdown. Command Palette gained 8 missing destinations (GEX sub-pages, flow scanner + map, webhooks, strategies). /ideas now honors ?id=<n> so the dashboard carousel deep-links to a specific idea.

  • Improved
    Full accessibility pass

    WAI-ARIA Combobox / Tabs / Radiogroup patterns on ticker inputs, page tabs, and every mutually-exclusive picker (chart timeframes, GEX presets, direction filters). aria-labels on icon-only buttons, label/htmlFor associations + inputMode + autoFocus across every form, keyboard-operable + aria-sort sortable table headers, a skip-to-content link, body-scroll lock on the mobile drawer, and aria-live so screen readers announce streaming AI responses.

  • Fix
    Trial + marketing claims now match what the code enforces

    Removed every surface that promised the 7-day trial granted 'full Pro access' or 'live flow' (it grants the AI Strategist on core tickers + journal + plays + delayed flow). Corrected the ticker-universe claims to the real 229, moved Strategy Reframer to its true Elite tier, fixed the trial AI-idea quota (10 → 15), and stopped the welcome + day-1 emails from routing trial users to paywalled features.

  • Fix
    Stop rendering fabricated values while data loads

    GEX/VEX pages no longer assert a bullish/bearish regime mid-fetch, the mini-Trinity rail no longer flashes a green COMPRESSION badge, and dashboard widgets, per-ticker quotes, IV-surface spot, and the portfolio / risk / paper / admin header cards no longer flash $0.00 / 0% before real data arrives. ~25 surfaces now distinguish loading from a genuinely empty state.

  • Fix
    Never invent a number we don't have

    Missing option entry_price is skipped in P/L, paper mark-to-market, and scenario shock-grids instead of fabricating a $0 basis; the contract picker emits null, not 0, when there's no priceable market. Null confidence and null win-rate render '—' rather than '0%'. Unset target/stop is distinguished from a real $0.00 across /conviction, /social, /idea/[id], and the landing social-proof cards.

  • Fix
    Date / time integrity

    New fmtDate / fmtTime / fmtDateTime helpers rolled out across alerts, journal, plays, webhooks, admin, notifications, track-record and more — Invalid Date is detected and shown as '—' instead of leaking, null dates no longer render as 1/1/1970, and idea timestamps emit explicit en-US / UTC.

  • Fix
    P/L sign placement

    Losses read '-$1,234.56', not '$-1,234.56', everywhere — portfolio, plays, journal, risk, paper, scenarios, and backtester totals + per-row.

  • Fix
    Crash + NaN guards on partial data

    Pin / gatekeeper distance_pct is guarded against partial GEX rows and chains, bar-chart Math.max calls filter out NaN, sparklines drop Infinity, recharts tooltips guard $undefined headers, and a Number.isFinite sweep replaced fragile ?.toFixed() || '—' patterns that could leak NaN or crash.

  • Fix
    Surface silent failures instead of dead-ending

    Stripe checkout, the billing portal, and password reset now toast when the backend returns 200 without a URL/token instead of doing nothing. Analyze / checkout / save buttons show an in-flight state rather than silently disabling.

  • Fix
    Honest regime + status labels

    Flow no longer calls balanced order flow 'bearish', risk win-rates are no longer all painted bull-green regardless of value, the /conviction crash (copyingIds ReferenceError) is fixed, the Trinity dist-to-flip helper that always returned null now reads the real flip level, and alerts_engine only auto-closes a play on an explicit target/stop role.

  • Speed
    TTL caches on public landing endpoints

    The landing hero stats (60s), idea-wall (30s), and track-record breakdown (2min) now serve from short-lived in-memory caches so anonymous traffic spikes don't re-run the same DB aggregation on every hit. AudioContext is resumed before playing the flow-tick sound.

v2.0.0

Dealer-flow platform expansion — VEX engine, structure classifier, multi-leg detection
  • New
    Strike Magnet + Pin Anchors on /gex

    Backend already computed magnet strike, pin ceiling, pin floor, and velocity-pocket flags — now surfaced as a three-card row on /gex with chart overlay halos. Dealer Positioning Read narrative card pulls the human-readable interpretation directly into the page header.

  • New
    Vol Exposure (VEX) engine + page at /gex/vex

    Vega-axis analogue of GEX: per-strike net VEX, vol walls (top |VEX|), vol inflection where running-sum crosses zero. Computes vanna / charm / vomma locally since the Direct Feed ships only first-order Greeks. Surfaces total-Greek KPIs plus a chart with vol-wall halo and dashed inflection line.

  • New
    Positioning Harmony Map at /gex/harmony

    Overlay of GEX and VEX on the same strike axis, normalized to [-1, +1]. VEX bars colored by alignment (accent = agrees with GEX, gold = conflict). Verdict tiers (Strong / Moderate / Conflicting / Diverging) drive a confidence summary; aligned strikes are the highest-conviction support/resistance levels.

  • New
    Convergence Dashboard at /gex/convergence

    Side-by-side SPX/SPY/QQQ dealer positioning with verdict header (Triple Compression / Triple Expansion / Mixed). AI Strategist consumes the same data and tilts confidence ±0.05 on alignment.

  • New
    Dealer-Positioning Structure Classifier

    Maps each ticker into one of seven canonical patterns — Pin Compression, Wall Defense, Velocity Pocket, Negative Gamma Trend, Gamma Flip Reversal, Volatility Squeeze, Balanced Mid-Range — each with a thesis_template. Surfaced as a badge on /gex; AI Strategist uses it to strongly steer structure choice (iron condors for compression, OTM debits for pockets, defined-risk near gamma flip).

  • New
    Trade Microscope on /flow

    Click any tape row to open a 4-section modal: Live Quote (bid/ask/mid/IV/delta with 10s refresh), Print Stats, Position Sizing helper at $1k/$5k/$10k/$25k notional, Underlying Context with magnet + pins. Escape + click-outside close. Bookmark/Chart/AI-idea CTAs in the footer.

  • New
    Print Journal — bookmark prints with live P/L tracking

    Bookmark icon on every tape row toggles entry; localStorage-backed list (50-cap) renders live P/L vs entry premium via a new /api/flow/quote-many endpoint (50 OCC/request, 20s SWR cadence). Per-bookmark note field.

  • New
    Multi-Tab Flow Terminal — 10 stacked preset tabs

    All Flow / Heavy $ (≥$100k) / Sweeps / Blocks / Bullish Bias / Bearish Bias / Hot Score / 0DTE / Near ATM / Far OTM. Live count badges, stacks with manual ticker / aggressor / type filters.

  • New
    Highlight Rules with 6 toggleable alert classes

    Mega Whale (≥$1M, animated gold ring + MEGA badge) / Whale (≥$500k) / 0DTE Sweep / ITM Conviction / Score ≥ 9 / Wide Spread. localStorage persistence, first-match wins, takes precedence over default tier styling.

  • New
    Contract Scanner at /flow/scanner

    Aggregates the rolling print window by OCC symbol so concentrated positioning is visible without scrolling tick-by-tick. Sortable columns (Total $, Prints, Max Score, Buy %), inline buy/sell split bars per row, OTM% from latest print, min-total filter, summary KPIs.

  • New
    Flow × Dealer Map at /flow/map

    Strike-axis ComposedChart overlays GEX bars (left Y) + flow premium scatter (right Y, log-scaled radius colored by directional flow). Reference lines for spot, magnet, pin ceiling/floor, gamma flip pulled from gex.read. Top Strike Concentrations panel ranks heaviest dollar-flow strikes.

  • New
    Whale Position Status Monitor on /flow

    Backend whale_tracker walks rolling tape buffer (≥$500k entry, 4h max age), classifies each OCC into NEW / TRENDING / AGED / UNWIND / DEAD lifecycle stages from age + same-vs-opposite premium flow. Sees which institutional positions are still being defended vs unwinding.

  • New
    Multi-Leg Correlation Tracker

    Detects 10 multi-leg structure types — bull/bear call/put debit/credit spreads, long straddle, long strangle, call/put calendar, call/put ladder — from rolling tape using time-windowed pairwise + ladder scans. AI Strategist now sees the top 5 detected structures and tilts confidence ±0.05 by direction match.

  • New
    Session Pulse KPIs on /flow

    Net Sentiment signed [-100, +100] composite of bull-leaning (call buys + put sells) vs bear-leaning (put buys + call sells) prints with inline gauge bar. P/C Ratio, Aggressor Mix, Bull / Bear Premium split bars. Net Sentiment also exported by flow_posture_read so AI Strategist consumes the continuous directional signal.

  • New
    Position-quality columns on flow tape

    Each tick now captures spot, bid, ask, open_interest at print time. New OTM% (signed by moneyness), NBBO Spread% (bear-tinted when >10%), OI (compact) columns added to the tape and CSV export. AI Strategist's recent_flow context includes OTM% so the model distinguishes lottery OTM bursts from conviction ITM positioning.

  • Improved
    AI Strategist rules expanded to 21

    Added rules #18 (structure.label thesis steering), #19 (vol_positioning_read regime + vanna + charm tilts), #20 (detected_structures match/fade confidence), #21 (macro_convergence triple-alignment tilt). The model now reasons about the same dealer-flow signals the operator sees on screen.

v1.9.0

Reliability + correctness + UX sweep — autonomous improvement session
  • Fix
    AI dealer-flow ground-truth across /ideas, /chat, /debate

    Real bug caught in production /debate: with positive GEX (dealers long gamma) the bull case asserted 'dealers chase momentum higher' — a SHORT-gamma mechanic that contradicts the regime. Now a derived ground-truth block is injected into every AI surface, naming the actual GEX sign + the exact phrases to NOT use. Same fabrication risk eliminated across the AI Strategist (/ideas) and Ask OptionsDeck (/chat) too.

  • New
    Chart indicator legend + importance ratings

    Toggleable on-chart legend (top-left) shows every active line indicator with color swatch + last value. Indicators now have a 1-5 ★ importance rating; top-5 auto-enable on first run — GEX walls / gamma flip / VWAP / EMA 21 / Volume. Storage key bumped to v2.

  • New
    Live options chain in AI context

    Ask OptionsDeck was inventing option prices when recommending strikes. Now gather_context bundles the actual chain (next 6 expirations, ATM ±15%) with live bid/ask/mid/IV/delta. System prompt enforces 'never invent prices, must quote from chain, respect stated BP'.

  • New
    Spam filter on Core-inference endpoints

    Min-gap debounce (3s ideas/debate/backtest, 1s chat) prevents button-mash from burning Core inference budget even when per-minute budgets are fine. Floor is now ~20 calls/min vs prior 6 in 1 second.

  • New
    Portfolio: mark options to live mid + edit qty/avg

    Option positions were re-priced with Black-Scholes at hardcoded 25% IV — wildly wrong on NVDA/TSLA. Now prefers live bid/ask midpoint (broker-style mark selection), with diagnostic tooltip showing mark source. New PATCH endpoint + pencil-icon edit dialog lets users correct real fills.

  • New
    Sort + filter sweep across data pages

    Plays (P/L, confidence, distance to target), Portfolio (P/L, |delta|, expiration, instrument filter), Screener (global sort across all buckets + ticker search), Journal (clickable column sort + setup filter), AI Ideas (confidence sort).

  • New
    Flow Scanner CSV export

    Download currently-filtered ticks as RFC4180 CSV. Includes timestamp, OCC, strike, premium, aggressor, sweep/block flags, IV, delta.

  • New
    Chat UX: textarea + viewport-bound layout

    Single-line Input → 4-line auto-growing textarea (Shift+Enter for newline). Page bound to dvh so the input row is glued to the bottom of the viewport while streamed responses scroll inside the chat card.

  • Improved
    Escape-to-close + click-outside on all modals

    Every modal in the app now responds to the Esc key and closes when the dimmed backdrop is clicked. role=dialog aria-modal=true applied.

  • Improved
    Multi-ticker auto-fetch in Ask OptionsDeck

    Asking 'between MRVL, TSLA, AAOI, MSFT and POET which is the best...' previously refused; now the chat extracts up to 8 tickers from your message, fetches each in parallel, and feeds the model real data for every name. Per-ticker errors are surfaced, not silently swallowed.

  • Security
    Cap unbounded limit params + max_length on text fields

    Audit found 4 endpoints accepting unbounded ?limit= (/operator/ideas, /notifications, /hub/most-active, /events/earnings-calendar) — now capped 100-500 to prevent enumeration/DoS. PlayIn/JournalIn/PositionIn text fields gained max_length=5000 to block 10MB payloads.

  • Improved
    Confirm prompts on destructive deletes

    Portfolio + Alerts deletes silently mutated. Now match the pattern used in plays/journal/watchlists/webhooks — confirm() before removal.

  • Improved
    a11y aria-labels on icon-only buttons

    Modal close (X) and trash delete buttons across journal/portfolio/plays/webhooks/alerts/builder now have descriptive aria-label.

v1.8.5

Cross-linking polish — tool nav + /best hub + Cmd+K resources
  • New
    Cross-tool navigation on every calculator page

    New <RelatedTools /> component renders a 4-card grid of the OTHER free tools at the bottom of each /tools/* page. Visitors landing via SEO search now see all 5 tools as easy next-clicks instead of bouncing after one calculation.

  • New
    /best hub page

    New /best index surfacing all 5 comparison guides (AI / Flow / GEX / 0DTE / Paper Trading) in a 2-col grid. Honest 'why these comparisons matter' section.

  • Improved
    Cmd+K Resources group

    Added 3 entries: Best Platforms Hub, Learn Hub, Public Track Record. Operators can now jump to comparison content + track record stats mid-flow.

v1.8.4

Production build unblocked
  • Fix
    next build was failing on 6 dashboard pages

    useSearchParams() in builder/chat/debate/gex/ideas/iv-surface wasn't wrapped in Suspense, which Next.js 14 treats as a hard prerender error. Set experimental.missingSuspenseWithCSRBailout=false so these client-only dashboards CSR-bail instead. Verified: next build now exits 0 with all 149 pages compiled cleanly.

v1.8.3

Hardening pass — security + DB caps + footer surfacing
  • Security
    Gate /api/admin/upgrade-self behind is_admin

    Pre-fix the dev-mode plan flipper accepted any logged-in user — any trial account could POST to upgrade themselves to Elite for free. Now requires user.is_admin. Operators still use it for testing; real users go through Stripe.

  • Security
    Cap limit on public /track-record + /idea-wall

    Anonymous public list endpoints accepted unbounded ?limit=N. Now capped at 500 and 200 respectively to prevent DB-exhaustion abuse. Real UI use cases unaffected.

  • New
    /best/options-paper-trading SEO landing

    5th /best/ page. Targets 'best options paper trading' + 'options simulator' (~3-7K mo). Honest comparison vs Thinkorswim + Tastytrade + IBKR + OptionStrat.

  • Improved
    Footer mega-menu: 3 /best/ links

    Best 0DTE Platform / Best GEX Platform / Best Paper Trading now visible from every content page footer alongside /compare/ links.

  • Fix
    3 latent TypeScript errors caught by tsc sweep

    iv-surface JSX bare > token (2 occurrences) + conviction Badge variant='outline' invalid. Dev mode silently allowed but production build would fail. tsc --noEmit now passes with 0 errors.

v1.8.2

Sprint cap — P(touch) labels + topic-cluster SEO + honest activation
  • New
    P(touch) labels on every AI idea target + stop

    Target/stop tiles in IdeaCard now show implied probability of touch beneath the dollar value, e.g. '62% P(touch) · 7d'. Computed client-side via the same Black-Scholes math powering /tools/probability-calculator. Tone-coded for at-a-glance read.

  • New
    New SEO landing: /best/dealer-gex-platform

    Targets 'best dealer gex platform' + 'spotgamma alternative' (~2-5K mo). Honest comparison vs SpotGamma + MenthorQ + GammaCharts + UW. Completes the GEX topic cluster (live tool + guide + landing).

  • New
    Cmd+K palette: Probability Calculator entry

    5th tool was missing from ⌘K. Now searchable with 'probability touch itm odds' keywords.

  • New
    Footer 'Free Tools' column

    All 5 calculators + /tools index now linked from every /learn /blog /best /compare page footer. Boosts internal PageRank to tool pages from ~35 SEO surfaces.

  • Fix
    ActivationChecklist honest 'preferences set' detection

    Pre-fix the 'Set your operator preferences' step always ticked because the API returns default account_size + 'balanced' risk_profile for new users — both truthy. Backend now returns 'customized: bool' computed from non-default values; fresh users see 0/5 honestly.

  • Fix
    Sitemap: include /authors/optionsdeck-research

    E-E-A-T author profile was missing from sitemap. Google rewards content with indexable author pages as part of the trust signal.

v1.8.1

Sprint continuation — transparency + probability + hedging cluster
  • New
    'Signals synthesized N/14' on every AI idea

    Each idea card now shows pill-tags for exactly which of the 14 channels had live data when it was generated. Degraded channels excluded. Transparency lever — operators see direct visual proof that ideas are synthesized from N real signals.

  • New
    Live 'Latest Resolved Trades' on landing

    Public landing pulls 3 most recent resolved+aged AI ideas from /api/public/track-record. Includes losers — that's the credibility move. Gracefully hidden on empty data.

  • New
    5th free tool: Probability Calculator

    /tools/probability-calculator. P(touch), P(close above strike), P(close below strike) via Black-Scholes reflection principle. Tool series now 5 deep with ~20-35K combined monthly search.

  • New
    New SEO landing: /best/0dte-options-platform

    Targets 'best 0dte options platform' (~1-3K mo). Honest competitor comparison + cross-links to /scanners/0dte and /learn/0dte-options-trading. Completes the 0DTE topic cluster.

  • New
    2 new strategy guides: Protective Put + Collar

    Rounds out the hedging cluster on /learn (now 11 strategy guides). Covers the 'stock + options downside protection' topic that competitors barely touch.

  • Fix
    /api/public/idea/{id} malformed not-found

    Old code returned a 2-tuple of dicts (serialized as a JSON array) instead of a proper 404. 404 cases silently returned 200 with garbage body. Fixed to return a real not-found response.

  • Fix
    ActivationChecklist watchlist probe URL

    Was calling /api/watchlist/lists which doesn't exist (actual prefix is /api/watchlists). The 'Add tickers to watchlist' step would never tick. Plus switched plays probe to ?status=open which is a real supported param.

v1.8.0

8-hour sprint — track record, scanners, free tools, retention
  • New
    Public Track Record page

    /track-record now lists every RESOLVED + AGED AI idea with full setup math. Paginated, filterable by ticker / direction / strategy / outcome. Top-of-page breakdown cards by strategy + direction + ticker. The 'show your work' lever — UW/SpotGamma/Skylit don't publish a complete trade log.

  • New
    Shareable per-idea URLs

    Every AI idea now has a public /idea/<id> page with server-rendered OG cards. Live ideas show ticker + direction + conviction band only; resolved+aged ideas show full setup. Locked variant has hover overlay with 'Unlock full setup — 7-day trial' CTA. Share button added to every idea card.

  • New
    Strangle Scanner mode on /earnings

    Each ticker now enriched with IV rank + a 'strangle edge score' (0-100) combining expected move × vol cheapness. Toggle to Scanner view to see top-edge LONG-strangle setups ranked.

  • New
    0DTE Scanner

    New /scanners/0dte page — same-day expiration overview for SPY/QQQ/IWM/SPX with spot + IV rank + ATM IV + dealer GEX + walls + today's premium-traded in one card per ticker. UW has 0DTE filters but no dedicated GEX-overlay scanner.

  • New
    Free tool series (4 calculators)

    /tools/greeks-calculator (Black-Scholes), /tools/position-sizer (fixed-fractional + Kelly), /tools/implied-volatility-calculator (bisection back-solve), /tools/max-pain-calculator (OPEX pin finder). All client-side, no auth. SEO + lead-gen — combined ~15-30K monthly long-tail search.

  • New
    Activation Checklist on dashboard

    First-week checklist tracks 5 trial-conversion actions: set preferences, generate first AI idea, save first play, build watchlist, visit GEX. Probes real backend state; auto-hides at 5/5; dismissible.

  • New
    PWA install support

    Manifest enriched with categories, scope, 4 home-screen shortcuts (Dashboard / AI / Flow / GEX), maskable icon. Non-intrusive install prompt with 30-day dismissal memory.

  • New
    Real /status health page

    GET /api/public/health probes 6 subsystems (database, market feed, AI engine, payments, email, flow scanner). No auth — third-party uptime monitors can poll. Page reflects real status with operational/degraded/down distinction.

  • New
    Pricing competitor matrix

    20-row honest comparison vs Unusual Whales / SpotGamma / Skylit on pricing page. Includes features competitors have that OptionsDeck doesn't (dark pool, insider, politician, native mobile) — credibility move.

  • New
    Trial retention email sequence

    Added day-1 onboarding (3-step quick-win plan), day-3 mid-trial value email, and win-back at day-14 post-expiry. Industry benchmark: +5-10pp trial→paid conversion lift.

  • Security
    Plug /wall live-idea leak

    Pre-fix /wall served full live setups to anonymous visitors. Now redacted: live ideas show ticker + direction + conviction band only; full detail unlocked for resolved+aged ideas. No more free signal feed.

  • Security
    Profanity filter on handles + names

    PUT /api/social/me + POST /api/auth/register now reject leetspeak-disguised slurs (n1gga, sh1t, f*ck, etc.). Existing offensive handles in dev DB scrubbed.

  • Speed
    Chat prompt cache

    Ask OptionsDeck chat system prompt now uses an ephemeral cache block — 90% input-cost cut on the cached portion. Saves ~$1-2K/yr at current Elite usage.

  • Improved
    GEX regime mapping fix

    RegimeBanner GEX cell was permanently stuck at '—' (expected 'compression'/'expansion' but backend returns 'positive'/'negative'). Now correctly shows Compression/Expansion.

  • Improved
    Cmd+K palette completion

    Added 0DTE Scanner + all 4 free tools to Command Palette with operator-friendly keywords. ⌘K → 'iv' opens IV calculator, etc.

  • Improved
    Dynamic sitemap

    Sitemap now enumerates all /learn /blog /scanners and SEO_TICKERS automatically. URL count 37 → 100+.

  • Improved
    /tools index page

    Discoverability hub for all free calculators with 'Want the full terminal?' CTA.

v1.7.3

Deep-link grid + operator visibility
  • New
    Complete deep-link grid

    Six tools now consistently honor ?ticker= URL: /ideas, /gex, /iv-surface, /debate, /chat, /builder. Combined with /ticker/X's 6-button action toolbar, the platform is fully launchpad-driven — no re-typing tickers.

  • New
    'Recently Shipped' on landing page

    Prospects landing on / now see active velocity signals (pulsing dot + 3 feature cards) above the pricing teaser. Direct answer to the implicit 'is this product alive?' question.

  • Improved
    Alerts page tooltip

    Title explainer surfaces the four delivery channels (in-app bell / email / Pushover / Discord-Slack webhooks) + notes auto-armed alerts from tracked plays.

  • Improved
    Ask OptionsDeck title tooltip

    Clarifies what makes /chat different from /ideas: open-ended chat vs single-trade output, both backed by the same 14-channel context.

  • Improved
    Mobile-safe table overflow

    /sectors and /paper now wrap wide tables in overflow-x-auto with sensible min-width. Usable on a 375px phone screen instead of getting clipped.

  • Speed
    AI engine channel failure logging

    gather_context() previously silently degraded if any of the 14 channels failed. Now each failure logs a WARNING with ticker + channel name + exception — Sentry-trackable. Catches data-feed plan-gating + endpoint outages before they degrade AI quality.

  • Improved
    Search engine verification meta tags

    Layout.tsx now emits google / yandex / bing verification meta when NEXT_PUBLIC_*_VERIFICATION env vars are set on deploy. Unverified deploys stay clean.

v1.7.2

Workflow integration — one-click flows from anywhere
  • New
    Watchlist quick-actions

    Every ticker in your watchlist has a hover toolbar: ⚡ Generate AI idea · 🎯 GEX · 📈 Vol surface · ↗ Ticker page. The Sparkles button uses ?auto=1 to instantly fire the 14-channel AI on that ticker — no extra click.

  • New
    Per-ticker action toolbar

    Visit /ticker/NVDA and the header shows AI idea / GEX / Vol / Debate / Builder buttons — each deep-linked with ?ticker=NVDA so the destination loads pre-filled.

  • New
    Sector row ⚡ to AI idea

    Click the Sparkles on any sector row in /sectors to instantly generate an AI idea on that ETF. See 'energy is leading' → click XLE → AI synthesizes.

  • New
    Strategy template Cmd+K

    Press ⌘K and type 'iron condor' / 'bull call' / 'long straddle' — press Enter and the builder opens with that template pre-loaded at current ATM strikes. 10 templates wired.

  • Improved
    Reading time + author byline on /learn

    Every learn article now shows 'OptionsDeck Research · X min read' under the subtitle. Auto-computed from word count.

  • Improved
    Stock Screener tooltips

    RSI, Vol×, Score column headers now have hover explainers. Every premium tool now has consistent HelpTip coverage.

  • Fix
    RegimeBanner GEX cell

    Was permanently stuck at '—' because it expected regime='compression' but backend returns 'positive'. Now correctly maps positive→Compression and negative→Expansion.

  • Fix
    /paper API shape

    Leaderboard endpoint returns {leaderboard: [...]} not a raw array. Trades endpoint uses ?open_only=true not ?status=open. Both fixed with Array.isArray defensive checks.

  • Fix
    /debate auth + env var

    Was reading useAuth.getState().token (no such field) and using wrong env var name. Now uses canonical getToken() + NEXT_PUBLIC_API_BASE.

  • Fix
    Command Palette GitCompare import

    Sector Rotation icon was used but not imported. Quick miss caught in audit.

v1.7.1

Zombie features brought to life
  • New
    /paper — Paper Trading page

    The Paper Trading backend (PaperAccount + PaperTrade) shipped in v1.5 but the UI was never built. Now live: $100k virtual account, mark-to-market with real Direct Feed prices + Black-Scholes for options, one-click Close, anonymized leaderboard, recent closed trades log.

  • New
    /macro — Macro Calendar

    FOMC, CPI, NFP, OPEX events grouped by 'imminent / 8-30d / 31-60d'. Impact tiers (EXTREME/HIGH/MEDIUM/LOW), affected tickers, 'How macro events shape options pricing' explainer.

  • New
    /debate — AI Bull vs Bear

    Two AI strategists argue the same setup in parallel. Real-time SSE streaming with blinking cursor. Elite-gated. Both end with target + stop.

  • New
    /scenarios — Portfolio Stress Test

    7×5 P/L grid across spot shocks (±10%) and IV shocks (±30%). Color-coded heatmap, worst/best case cells called out, asymmetry ratio for tail risk.

  • New
    Regime Banner on /dashboard

    Three-cell strip at the top showing SPY dealer gamma regime, vol regime, and active sector rotation phase. Instant tape-state at a glance.

  • Improved
    Default ticker preference wired everywhere

    Set your default ticker in /preferences and it pre-fills on GEX, IV Surface, and AI Strategist pages.

v1.7.0

AI signal expansion + Sector Rotation page
  • New
    Sector Rotation page

    New /sectors page shows 11 SPDR sector ETFs with 1d/5d/20d returns, relative strength vs SPY, and an active rotation phase classification (risk-on / defensive / cyclical-narrow / rate-sensitive-led).

  • New
    AI now sees the macro tape

    13 context channels feeding every AI generation: technicals, GEX, IV regime, flow, event proximity, vol regime, sector context, multi-timeframe, relative strength, flow posture, news + sentiment, short interest + squeeze risk, sector rotation phase.

  • New
    Risk profile preference

    Conservative / Balanced / Aggressive risk profile in /preferences directly biases the AI's structure pick and confidence scoring.

  • New
    Patch notes + Feedback pages

    Public /changelog and /feedback. Bug reports + feature requests email the operator inbox. Footer + sidebar + ⌘K integration.

  • Improved
    Vol Surface — live readout

    Skew, term structure, and IV regime classifiers computed from the 3D grid + plain-English explainer cards + 5-stop colorscale + lighting + cell-level hover tooltips.

  • Improved
    Tooltips across every premium tool

    60+ central definitions wired into GEX, IV Surface, Flow, Plays, Portfolio, Ideas, Conviction. Hover any term for an operator-grade explainer.

  • Improved
    Notification controls

    /preferences now has email/push toggles, minimum AI confidence slider, daily/weekly email digest, and quiet-hours window.

v1.6.0

Strategy reframer + Greek-optimal legs everywhere
  • New
    Strategy reframer

    Conviction feed now renders every directional setup in your preferred strategy. If you only allow long calls/puts and the AI picked a credit spread, OptionsDeck reframes the same thesis as a long call so you don't lose 90% of the alpha to a prefs mismatch.

  • New
    Conviction status pills

    Active / Target Hit / Invalidated / Stale / Expired computed live from spot vs target+stop and age. Filter by status, direction, ticker, and min confidence.

  • New
    Greek-optimal order tickets on cards

    Every /conviction, /ideas, and /plays card now shows the picked strike + expiration + delta + IV + net debit/credit for one-click execution.

  • New
    Add to portfolio (one click)

    Tracked plays promote to portfolio positions at the picker's mid-price. Multi-leg plays expand into individual positions.

  • Speed
    Stocks Advanced + WebSocket fill

    Direct Feed Stocks WS streams 229 tickers live. Bulk snapshot fills all quotes in <200ms vs minutes of REST polling. Charts load instant.

  • Fix
    Timestamps now respect your timezone

    Backend was emitting naive UTC ISO strings; JS treated them as local time. Now ISO emits with Z suffix so /plays times read correctly.

  • Fix
    Track button preserves the strategy you saw

    Clicking Track on a reframed conviction idea now saves the reframed strategy + legs instead of the original. Audit trail in notes.

v1.5.0

Trust pages + tier-gated previews
  • New
    FAQ, About, Security, System Status, Terms, Privacy, Disclaimer

    Seven new public pages addressing every common pre-purchase question. Indexed in sitemap.

  • New
    Tier-gated previews on Elite-only pages

    Trial and Pro members see the structure of /conviction and /social — synthetic data with a CSS-blurred overlay (not devtools-removable). Builds upgrade intent without leaking real alpha.

  • Improved
    Click-through legal agreement on signup

    Required for ToS enforceability.

  • Improved
    /social renamed to The Floor

    Premium trader vibe over corporate-feeling 'Operator Social'.

v1.4.0

Core cost cuts + AI tier-1 signals
  • Improved
    Prompt caching + lower max_tokens + Core Pulse for Auto-AI

    Estimated 50% reduction in Core inference spend at 10 Elite + 50 Pro + 100 trial mix.

  • New
    AI Strategist tier-1 context

    Event proximity, vol regime, sector context, and multi-timeframe reads now feed the AI prompt for higher-conviction setups.

  • New
    Ticker combobox everywhere

    Type-or-dropdown ticker input on GEX, chat, AI generator, and all selectors.

  • New
    Flow scanner EXTREME/HOT highlighting

    Unusual flow auto-tiered by score, premium, sweep+block, vol/OI. Gold-pulsing border for EXTREME tier.

  • New
    AI chat thinking bubble + rotating status

    'reading tape… checking GEX… scoring IV regime…' shows real-time AI work so it doesn't feel frozen.

  • Fix
    React #31 on trial Generate

    Backend pool-empty 503 returned a structured object; toast was passing the object directly to React. Defensive String() coercion.

  • Fix
    React #301 on My Profile

    Replaced render-body setState antipattern with useEffect+initialized flag.

v1.3.0

Performance + chart polish
  • Speed
    In-flight request coalescer

    Concurrent get_underlying / compute_gex calls now share a single round-trip per ticker. Burst traffic from /dashboard no longer hammers the Direct Feed.

  • Speed
    Chart caching + Next.js production mode

    Heatmap, GEX, and IV charts now load from cache on revisit.

  • Improved
    Premium chart system

    Shared theme, tooltip, axis style. OptionsDeck watermark on every chart.

  • New
    Paper trading engine

    Risk-free virtual account with leaderboard.

  • New
    AI debate mode

    Bull + bear devil's advocate analysis on any setup.

  • New
    Portfolio scenario analyzer

    Stress-test your book under user-defined shocks.

v1.2.0

High-conviction scanner launch
  • New
    Autonomous Elite scanner

    Sweeps 60+ tickers every 20 minutes during market hours, surfaces only setups with ≥75% confidence. Very-High tier (≥85%) pushes notifications + Discord/Slack webhooks.

  • New
    Greek-optimal contract picker

    AI ideas now snap to the listed contract that maximizes delta-fit + liquidity + tight spread.

  • New
    Live position P/L on tracked plays

    Mark-to-market via Direct Feed snapshot updates every 30s.

  • New
    Social wall + leaderboard (Elite)

    Opt-in shared AI ideas with anonymized handles. Ranked by resolved win rate.

  • New
    Macro / economic calendar

    Fed, CPI, NFP, earnings — events that move IV are now front-and-center.

v1.1.0

OptionsDeck v1.1
  • New
    OptionsDeck Direct Feed + OptionsDeck Core AI

    Upstream data + inference vendors white-labeled in the UI.

  • New
    Stripe billing

    Pro + Elite tiers, 7-day trial, account/billing page, password reset, Resend emails, Sentry error tracking.

  • New
    GEX heatmap reading methodology

    OptionsDeck's interpretation framework wired into the AI Strategist.

  • Improved
    Webhook delivery — Discord + Slack

    Elite tier alert fanout.

  • Improved
    Cmd+K strategy templates

    Quick-launch common option structures.

v1.0.0

OptionsDeck Terminal — public launch
  • New
    Initial release

    Options flow scanner, dealer gamma exposure, IV surface, AI strategist, tracked plays, alerts, portfolio Greeks. Premium institutional-grade tooling for serious operators.

Found a bug or have an idea?

Operator feedback drives every release.