Releases: thorbjxrn/overdubber
Releases · thorbjxrn/overdubber
Release list
v1.10.1 — Polish
Polish
- Prevent screen lock during playback —
isIdleTimerDisablednow stays on while playing, not just recording - Red delete buttons — mixer trash button uses
.tint(.red)for clear destructive intent - Record button haptic fix — trigger on tap count instead of state boolean, fires reliably every press
v1.10.0 — Low-Latency Engine
Low-Latency Engine + Concurrency Hardening
Performance
- 5ms hardware IO buffer (
setPreferredIOBufferDuration) - 256-frame tap buffers for tighter loop boundary detection
- Accelerate DSP:
vDSP_measqv(RMS),vDSP_maxmgv(peaks), vectorizedvDSP_vsmul+vvtanhf(tape warmth) - Pre-allocated double-buffered metering — zero heap allocation on real-time audio thread
- Coalescing dispatch prevents unbounded meter queue growth under load
Concurrency Hardening
OSAllocatedUnfairLockfor all cross-thread shared state (meter levels, tape warmth flag)TaskGroupfor bounded concurrent waveform loadingTask { @MainActor [weak self] }replacingDispatchQueue.main.asyncthroughout- Proper
[weak self]on all AdManager delegate callbacks PurchaseManagertransaction listener handles nil-self gracefully- Synchronous silence prefill to prevent file corruption race
Other
- Bluetooth latency warning resets each session (was permanent dismiss)
- Test target deployment aligned to iOS 17.0
- 100 unit tests passing
v1.9.0
What's Changed
- Analog-style VU meter tweening + playback metering by @thorbjxrn in #18
- Ballistic smoothing + fade-on-stop for live waveform by @thorbjxrn in #19
- HIG 8pt spacing grid polish by @thorbjxrn in #20
Full Changelog: v1.8.0...v1.9.0
v1.7.3
What's New
- Screen stays awake during recording — the display no longer goes black mid-session; auto-lock resumes when recording stops
- New default theme — blue-toned theme replaces the previous default
- Natural waveform rendering — smoother, more organic waveform display
App Store
- Headline overlays and card framing for screenshots
v1.7.2 — Ad optimization & library fix
What's New
- Medium rectangle ad on export — replaced 50pt banner with 300x250 MREC for higher revenue
- Combined waveform preview — single time-aligned waveform for M4A/WAV export preview
- Premium stems gate — inline upsell when selecting Stems format
Bug Fixes
- Library delete when ads blocked — fixed inability to delete more than one project when VPN blocks AdMob
- Stable ad row IDs — list no longer thrashes on project deletion
- Ad retry cooldown — 60s cooldown prevents shimmer→fail cycling; session-level failure skips network calls entirely
Removed
- Interstitial ads after export (replaced by MREC revenue)
- Tape gap toggle on export (always included when enabled in settings)
Technical
- Removed dead interstitial loading code (wasted memory/bandwidth)
- Time-aligned combined waveform (layers of different lengths now display correctly)
- Session-level native ad failure tracking to minimize unnecessary network requests
v1.7.1 — Record from current playback position
What's New
- Record from current playback position — hit record mid-playback and the new layer starts at the playhead, not from the beginning
- Loop-mode offset fix — backing layers now play from the correct position when overdubbing mid-loop
- Gap countdown stability — fixed timer stuck at 0 and stale deferred-recording state
Bug Fixes
- Fix loop-mode backing layers ignoring playback offset
- Fix
pendingOverdubOnGapEndnot cleared on stop - Fix gap countdown timer stuck at 0 with self-clearing pattern
- Guard against double-start in
startRecording()
Tests
- 19 new GapCountdownTests covering timer/state machine edge cases
- OverdubOffsetTests for silence-padding alignment
- SilencePaddingTests for buffer correctness
v1.5 — Immersive Themes
What's New
- Immersive themes — Porta, Synth, and Sampler themes now go beyond accent colors with full background, surface, and control styling
- Realistic VU meters — Hardware-inspired VU meters for the Portastudio theme with stereo, summed, and waveform modes (tap to cycle)
- Deeper light modes — Porta and Synth light modes have richer, more distinctive palettes
- Themed views everywhere — Settings, Mixer, Library, Export, and Paywall all respect the active theme
- App Store screenshot previews — Debug gallery for capturing pixel-perfect screenshots
Fixes
- Fixed NaN crash from empty audio buffers during route changes
- Fixed Form icon tinting not responding to theme accent color
- Fixed OnboardingView missing environment objects in fullScreenCover
- Unified Porta waveform color with the orange accent family
- Replaced Task churn with DispatchQueue.main.async for audio level updates
- Tracked Xcode shared schemes for reproducible builds