All notable changes to BinaryOptionsTools v2 will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.10 - 2026-03-22
- Rule macro system with DSL support for ergonomic rule definitions (
#[rule({ starts_with("42") & !contains("error") })]) - Per-language documentation macro for BinaryOptionsToolsUni crate
- Demo test example for verifying library functionality (connection, subscriptions, candle fetching)
- Trade state regression test
- Documentation JSON files for API modules (error, pocket_option, raw_handler, stream, types, validator)
- Max subscriptions configuration in State builder (default: 4)
- Memory pruning for closed deals (limit to 1000) to prevent memory growth
- Major core crate refactoring: Removed
core-precrate and consolidated intocorecrate - Improved SSID parsing with double-encoding detection and regex recovery for malformed JSON
- Enhanced deals module with better Socket.IO frame handling and message pattern matching
- Refactored historical data module for improved reliability
- Updated README with new Python bot framework examples and corrected version support
- Updated Python version support (dropped 3.8, 3.13, 3.14, 3.15)
- Dependency updates across multiple directories
- Fixed check win functionality
- Fixed documentation errors in Rust source
- Fixed source distribution (sdist) build
0.2.9 - 2026-03-09
- N/a
- Updated python support
- Improved SSID parsing to prevent double encoded JSON msgs
- Minor docs updates
- Fixed auth failure with valid SSID:
Ssid::Displaynow returns the raw auth message (42["auth",{...}]) instead of a human-readable label, so the correct credential string is sent to the server during WebSocket handshake. - Balance returning -1 (possibly)
- Unsafe unwraps
0.2.8 - 2026-02-22
- Pre-registration API on
ResponseRouterto eliminate race conditions in command responses - SSID Fetcher UserScript for easier SSID extraction from browser
- Framework improvements:
on_balance_updatenow works correctly - Support for storing indicators in the Python framework
- PyStrategy integration improvements
- Virtual Market Profit Semantics:
Deal.profitnow stores net gain/loss (e.g., -stake on loss, 0 on draw, stake payout % on win) instead of total payout. - WebSocket Event System: Unified on
EventHandlertrait and tuple/unit variants forWebSocketEvent. Custom handlers must update their signatures and can now provide an optionalname(). - Enhanced Client Architecture: Updated
EnhancedWebSocketInnerto require and storecredentials,handler, andconnector. - Context Manager Lifecycle: Exiting the
PocketOptioncontext manager now explicitly closes the internal event loop, preventing resource leaks but also preventing instance reuse.
- Updated
BinaryOptionsToolsV2.pyito match the actual Rust return types (JSON strings/Lists instead of Dicts). - Updated documentation and README
- Code quality improvements and clippy fixes
- CI workflow updated for stable PyO3
- Thread-safe
buy()calls in synchronous client viathreading.RLock() - Removed unused
resend_connection_messagesmethod
- Event loop leak in Python synchronous client by fixing
__exit__andclose()logic. - Boxing issues in
BinaryOptionsToolsError::WebsocketConnectionErrorvariant. - API mismatches in
client2.rspreventing successful compilation. - Fixed
on_balance_updateevent handling. - Fixed concurrent test failures.
- Fixed failing pytest tests.
- Fixed pending trades test.
- Fixed PyO3 compatibility issues with
chrono::Duration.
0.2.6 - 2026-02-13
- Robust SSID parsing supporting complex PHP serialized session objects and sanitized Socket.IO frames
- Automated asset and payout gathering (
AssetsModule) upon connection - New
wait_for_assetsmethod to ensure library readiness before operations - Refactored GitHub Issue and Pull Request templates
- Pre-registration API on
ResponseRouterto eliminate race conditions in command responses - Real event handler removal by name in
WebSocketClient2 - Preserve original event variants when broadcasting events in
WebSocketClient2
- Virtual Market Profit Semantics:
Deal.profitnow stores net gain/loss (e.g., -stake on loss, 0 on draw, stake payout % on win) instead of total payout. - WebSocket Event System: Unified on
EventHandlertrait and tuple/unit variants forWebSocketEvent. Custom handlers must update their signatures and can now provide an optionalname(). - Enhanced Client Architecture: Updated
EnhancedWebSocketInnerto require and storecredentials,handler, andconnector. - Context Manager Lifecycle: Exiting the
PocketOptioncontext manager now explicitly closes the internal event loop, preventing resource leaks but also preventing instance reuse.
- Increased historical data and pending order timeouts to 30s for enhanced reliability during network congestion
- Improved WebSocket routing rules (
TwoStepRule,MultiPatternRule) to be resilient against interleaved messages - Updated documentation deployment workflow to include
mkdocstringsdependencies (gh pages) - Reorganized internal project scripts
- Updated
BinaryOptionsToolsV2.pyito match the actual Rust return types (JSON strings/Lists instead of Dicts). - Improved message sending priority by using biased polling in
EnhancedWebSocketClient. - Enhanced event dispatching with concurrency limiting (semaphore) in
WebSocketClient2.
- GitHub Pages 404 error by normalizing documentation filenames to lowercase (
index.md). - Race conditions in history retrieval by properly pairing response messages with request indices.
- Event loop leak in Python synchronous client by fixing
__exit__andclose()logic. - Boxing issues in
BinaryOptionsToolsError::WebsocketConnectionErrorvariant. - API mismatches in
client2.rspreventing successful compilation. - Silent
Decimaltof64conversion error insubscriptions.rswith proper error propagation. - Misleading connection error reporting; now returns the actual last failure from multiple URL attempts.
0.2.5 - 2026-02-08
- Files to sort into respective folders - /SortLaterOr_rm/
- Organized - Merged
/examples/to/docs/examples/ - Added more rules within
.gitignore
- Prettier format
- SSID parsing errors within demo vs real differences
0.2.4 - 2026-02-03
- Advanced candle data retrieval with
get_candlesandget_candles_advanced - Advanced validators for message filtering
- Improved WebSocket message handling
- Enhanced documentation in the
docs/directory
- Improved error handling for connection management
- Updated Python bindings for better async support
- Enhanced type safety across Rust and Python interfaces
- Connection stability improvements
- Memory leak fixes in WebSocket handlers
- Error handling in subscription management
0.2.3 - 2023-12-XX
- Raw Handler API for advanced WebSocket control
- Validator system for response filtering
- Enhanced subscription management
- Time-aligned subscription support
- Improved reconnection logic with exponential backoff
- Better error messages and logging
- Updated dependencies for security patches
- Race conditions in message routing
- Subscription cleanup on disconnect
- Memory management in async operations
0.2.0 - 2023-11-XX
- Complete rewrite in Rust for performance and reliability
- Python bindings via PyO3
- Async and sync Python APIs
- Real-time market data streaming
- WebSocket connection management
- Automatic reconnection with exponential backoff
- Type-safe interfaces across languages
- Architecture redesigned with Rust core
- Improved performance (10x faster than v1)
- Better memory management
- Enhanced error handling
- Python-only implementation (replaced with Rust core)
- Legacy API endpoints (deprecated in v1)
- Python-based implementation
- Basic PocketOption API support
- Trading operations (buy/sell)
- Balance retrieval
- Basic WebSocket connection
- Major version (X.0.0): Breaking changes, major architecture changes
- Minor version (0.X.0): New features, non-breaking changes
- Patch version (0.0.X): Bug fixes, security patches
- Added: New features
- Changed: Changes in existing functionality
- Deprecated: Soon-to-be removed features
- Removed: Removed features
- Fixed: Bug fixes
- Security: Security vulnerability fixes