Releases: FX6W9WZK/ha-audac
Release list
v3.18.0
Improvements
- Localized entity names: mixed German/English entity names are now proper translation keys with full English and German translations; friendly names follow your Home Assistant language (entity IDs are unchanged)
- Faster setup: the entity-registry scan now runs once per device instead of once per platform
- Internal cleanup: shared zone-link parsing helpers replace four duplicated implementations, the media player no longer mutates state inside a property, dead imports removed
🤖 Generated with Claude Code
v3.17.0
Fixes
- Options changes apply reliably: migrated to the modern options-reload mechanism (the previous pattern would break on HA 2026.12)
- Duplicate devices abort correctly in the config flow instead of showing "cannot connect"
- TCP socket leaks fixed: connections are now properly closed on command timeouts and failed connects — important for the XMP44, which only allows a single concurrent connection
- Removed a lock race in the command timeout recovery path
- Minimum HA version raised to 2025.8.0 in hacs.json to match the APIs the integration actually uses
🤖 Generated with Claude Code
v3.16.0 - Migration auf entry.runtime_data
v3.16.0
Aenderungen
- entry.runtime_data: Coordinator-Zugriff migriert von
hass.data[DOMAIN]auf das moderneentry.runtime_dataPattern (8 Dateien) - Card-Registrierung: Integrations-weiter
loadedFlag durch Modul-Variable ersetzt - Cleanup:
async_setupund manuelleshass.data.pop()beim Entladen entfernt - Type-Alias:
AudacConfigEntryfuer typsicherenruntime_data-Zugriff
Upgrade
HACS > Audac > Herunterladen > v3.16.0 > HA neu starten
v3.15.2 – Buttons always available
Fix
All 97 button entities are now always available, regardless of coordinator poll status.
Buttons are fire-and-forget commands — they send a command to the Audac device and don't read state data. They should never show as unavailable when the coordinator has a failed poll.
What changed
New AudacButtonBase class with available = True override. All 13 button classes now inherit from it:
- IMP40 station buttons (favourites)
- FMP40 trigger start/stop
- BMP40 disconnect
- Tuner search up/down, band switch, presets
- MMP40 transport, recording, repeat/random
- MTX save, volume up/down
v3.15.1 – Fix IMP40 favourites: load all stations
Fix
Only 9 of N IMP40 stations were loaded. Two bugs combined:
1. COMMAND_TIMEOUT too tight
COMMAND_TIMEOUT (5s) was equal to the GFAV inner read timeout (5s), leaving zero margin for connect/lock overhead. The outer timeout fired before the response arrived → partial or empty batch.
Fix: COMMAND_TIMEOUT increased to 8s (3s margin over the 5s inner read).
2. Premature pagination stop
The old code broke pagination when len(batch) < 10. If the device returned 9 items (e.g. due to a slightly truncated response), the loop assumed it was the last page.
Fix: Only stop on empty response or duplicate pointers (loop detection). Max pages increased from 10 to 20 (supports up to 200 stations).
v3.15.0 – Refined failure strategy with grace period
Improvement
Refined failure handling for both MTX and XMP44 coordinators.
Behavior
| Failures | State | Polling | What happens |
|---|---|---|---|
| 0 | Normal | 60s (MTX) / 30s (XMP44) | Everything working |
| 1–2 | Last known state kept | 60s / 30s | Grace period — short glitches are invisible to the user |
| 3+ | unavailable |
180s (3 min) | Device truly unreachable — entities marked unavailable, retries every 3 min |
| Recovery | Immediately restored | 60s / 30s | Device responds again → normal state + normal polling |
Also includes
COMMAND_TIMEOUTreduced from 25s to 5s — a hung TCP command no longer blocks the entire integration for half a minute- Overall timeouts restored to safe values (45s/55s) so legitimate slow responses are not falsely treated as failures
v3.14.3 – Fix persistent unavailable state
Critical Fix
All Audac entities stuck as unavailable despite devices being reachable.
Root cause
COMMAND_TIMEOUT (single TCP command) was 25 seconds. When the TCP connection hangs, one command holds the async lock for 25s — blocking ALL subsequent commands. With GET_ALL_ZONES_TIMEOUT also at 25s, the overall poll times out before the stuck command even releases the lock.
Result: Both coordinators (MTX + XMP44) cascade into permanent timeout loops.
Fix
| Timeout | Before (broken) | After (fixed) | Purpose |
|---|---|---|---|
COMMAND_TIMEOUT |
25s | 5s | Single command — fail fast on hung connections |
GET_ALL_ZONES_TIMEOUT |
25s | 45s | MTX all 8 zones — allow individual retries |
GET_ALL_SLOTS_TIMEOUT |
45s | 45s | XMP44 all 4 slots (unchanged) |
UPDATE_TIMEOUT |
35s | 55s | Coordinator cycle — must exceed inner timeouts |
Why this works
A hung command now fails in 5s instead of 25s, freeing the lock immediately. The next command can proceed. Even if 2-3 commands fail, the overall 45s timeout has plenty of room for the remaining zones to complete normally.
v3.14.2 – Match HA standard container padding
Fix
Zone rows now match HA standard container padding.
Measured before (via Chrome DevTools on live HA):
.zone-mainpadding:10px 12px→ row height 58px- Content gap:
12px - Container gap:
8px
After:
.zone-mainpadding:8px 12px→ row height ~52px- Content gap:
10px - Container gap:
6px - Name line-height:
1.3
HA standard .container uses padding: 0px with content determining height. These changes bring the Audac rows in line with Bubble Card and native HA button heights.
v3.14.1 – Compact row sizing
Fix
Zone/slot rows now match HA standard row height (~56px).
| Element | Before | After |
|---|---|---|
| Name font | 14px | 13px |
| Info gap | 2px | 1px |
| Detail line-height | default | 1.2 |
Rows are now the same height as Bubble Card and other HA-native cards.
v3.14.0 – HA theme variable integration
Improvement
Cards now inherit HA theme styling. Background, border, border-radius, and box-shadow are read from HA CSS variables, so the cards blend seamlessly with any theme.
CSS variables used
| Property | Variable | Fallback |
|---|---|---|
| Background | --ha-card-background |
Theme-aware rgba |
| Border radius | --ha-card-border-radius |
25px |
| Border color | --ha-card-border-color |
Subtle 6% rgba |
| Box shadow | --ha-card-box-shadow |
none |
What changed
- Removed hardcoded opaque
rgba(30,33,40,0.95)backgrounds from card containers - Removed
backdrop-filter: blur(20px)from all cards - Zone/slot rows now use subtle
rgba(255,255,255,0.04)overlays instead of opaque backgrounds - Hover and expanded states use slightly stronger overlays
Result
Cards blend seamlessly with Bubble Card, transparent themes, glassmorphism themes, and any custom HA theme. Both MTX and XMP44 cards (including the slot card) are updated.