You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
🔊 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.