This release includes significant performance optimizations across the board, a major overhaul of the replay system to reduce storage and improve navigation, and full GTID support for MariaDB replicas with errant transaction detection. You should notice that Dolphie overall feels smoother and faster.
Performance & Optimization
- Refactored all panel files to use a unified DataTable update pattern: build row values once, then update changed cells or insert new rows, eliminating duplicated update-vs-insert logic
- Panel mutations are now wrapped in
batch_update()with sorting only triggered when data actually changes - Smart stale row removal: bulk
clear()when removals exceed remaining rows - Extracted
BaseProcesslistThreadto eliminate duplicated formatting methods between MySQL and ProxySQL processlist classes SHOW GLOBAL STATUSis now filtered to only needed variables instead of fetching all- Simplified tab reconnection by reusing existing tab instead of create-copy-remove cycle
- Added division-by-zero guards for
polling_latencycalculations
Replay System
- Added delta format for daemon mode metrics - stores only the latest value per cycle instead of full 10-minute history (~600x reduction per row). Replay plays should be significantly smaller with this change!
- Zstd compressor/decompressor objects are now cached instead of recreated per call
- Gap-safe backward navigation (
seek_to_previous_id) using proper SQL queries instead of ID arithmetic - Large time gaps (e.g. daemon restart) are detected and the 10-minute rolling window is rebuilt instead of appending stale data
MariaDB GTID Support
- Retrieved GTID and Executed GTID rows are displayed with color-highlighted primary server IDs, matching the MySQL GTID display format
- Errant transaction detection for MariaDB replicas by comparing
gtid_current_posbetween replica and primary (analogous toMySQL's GTID_SUBTRACT())
MySQL Replication
- Fixed errant transaction false positives in multi-source MySQL replication by excluding all replication source UUIDs (not just the primary's)