Skip to content

Releases: FX6W9WZK/ha-audac

v3.18.0

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 06 Jul 00:59

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

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 06 Jul 00:40

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

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 18 May 10:17

v3.16.0

Aenderungen

  • entry.runtime_data: Coordinator-Zugriff migriert von hass.data[DOMAIN] auf das moderne entry.runtime_data Pattern (8 Dateien)
  • Card-Registrierung: Integrations-weiter loaded Flag durch Modul-Variable ersetzt
  • Cleanup: async_setup und manuelles hass.data.pop() beim Entladen entfernt
  • Type-Alias: AudacConfigEntry fuer typsicheren runtime_data-Zugriff

Upgrade

HACS > Audac > Herunterladen > v3.16.0 > HA neu starten

v3.15.2 – Buttons always available

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 18 Mar 17:13

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

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 18 Mar 15:47

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

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 18 Mar 13:40

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_TIMEOUT reduced 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

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 18 Mar 13:30

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

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 17 Mar 23:48

Fix

Zone rows now match HA standard container padding.

Measured before (via Chrome DevTools on live HA):

  • .zone-main padding: 10px 12px → row height 58px
  • Content gap: 12px
  • Container gap: 8px

After:

  • .zone-main padding: 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

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 17 Mar 15:29

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

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 17 Mar 14:44

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.