This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+9 more
Affected surfaces
Summary
AI summaryBroker-driven strike snapping provides actual strike lists from the broker for precise order placement.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Added `/api/symbol/strikes/<symbol>` endpoint returning broker's actual strike list. Added `/api/symbol/strikes/<symbol>` endpoint returning broker's actual strike list. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Medium |
Queued‑order card now displays strike, limit price, live bid/ask, and fill distance hint. Queued‑order card now displays strike, limit price, live bid/ask, and fill distance hint. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Medium |
Added drag‑to‑add stop‑loss and take‑profit chips on existing position pills. Added drag‑to‑add stop‑loss and take‑profit chips on existing position pills. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Bugfix | Medium |
Fixed ATM-window increment math causing invalid strike errors. Fixed ATM-window increment math causing invalid strike errors. Source: llm_adapter@2026-05-29 Confidence: low |
— |
| Bugfix | Medium |
Corrected `broker_module.get_option_contracts()` to use plural `underlying_symbols` field. Corrected `broker_module.get_option_contracts()` to use plural `underlying_symbols` field. Source: llm_adapter@2026-05-29 Confidence: low |
— |
| Refactor | Low |
Upgrade instructions: pull `main`, restart platform, hard‑refresh browser. Upgrade instructions: pull `main`, restart platform, hard‑refresh browser. Source: llm_adapter@2026-05-29 Confidence: high |
— |
Full changelog
Broker-driven strike snapping
v0.1.8 fixed the ATM-window increment math, but a deeper bug surfaced on MSTR: orders for valid strikes like $160 still failed with "Strike not available."
Root cause: broker_module.get_option_contracts() was passing underlying_symbol (singular) to alpaca-py. The real API field is underlying_symbols (plural list) — pydantic silently dropped the bad field, so every contracts query ran across all underlyings and relied on a post-filter. Narrow strike filters happened to work; wider ones returned junk.
Fixed to use underlying_symbols=[symbol] + limit=10000 — real server-side filtering.
No more guessing increments. New endpoint GET /api/symbol/strikes/<symbol>?dte=X&type=Y returns the broker's actual sorted strike list. The trading panel snaps to the nearest entry in that list (refreshed on symbol switch, DTE change, and CALL↔PUT toggle) instead of synthesizing strikes from an increment. Works correctly even when the strike grid varies per expiration.
Queued-order fill visibility
The queued-order card used to show "Limit @ Midpoint" with no numbers — you had no idea what your actual limit was or how close the market was to filling you.
Now each pending_fill row shows:
- Strike
- Limit Price (what we sent to the broker — the midpoint at submit time)
- Bid / Ask (live quote, polled every 3s)
- Mark with a distance hint: "$0.05 below ask" or "at or above ask — should fill"
Server-side enrichment so the UI does one round trip, not N.
Drag-to-add SL/TP on existing positions
If you opened a position without setting a stop or target, you'd have no way to add them from the chart later. Now the position pill on the chart shows compact outlined + SL / + TP chips beside CLOSE — only when the corresponding level isn't set.
Click a chip → a dashed pending line spawns at 2% off the current underlying price (always on the validatePrice-acceptable side) and immediately enters drag mode. As soon as your cursor enters the chart area, the line follows it. Click anywhere on the chart to drop it, confirm the price, and it's persisted via the existing POST /api/position/update_sl_tp.
No hunting for a tiny line, no precision grab required — same drag-out interaction you'd expect dragging an icon onto a chart. Once saved, the dashed line goes solid and the chip disappears.
Upgrade
Pull main, restart the platform, hard-refresh the browser.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About calesthio/OptionsCanvas
All releases →Beta — feedback welcome: [email protected]