Skip to content

calesthio/OptionsCanvas

v0.1.4 Feature

This release adds 2 notable features for engineering teams evaluating rollout.

Published 8d Self-Hosted
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

0dte algorithmic-trading alpaca charting day-trading fintech
+9 more
flask lightweight-charts local-first options options-trading python self-hosted trading-platform vanilla-js

Summary

AI summary

Fixes positions opened via the platform being incorrectly tagged as 'External broker position' and adds auto-import for untracked option positions.

Changes in this release

Feature Low

Auto-imports untracked option positions from the broker as tracked positions with management UI.

Auto-imports untracked option positions from the broker as tracked positions with management UI.

Source: llm_adapter@2026-05-29

Confidence: high

Bugfix Medium

Positions opened via the platform no longer get incorrectly tagged as 'External broker position'.

Positions opened via the platform no longer get incorrectly tagged as 'External broker position'.

Source: llm_adapter@2026-05-29

Confidence: low

Bugfix Low

0 DTE positions now display correctly as '0' instead of 'N/A'.

0 DTE positions now display correctly as '0' instead of 'N/A'.

Source: llm_adapter@2026-05-29

Confidence: high

Full changelog

Recommended upgrade for everyone. Fixes a real bug where positions opened through the platform sometimes ended up tagged as 'External broker position' and could not be managed (no SL/TP, no close button).

What's fixed

Positions opened via the platform no longer get tagged 'External'

_fetch_broker_positions (the 5-second TTL cache for broker positions added in v0.1.3) returned fresh=True on cache hits — not just on actual broker calls. The destructive position-cleanup loop in get_position_details used that flag to decide whether it was safe to delete tracked positions that weren't in the broker's positions list.

Race:

  • T=0: Order placed; broker hasn't filled yet
  • T=1: Broker fills, process_pending_orders writes the position to our DB
  • T=2: /api/position polls — but the cached broker snapshot is from T=0 and doesn't include the new position. Cleanup logic sees the position in our DB, not in the cached snapshot, and deletes it
  • T=6: Cache expires, broker is re-polled, now includes the position — but it's no longer in our DB, so it renders as 'External broker position'

Fix: cache hits no longer claim to be fresh. Only actual broker fetches set just_fetched=True, and only those trigger destructive cleanup.

Auto-import untracked broker option positions

Even with the cache fix, any future bug that broke position-creation would leave the user with unmanageable positions. v0.1.4 self-heals: when the trading engine sees an option position at the broker that isn't in our DB, it auto-imports it as a tracked position. SL/TP start empty — drag them on the chart to attach. The position immediately gets the × close button + standard management UI.

Stock positions in the broker account are still ignored (the platform manages options, not stocks).

0 DTE positions display correctly

PositionTracker rendered the DTE field as position.dte || 'N/A'. JavaScript's || falls back when the left operand is falsy, and 0 is falsy — so 0 DTE positions (a primary use case the README pitches) displayed as 'N/A'. Swapped to ?? (nullish coalescing) so only null / undefined falls back. Real 0 now renders as 0.

How to upgrade

git pull
# restart the launcher, refresh the browser tab

Verified

  • Auto-import test: untracked broker option appears as tracked, no 'External' tag, close button visible
  • Cache semantics: 4/4 unit cases pass — first call just_fetched=True, cache hit just_fetched=False (the fix), TTL expiry re-fetches, broker failure serves stale with just_fetched=False
  • 0 DTE position renders DTE: 0 (not N/A)
  • v0.1.1 + v0.1.2 + v0.1.3 guarantees all preserved

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

Track calesthio/OptionsCanvas

Get notified when new releases ship.

Sign up free

About calesthio/OptionsCanvas

All releases →

Related context

Related tools

Earlier breaking changes

  • v0.1.1 External scripts must read and include the CSRF token in X-CSRF-Token header for POST/PUT/PATCH/DELETE calls.

Beta — feedback welcome: [email protected]