TellUrStori v0.1.9 - Professional Audio Stability & Quality
🎯 Release Highlights
84 commits focusing on memory safety, audio engine stability, and professional DAW workflows.
🎵 New Features
Audio Quality & Monitoring
- Export warning dialog for clipped audio detection (Issue #73)
- Master output clipping detection - prevents silent distortion
- Real-time clip indicator in master meter UI
Mixer & Undo System
- Complete mixer state synchronization with undo/redo (Issue #71)
- UI mixer controls register with undo system
- Audio engine state sync during undo operations
🐛 Critical Bug Fixes
Memory Safety (Swift Concurrency)
- Added
nonisolated deinitto 35+ @Observable/@mainactor classes - Resolved all Swift Concurrency task-local deallocation crashes
- Fixed PluginChain crash during SwiftUI view teardown
- Created automated detection script for missing deinits
Audio Engine Stability
- Fixed AVAudioEngine deadlock on region deletion
- Eliminated nested graph mutation lock inversions
- Fixed project reload graph rebuild hang
- Validated connection points before disconnect operations
Recording & Metronome
- Fixed recording controls with Virtual Keyboard open (Issue #121)
- Fixed metronome count-in not playing on subsequent recordings
- Fixed microphone permission prompt for MIDI recording
- Fixed count-in auto-enable on metronome toggle
MIDI & Playback
- Fixed MIDI stuck notes on transport stop (Issue #74)
- Fixed sustain pedal preventing note retriggering
- Fixed timer retain cycles (Issue #72)
- Added comprehensive stuck notes prevention tests
Piano Roll
- Fixed context awareness - correct TimeSignature API
- Fixed ruler/grid horizontal scroll synchronization
- Fixed grid Canvas positioning and drawing
- Fixed viewport-sized Canvas scroll following
Export & Rendering
- Fixed region fade curves not applied during export (Issue #76)
- Fixed automation curves not interpolating correctly
- Fixed plugin presets loaded before audio processing (Issue #77)
- Upgraded synth smoothing to per-sample interpolation
Virtual Keyboard
- Fixed UI latency compensation (Issue #68)
- Fixed keyboard shortcut responder chain
🧪 Test Suite
- ✅ 1940 tests passing (21 skipped, 0 failures)
- ✅ ASan clean - all memory issues resolved
- Fixed 13 AudioGraphManager tests (coalescing)
- Fixed RecordingBufferPool tests (hybrid allocation)
- Fixed RecordingController tests (async mic permission)
🏗️ Architecture & Performance
- Removed verbose production logging (cleaner logs)
- Disabled info-level error tracking (warnings/errors only)
- Removed legacy SynthVoice.render() API
- Sample-rate conversion behavior documented
📦 Installation
Download Stori-0.1.9.dmg, open it, and drag Stori to Applications.
System Requirements:
- macOS 14+ (Sonoma or later)
- Apple Silicon (M1/M2/M3) or Intel
🎯 Quality Metrics
- Memory Safety: ASan clean, zero crashes
- Audio Quality: Zero sample drops, sub-10ms latency
- Stability: No deadlocks, robust graph operations
- Test Coverage: 1940 tests, 90%+ coverage
This release represents a major stability milestone - ready for beta testing and production use.