## Major Features
### Dynamic Panic Threshold
- Implemented adaptive panic threshold that scales with graph density
- Formula: threshold = song_length × 0.10 × (2.5 / avg_candidates)
- Sparse graphs (avg=1.7): ~15% threshold (81 beats for 554-beat song)
- Dense graphs (avg=2.5): ~10% threshold (47 beats for 468-beat song)
- Result: 75% reduction in panic mode triggers for sparse songs
### Minimum Jump Distance
- Added 8-beat minimum distance requirement between jump source and target
- Prevents jarring micro-jumps that feel musically disjointed
- Ensures jumps move to meaningfully different parts of the song
## Critical Bug Fixes
### rposition() Fix (Shadow Recency Bug)
- Fixed critical bug where position() found oldest beat occurrence instead of most recent
- Changed to rposition() to correctly identify most recent playback
- Prevents recently-played beats from scoring as "old" and bypassing recency filter
### Duplicate Threshold Bug
- Fixed hardcoded 10% threshold that was overwriting dynamic calculation
- Removed line 166 that shadowed the dynamic threshold variable
- Dynamic panic threshold now actually applies as designed
###acceptable_jump_amounts Fix
- Reverted to fixed base amounts [16, 24, 32, 48, 64, 72, 96, 128]
- Removed broken (1..=max_sequence_len) generator that created tiny values (2, 4, 6)
- Prevents min_sequence_len from incorrectly clamping to 1 beat
## Removals
### Segment Diversity Check
- Removed segment-based jump filtering from workflow.rs
- Replaced with more effective beat-level recency tracking in playback_engine.rs
- Simplifies logic and improves micro-loop prevention
### Legacy Jump Logic
- Removed obsolete last_chance_beat safety mechanism
- Removed quartile busting logic
- Removed segment history tracking
- Simplified to recency-based scoring with distance tiebreaker
## Documentation
### Updated DSP.md
- Section 6.3: Documented minimum distance requirement (8 beats)
- Section 7.2: Completely rewritten to describe recency-based system
- Added dynamic panic threshold formula and explanation
- Removed outdated segment history and quartile busting references
## Verification Results
- Sparse song (Stay With Me, avg=1.7 cands/beat): panic mode 4.2% vs 16.7% before
- Dense song (avg=2.5 cands/beat): panic mode 0%
- min_sequence_len: proper musical phrases (13-48 beats, only 1 occurrence of 1)
- Dynamic threshold: 82 beats calculated vs 81 expected (0.05% variance)
## Version Bump
- Updated package.json, Cargo.toml, tauri.conf.json to v1.0.0
---
This release represents a major maturity milestone for the Remixatron playback engine.
The combination of intelligent panic threshold scaling, minimum jump distance, and critical
bug fixes results in significantly improved musical coherence and variety, especially for
songs with sparse jump graphs.