a0286d5cf9
- WaveformWorker extracts low-res audio envelope via ffmpeg, drawn as green polygon on timeline track - _safe_disconnect() replaces bare TypeError catches for signal cleanup - Train button toggles to Cancel during training, calls worker.cancel() - Dynamic GPU batch sizing: 64 for ≥16GB VRAM, 32 for ≥8GB, 16 default - Overlap warning before exporting clips that intersect existing markers Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>