Releases: dzerik/sboom_ha
Release list
v0.35.2 — переиспользуемый фронтенд + фикс двойной регистрации
Fixed (0.35.2)
- Ошибка
customElements.define … "sboom-nowplaying" has already been usedпри открытии панели, когда на дашборде есть карточка sboom-card. Карточка импортит общие компоненты без?v, панель — с?v=<версия>→ модуль выполнялся дважды, незащищённыйdefineпадал. Shared-компоненты (sboom-nowplaying/controls/browse/track-row) теперь регистрируются идемпотентно, какtoast/tile.
Changed (0.35.1)
- Рефактор фронтенда: data-feed вынесен в общий
SboomFeedBase, токены--sb-*— в отдельный модуль; панель наследует базу. Статика/sboom_panelраздаётся всегда (для карточки), независимо отpanel_enabled.
Standalone-карточка: dzerik/ha-sboom-card.
v0.35.0 — Панель плеера SberBoom + drill-down браузер Звука
Встроенная премиум-панель плеера SberBoom в боковом меню Home Assistant + единый drill-down браузер список+поиск по каталогу Sber Звук.
Основное
- Immersive-карточка: обложка-фон, фрост-стекло, ambient-glow из цвета обложки; нативные токены темы HA; схлопывание на простое.
- Drill-down браузер без табов: очередь → поиск → артист → альбом → трек.
- Контролы: лайк/дизлайк, скорость (0.75×–2×), найти пульт, shuffle/repeat, громкость.
- Несколько колонок, опция отключения панели, сервис
sboom.play_music. - Standalone
ZvukClient+ WebSocket API панели.
Надёжность
push-подписка, плавный прогресс, оптимистичные кнопки, устранены потерянные тапы (по итогам аудита 38 находок). 403 теста.
Полный список — в CHANGELOG.
🤖 Generated with Claude Code
0.29.0 — обложки для BT/радио, заглушка вместо чёрного, караоке-опция
Накопленное с 0.26.1 (0.27.0 → 0.29.0).
Added
- Обложка для Bluetooth и радио по исполнителю+треку — публичные Search API без ключей: iTunes (600×600) → Deezer (резерв). Волатильно (один слот на трек, без диск-кэша). Появляется на карточке media_player и blur-фоном караоке. Проверено вживую.
- Заглушка-фон вместо чёрного экрана, когда обложки нет: бандл из 4 свободных градиентов (CC0 1.0, ~64 КБ). Выбор стабильно-случайный по треку (не мигает, но у разных треков разный).
- Опция «Караоке-закраска» — посимвольная подсветка строки по мере пропевания. По умолчанию выключена (статичная строка); включается в настройках интеграции.
Known limitations
- Караоке-закраска рассчитана на LTR; для RTL (арабский/иврит) направление заливки пока не инвертируется (нужны bidi + shaping). Т.к. опция off по умолчанию — на дефолт не влияет.
0.26.1 — радио/Bluetooth: now-playing и караоке
Накопленное с 0.24.0 (0.25.0 → 0.26.1) — поддержка всех режимов воспроизведения.
Fixed
- Радио и Bluetooth больше не висят IDLE. У них нет каталожного
trackId→get_metadataпуст → media_player показывал IDLE с пустой карточкой. Теперь now-playing добирается изGET_STATE:- Радио: станция →
media_channel, песня →media_title; на паузе — PAUSED со станцией. - Bluetooth (app
bluetooth_media_control): title/исполнитель/альбом,media_source=BLUETOOTH.
- Радио: станция →
- Прогресс-бар корректно скрыт у радио (
duration=0).
Added
- Караоке для Bluetooth — лирика тянется напрямую из провайдеров (Lrclib → NetEase), без персистентного диск-кэша (у BT нет каталожного
track_id; ключ — синтетическийtitle|artists, один in-memory слот на трек). Синхронизация по позиции/длительности — подтверждено вживую. - Сенсор
playback_mode—music/wave/podcast/radio/bluetooth, работает даже когда media_player пуст.
Про радио
Караоке для радио сознательно не поддерживается: колонка отдаёт позицию ЭФИРА (напр. 1224 c при песне 36–250 c), синхронизировать лирику нечем. Текст для радио не запрашивается.
0.24.0 — межустройственная связка (farfield/cast/soundbar)
Added
Слой межустройственной связки в GET_STATE. Раньше парсили только multiroom.mode/stereoPair.active; теперь читаем весь слой объединения устройств Sber (companion-протокол общий для платформы StarOS):
- Новый диагностический сенсор
sensor.<name>_device_links(выкл. по умолчанию) — число связанных устройств (SberCast + группы селектора + саундбар), разбивка по источникам в атрибутах. На одиночной колонке0; наполняется при объединении с SberBox/ТВ/другой колонкой. - Сенсор
multiroom_modeобогащён атрибутами стереопары: канал (L/R) и устройство-партнёр. - Парсинг
sbercast,deviceSelector(cast/ds/room/qc-группы),deviceGroups.soundBar— пустые источники отфильтровываются,""-каналы нормализуются вNone.
Changed (0.23.2, ранее не выпускалось)
- Честная документация op 18 (keep-alive). Эксперимент: транспортный WS ping/pong держит сессию сам (≥150 c idle без op 18); keep-alive-семантика op 18 фаззингом не подтверждена. Op 18 оставлен как дешёвая application-level страховка. Поведение не менялось.
0.23.1 — синхронизация документации
Документация под аппаратные возможности (0.23.0): карточка HACS и дерево файлов README дополнены датчиками платы и инвентарём Zigbee/Matter. Кода не касается.
0.23.0 — датчики платы + инвентарь Zigbee/Matter
Найдены локальные возможности колонки (только модели уровня R2, проверяется автоматически — на других сущности не создаются):
- Освещённость (lux) и температура SoC (°C) — с датчиков платы (libiio). Освещённость оживит автоматизации «стемнело → включи свет».
- Инвентарь Zigbee — устройства умного дома колонки: количество + модель/производитель/RSSI/питание. Только чтение.
- Инвентарь Matter — количество + сырой вывод (структурируется с реальным устройством).
Всё локально, без облака, с обязательной проверкой возможностей. Подробности — в CHANGELOG.md.
0.21.0 — источник трека на караоке-кадре
Контекст, ожививший Now Playing, теперь и на караоке: вверху кадра приглушённым шрифтом показывается «Персональная волна · Sber Звук» — название станции/плейлиста и провайдер. И в караоке-режиме, и в idle. Подробности — в CHANGELOG.md.
0.20.0 — богатый Now Playing
Контекст трека в атрибутах media_player: playlist (название станции/плейлиста, напр. «Персональная волна»), playlist_type (endless/album/user), media_source (MUSIC/RADIO), provider, buffering, child_mode. Всё уже приходило в metadata колонки — раньше не выставлялось (а название плейлиста и вовсе терялось). Оживляет дашборд: «Персональная волна · Sber Звук». Подтверждено живым захватом. Подробности — в CHANGELOG.md.
0.19.2 — календарь не дёргается без смены расписания
Оптимизация: раньше календарь пересчитывал повторы будильников (RRULE) на каждый poll и каждый push трека/громкости. Теперь перерисовывается только когда расписание реально изменилось (появился/удалён/отредактирован будильник, таймер или напоминание). Тик таймера и смена громкости больше не дёргают пересчёт. Подробности — в CHANGELOG.md.