Skip to content

2026.6.2 — HA softphone and audio runtime stabilization

Latest

Choose a tag to compare

@n-IA-hane n-IA-hane released this 07 Jun 15:37
· 2 commits to main since this release

2026.6.2 — HA softphone, runtime audio stability and full UI state cleanup

🏠 Intercom Native / Home Assistant

  • 🧩 Home Assistant can now be represented as its own PBX-lite softphone endpoint.
  • 📞 Home Assistant can receive valid PBX-lite calls addressed to HA itself, not only bridge calls toward ESP devices.
  • 🚫 Added independent HA softphone Do Not Disturb state.
  • ✅ Added independent HA softphone Auto Answer state.
  • 🔁 Improved HA softphone session tracking for inbound, outbound and terminal call events.
  • 🧭 Preserved intercom runtime state across HA reconnects more reliably.
  • 🌐 Improved endpoint republish/reconnect behavior so ESP endpoints and HA routing state recover more cleanly after API/Wi-Fi churn.
  • 🧪 Expanded tools/intercom_softphone_probe.py for diagnostic calls, synthetic caller testing, tone/WAV injection and received-audio WAV capture.
  • 📡 External PBX-lite callers can call HA directly when they send valid protocol messages.

🎛️ Lovelace Card

  • 🏠 Added the new Home Assistant softphone card mode requested in #46.
  • 🔀 The existing Hybrid card mode remains the default and keeps the previous behavior: the card is attached to one ESP endpoint and mirrors/controls that ESP.
  • 📞 In Hybrid mode, if the selected destination is Home Assistant, the browser/card acts as the Home Assistant audio leg and starts a call toward the attached ESP. The ESP will ring, or answer automatically if its Auto Answer is enabled.
  • 🏠 In Home Assistant softphone mode, the card represents Home Assistant as an independent intercom endpoint instead of mirroring an ESP.
  • 📲 The HA softphone card can call discovered ESP endpoints from its selector.
  • 🔔 The HA softphone card rings only for calls addressed to Home Assistant itself, useful for clean dashboards where HA behaves like one standalone desk phone.
  • 🚫 HA softphone mode has its own Do Not Disturb control.
  • ✅ HA softphone mode has its own Auto Answer control.
  • 🎯 HA softphone mode does not use device_id; Hybrid mode still requires an ESP device_id.
  • 🎨 Card controls, selectors and buttons were polished to match the Home Assistant card surface better.

Home Assistant softphone card

🔊 ESP Audio Runtime

  • 🧱 AFE output now uses frame-atomic buffering, so consumers receive complete processed frames or silence, not short partial reads.
  • 🧠 AFE reconfigure/fetch paths were hardened for cleaner runtime mode switching and shutdown/restart behavior.
  • 🧩 Dual-mic AFE was realigned with the Espressif GMF element output path.
  • 🧼 Ring buffer helpers now expose explicit type/placement logging and NOSPLIT frame-safe behavior where needed.
  • 🔊 Added the project-local speaker media-player fork with pause_releases_pipeline.
  • ⏸️ Paused media now releases the playback pipeline before TTS, timer alarms or intercom audio need the same speaker graph.
  • 📦 esp_audio_stack gained cleaner generated-code gating for TDM paths and codec backend setup.
  • 📡 Intercom TX/audio paths were tightened for cleaner buffering and transport lifecycle behavior.

⏲️ Timers and Full UI State

  • ⏲️ Added optional Voice Assistant timer package.
  • 🖥️ Timer-finished UI now owns the display while the alarm sound plays.
  • 🧭 Full display YAMLs now use a centralized reducer-style UI priority model instead of duplicating screen priority logic per callback.
  • 🧼 Media playback, timer alarms, Voice Assistant states and intercom pages no longer overwrite each other opportunistically.
  • 💡 LED/UI state handling is cleaner across full-experience YAMLs.

🧠 P4 Touch Stabilization

  • 🚀 P4 full AFE profiles now use a cleaner SDK baseline.
  • ✅ PSRAM XIP remains enabled on P4.
  • 🧹 Removed aggressive Wi-Fi/LWIP IRAM overrides from the P4 baseline.
  • 🎧 Kept hot AFE/intercom bridge buffers internal where contiguous heap allows it.
  • 📈 Improved largest-free-block headroom observed on P4 during media, TTS, intercom and repeated runtime use.
  • 🖥️ Reduced P4 display flicker/audio glitches seen with the previous tuning set.
  • 🧪 P4 landscape/portrait TCP/UDP full AFE YAMLs were kept aligned with the new state model.

📦 YAML Presets

  • 🧩 Full-experience YAMLs that use media playback now include the local speaker component where needed.
  • 🎚️ Full AFE profiles boot with aligned runtime defaults for AEC/VAD/FD mode.
  • 📡 TCP/UDP variants were kept paired across maintained presets where supported.
  • 🧪 Generic S3 full AEC UDP was added/aligned for the dual-bus/full-experience test matrix.
  • ⚠️ Generic S3 full AFE presets are documented as untested and live under yamls/untested/.

📚 Documentation

  • 📖 README updated for HA softphone mode, card behavior, timer UI ownership, speaker fork and P4 runtime tuning.
  • 📘 Added documentation for the project-local speaker component.
  • 🧭 Updated architecture/reference docs around the current audio stack and UI state model.
  • 🧰 Updated troubleshooting docs for current HA/card/intercom routing behavior.
  • 🖼️ Prepared wiki content with visual pages for getting started, YAML selection, HA integration, Lovelace card, phonebook/routing, audio stack, devices, P4 notes and troubleshooting.

⚠️ Breaking / Upgrade Notes from 2026.6.1

  • HA softphone cards should use mode: ha_softphone and should not set device_id.
  • Hybrid cards still require an ESP device_id and remain the ESP-mirroring mode.
  • Copied Lovelace card YAML should use show_extended_info; the previous extended-info key is not kept as a compatibility alias.
  • Custom full-experience YAMLs using platform: speaker media playback should include the project-local speaker component and set pause_releases_pipeline: true.
  • Custom display YAMLs with timers should treat timer_ringing as the authoritative timer UI owner.
  • Custom YAMLs copied from older full-experience profiles should be refreshed if they duplicate the old per-callback UI priority logic.