v0.20.0
Warning
This release contains known networking issues and should not be used.
Please upgrade to the latest hotfix release.
Changes in this version:
- Dual I/O backend: new standard tokio backend alongside io-uring; io-uring is now an optional feature flag, enabling support for platforms with older kernels
- Bluetooth: round-robin connection across multiple devices — each device gets a chance every round instead of exhausting all attempts on one before moving to the next
thanks: @juggie - Bluetooth: persist known AA devices to disk; wildcard connect (00:00:00:00:00:00) now uses a local cache of previously successful sessions instead of scanning all paired devices
thanks: @juggie - BT SCO/eSCO call-audio bridge (
bt_sco) — route phone call audio through AA media/microphone channels; includes downlink resampling, echo/ducking control, and media/mic bridge sub-features
thanks: @Deadknight - Injected display support: cluster and auxiliary displays can now be declared in
inject-displays.tomlwith per-profile frame rate, touchscreen flag, density, and initial_content_keycode
thanks: @korhojoa, @Deadknight - Media tap endpoint registry with on-demand reverse TCP bridge to companion app (
POST /media-taps/:id/open)
thanks: @Deadknight - Album art injection: replace phone album art with a static file, REST-uploaded PNG, companion app upload, or a live H.264 frame decoded from an injected display
thanks: @Deadknight - Per-vehicle SDR UI override profiles (
sdr-ui-overrides.toml) — patch content insets and margins per head unit identity, with optional per-phone sub-profiles
thanks: @Deadknight - Vendor Extension Channel (VEC) wired into packet processing pipeline; VEC REST calls and WebSocket topic events routed through WASM scripts
thanks: @Deadknight - WASM: scripts now persist state across calls; on-create/on-destroy lifecycle hooks; per-script config sections exposed in web UI; configurable resource limits (memory, instance, table, epoch deadlines); configurable hooks directory
thanks: @Deadknight - Packet debug mode (
pkt_debug) with fine-grained filtering by side, stage, service kind, channel/message ID lists, payload truncation, and pretty-printed protobuf
thanks: @Deadknight - Config: nested sections with subsections, collapsed_by_default, requires dependency gating (truthy / equals / contains / all-of)
thanks: @kronflux - Config dashboard redesign: nested sections, dependency gating (requires), advanced toggle, dropdown selects, chip-based multi-select widget, dark card layout with sliding controller drawer
thanks: @kronflux, @Deadknight dashboard-previewexample binary for local web UI development
thanks: @kronflux- aa_server_tcp_addr config option for direct MD TCP mode, bypassing the BT/Wi-Fi handshake entirely
thanks: @Deadknight - REST endpoint
GET /service-discovery-response— returns the last observed SDR as protobuf JSON
thanks: @Deadknight - REST endpoint
GET /crashes,GET /crashes/:filename,DELETE /crashes— panic handler writes timestamped crash reports to disk
thanks: @Deadknight POST /disconnect— sends a graceful ByeByeRequest to the phone before tearing down the session
thanks: @korhojoaiw listcalled once at startup and cached — eliminates up to ~9 duplicate subprocess spawns duringAppConfig::default()- Configurable wireless subnet (
wlan_subnet) — dnsmasq and network interface configs generated from templates - Cancelled orphaned tcp_bridge tasks on session end to prevent background reconnect loops
Full Changelog: v0.19.0...v0.20.0
Full BR Changelog: aa-proxy/buildroot@5f30fb4...0fc356f