BaccaConnect
Release Notes
Engine
v2.3.200 July 26, 2026
- Fixed two crashes when connecting through a TURN relay, and a stall where audio stopped arriving for several minutes mid-session
- Fixed silent sessions on multi-channel interfaces: audio is now read correctly from devices that group channels into a single buffer
- Sessions that cannot establish a relay path now fail quickly with a clear reason, instead of appearing connected while passing no audio
v2.3.100 July 24, 2026
- Incremental engine improvements. Detailed notes were not recorded at release time.
v2.3.0 April 14, 2026
- Lower, steadier latency: the audio path no longer takes locks, removing a source of intermittent dropouts
- More accurate clock-drift correction between the two ends of a session
- iPad sessions now recover cleanly when the device wakes from sleep
- Connection quality profiles now account for which peer you are connecting to, not just the connection type
v2.2.0 April 13, 2026
- Tuning Lab: admin tools for live audio engine parameter tuning during sessions
- Adaptive connection profiles: automatic buffer sizing optimized per connection type (LAN, direct, relay)
- Network simulation: inject artificial impairments for stress testing and quality optimization
- Internal codebase restructure for clarity and maintainability
v2.0.5 April 9, 2026
- Decoupled network channel count from hardware — iPhone stereo mic and iPad mono mic can now connect without packet size mismatches
- Decoupled network buffer size from hardware — macOS (RME at 512) and iPad (256) can connect; CoreAudio while-loop chunks hardware buffers into network-sized packets
- BaccaPatch is now transport-only: network channel count and buffer size are session parameters (set by the studio), never overridden by hardware
- Audio interfaces adapt locally: zero-pad input channels beyond hardware, discard output channels beyond hardware, chunk hardware buffers larger than network packet size
- iOS render callback: while-loop safety net handles cases where iOS delivers more frames than the session buffer size
- iOS RemoteIO configured with hardware channel counts; render callback maps hardware → network channels per chunk
- Fixed testTone WebSocket handler on both macOS and iOS agents — previously Mac→iPad test tone never enabled due to params unwrapping bug
- iOS agent: getPublicIP now uses ipify.org for IPv4 (matches macOS). Previously returned local LAN IP
- iOS agent: sessionStart returns actual AVAudioSession buffer size after configuration, not the requested value
- macOS agent: no longer bumps session buffer size to match device's current buffer — the studio's choice is passed through unchanged
- First successful end-to-end full duplex audio between iPhone ↔ iPad and macOS ↔ iPad
v1.0.61 April 6, 2026
- iOS WebSocket server via Network.framework — real-time meters and commands over wss://
- iOS Vocal Booth: local monitoring with AUv3 effects via RemoteIO
- Touch-friendly effects chain UI: 44px tap targets, inline parameter sliders
- Plugin unload crash fix: stops monitor engine before removing from audio thread
- Monitoring state preserved across page refresh
- Platform-aware dashboard: iOS shows "Connecting..." instead of macOS download link
v1.0.60 April 6, 2026
- Vocal Booth: local audio monitoring with AUv3 effects — mic to headphones, no session needed
- Seamless transition: vocal effects carry over when starting a session
- Monitor mix fader: blend studio feed with your own processed vocals (Studio ← → You)
- New BACCACONNECT_LOCAL_ENGINE flag: dev builds load plugin from DerivedData, skip auto-updater
- E2E test now covers vocal booth start/stop/meters alongside session + AUv3 tests
v1.0.59 April 6, 2026
- AUv3 plugin hosting: load, unload, bypass, and control Audio Unit effects in real time
- Plugin discovery: enumerates all installed AUv3 effects via AVAudioUnitComponentManager
- Insert effects on send or receive chain (up to 4 per chain)
- Full parameter control: read/write AU parameters via WebSocket
- Dashboard UI: plugin picker, chain list, bypass/remove controls
- Fixed CoreAudio RunLoop initialization in BaccaPatch (ADR-021) for RME USB devices
- Removed baccapatch submodule — engine is fully in-process from BaccaAudio
- License cleanup: removed all LGPL (Faust DSP) and LibreSSL references — MIT + BSD-3 only
- Plugin bundle 30% smaller (standalone binary no longer bundled)
v1.0.57 April 4, 2026
- NAT traversal: automatic STUN discovery and connectivity probing for reliable peer-to-peer connections
- Candidate exchange via signaling: both peers discover and share multiple connection paths
- Connectivity probing: tests multiple peer addresses before audio starts, first verified path wins
- TURN Worker: added JWT validation and CORS headers
v1.0.56 April 3, 2026
- Renamed JackTrip to BaccaPatch throughout the codebase — clean MIT-only fork
- Removed all LGPL Faust DSP code (compressor, limiter, reverb, meter, monitor, volume, tone)
- Rewrote StereoToMono without Faust dependency — pure C++
- Added Licenses menu item showing all open source acknowledgements
- Deleted all unused upstream code (GUI, VST3, AU, Virtual Studio, JACK, RtAudio)
- License status: 100% MIT + BSD + ISC — zero LGPL
v1.0.55 April 3, 2026
- Fixed CoreAudio initialization that caused RME Digiface AVB firmware crashes when launching audio sessions
- Added kAudioHardwarePropertyRunLoop initialization (required since macOS 10.6, missing after RtAudio removal)
- First successful end-to-end bidirectional audio session between two machines
v1.0.25 April 2, 2026
- Replaced macOS Security framework TLS with LibreSSL libtls — eliminates all keychain prompts permanently
- TLS certificate chain now includes the Let's Encrypt intermediate, fixing Safari certificate validation
- No more dependency on macOS Keychain for TLS — cert and key loaded directly from memory
v1.0.8 April 2, 2026
- Persistent logging to ~/Library/Logs/BaccaConnect/engine.log with 5MB rotation
- Shell logging for engine install, update, and launch events
v1.0.6 April 1, 2026
- Added log viewer to the dashboard — click "Show Logs" in the Audio panel
- JackTrip output and session events now stream to the dashboard in real-time
v1.0.5 April 1, 2026
- Engine update check now goes through the agent, fixing a browser security (CORS) issue that prevented the upgrade banner from appearing
v1.0.4 April 1, 2026
- Added engine update check endpoint for the dashboard
- Fixed keychain password prompt on agent restart by using a per-session temporary keychain
v1.0.3 April 1, 2026
- TLS proxy now uses a private temporary keychain — no more login keychain password dialog
- Developer ID signed and Apple notarized
v1.0.0 April 1, 2026
- Initial engine release — HTTP server, TLS proxy, audio device management, JackTrip session control
- Independent versioning from the agent shell
Agent
v2.0.26 April 10, 2026
- Re-signed under Bacca Sound's new Developer ID (Shannon Loucks) — all future releases from this team
- No functional changes to the agent shell — the heavy lifting happens in the engine plugin (see v2.0.5)
v2.0.23 April 2, 2026
- New app icon — AI-generated headphones with waveform design
- Custom menu bar icon replacing the generic system symbol
- LibreSSL TLS support (matches engine v1.0.25)
v2.0.13 April 1, 2026
- Engine is no longer embedded — downloaded from the server on first launch, keeping the agent small
- Engine version shown in the dashboard instead of the agent shell version
- Renamed "plugin" to "engine" in menus and status displays
v2.0.12 April 1, 2026
- Developer ID signed and Apple notarized — no more Gatekeeper warnings or "damaged app" dialogs
- Version number now stamped automatically during builds
Web App
v1.1.0 April 9, 2026
- Studio session parameter controls: Session Channels (1 Mono through 12 7.1.4 Atmos) and Buffer Size (64 through 1024 frames)
- Studio decides all session parameters — no client-side negotiation. Values persist to localStorage and flow through signaling to the artist
- Dynamic cache busting via Cloudflare KV: update one value with ./scripts/bust-cache.sh and all cached JS/CSS invalidates without redeploying
- Pages middleware (_worker.js) replaces 202604155191 placeholders in HTML with the current KV value, sets Cache-Control: no-cache for HTML responses
v1.0.0 April 1, 2026
- Agent detection with 3-second polling — detects install within seconds
- Agent heartbeat every 5 seconds — dashboard detects disconnect automatically
- Engine update banner with one-click "Upgrade Now" button
- Log viewer in the Audio panel — real-time JackTrip and engine output
- Optional artist selection when creating sessions
- Artists now receive signaling invites when studio goes live
- Role-based dashboards with session booking, network management, and admin tools