Skip to content

v0.20.0

Choose a tag to compare

@manio manio released this 27 May 06:33

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.toml with 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-preview example 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: @korhojoa
  • iw list called once at startup and cached — eliminates up to ~9 duplicate subprocess spawns during AppConfig::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