ThetaPrime v0.35.18
Download ThetaPrime-0.35.18-setup.exe
Added
- India VIX ticker in the navbar, mirroring the existing Nifty ticker (
/api/vix, Kite→Breeze→Dhan with NSE fallback, 3s cache, 5s poll).
Fixed
Adversarial bug hunt round — 10 findings (RCE, races, key/secret leaks, auth bypass).
- Path traversal via Windows backslashes (not blocked by Flask's
<name>converter) could reach arbitrary file execution on/run_strategyet al. (runner.py) and arbitrary file read/write on ~10 trade-state routes (app.py); closed. manual_entryno longer trusts an unverified phantom position — now requiresbroker.positions()confirmation before saving, matchingedit_trade_state'sconfirm_activepattern.- Legacy
.pystrategies (lib_v1_trade,Lib_v1_1_lot,niftyStrgl_AI2,nifty_strangle_live) gain the same.entrylockhardening the spec engine already had, closing a double-entry race on a double/run_strategyPOST. manual_entry/manual_exit/edit_trade_state/close_long_legsnow take the same.closelockthe automated close andsquare_offalready honor, closing a race against an in-flight close.- Backup zip no longer bundles the data-at-rest encryption key material in plaintext (redacted, not excluded — credentials-in-backup stays documented/intentional); restore no longer clobbers a live
.secrets.jsonwith the redacted copy. - Dev-loopback auth bypass no longer trusts
remote_addrwhen a forwarding header is present (a reverse proxy/tunnel on the same host used to make every request look like127.0.0.1). - Open-redirect guard now strips tab/CR/LF before checking, matching browser behavior before navigating.
notifier.pyno longer logs the Telegram bot token / webhook secret embedded in arequestsexception's URL.change-password/recovery-code-regeneratenow share/login's brute-force lockout.
[0.35.17] — 2026-08-27
Fixed
/api/desktop_alertsis now exempt from the prod login gate.- Webhook notification config was missing its "Send Test" button; added.
- "Close Long Legs" button label corrected to "@ EOD" (was stale "@ 15:20").