Skip to content

Releases: dzerik/sboom_ha

v0.35.2 — переиспользуемый фронтенд + фикс двойной регистрации

Choose a tag to compare

@dzerik dzerik released this 15 Jul 09:46

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 браузер Звука

Choose a tag to compare

@dzerik dzerik released this 13 Jul 14:37

Встроенная премиум-панель плеера 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/радио, заглушка вместо чёрного, караоке-опция

Choose a tag to compare

@dzerik dzerik released this 10 Jul 17:24

Накопленное с 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 и караоке

Choose a tag to compare

@dzerik dzerik released this 10 Jul 16:47

Накопленное с 0.24.0 (0.25.0 → 0.26.1) — поддержка всех режимов воспроизведения.

Fixed

  • Радио и Bluetooth больше не висят IDLE. У них нет каталожного trackIdget_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_modemusic / wave / podcast / radio / bluetooth, работает даже когда media_player пуст.

Про радио

Караоке для радио сознательно не поддерживается: колонка отдаёт позицию ЭФИРА (напр. 1224 c при песне 36–250 c), синхронизировать лирику нечем. Текст для радио не запрашивается.

0.24.0 — межустройственная связка (farfield/cast/soundbar)

Choose a tag to compare

@dzerik dzerik released this 10 Jul 15:25

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 — синхронизация документации

Choose a tag to compare

@dzerik dzerik released this 10 Jul 12:13

Документация под аппаратные возможности (0.23.0): карточка HACS и дерево файлов README дополнены датчиками платы и инвентарём Zigbee/Matter. Кода не касается.

0.23.0 — датчики платы + инвентарь Zigbee/Matter

Choose a tag to compare

@dzerik dzerik released this 10 Jul 11:49

Найдены локальные возможности колонки (только модели уровня R2, проверяется автоматически — на других сущности не создаются):

  • Освещённость (lux) и температура SoC (°C) — с датчиков платы (libiio). Освещённость оживит автоматизации «стемнело → включи свет».
  • Инвентарь Zigbee — устройства умного дома колонки: количество + модель/производитель/RSSI/питание. Только чтение.
  • Инвентарь Matter — количество + сырой вывод (структурируется с реальным устройством).

Всё локально, без облака, с обязательной проверкой возможностей. Подробности — в CHANGELOG.md.

0.21.0 — источник трека на караоке-кадре

Choose a tag to compare

@dzerik dzerik released this 10 Jul 10:44

Контекст, ожививший Now Playing, теперь и на караоке: вверху кадра приглушённым шрифтом показывается «Персональная волна · Sber Звук» — название станции/плейлиста и провайдер. И в караоке-режиме, и в idle. Подробности — в CHANGELOG.md.

0.20.0 — богатый Now Playing

Choose a tag to compare

@dzerik dzerik released this 10 Jul 10:38

Контекст трека в атрибутах media_player: playlist (название станции/плейлиста, напр. «Персональная волна»), playlist_type (endless/album/user), media_source (MUSIC/RADIO), provider, buffering, child_mode. Всё уже приходило в metadata колонки — раньше не выставлялось (а название плейлиста и вовсе терялось). Оживляет дашборд: «Персональная волна · Sber Звук». Подтверждено живым захватом. Подробности — в CHANGELOG.md.

0.19.2 — календарь не дёргается без смены расписания

Choose a tag to compare

@dzerik dzerik released this 10 Jul 10:28

Оптимизация: раньше календарь пересчитывал повторы будильников (RRULE) на каждый poll и каждый push трека/громкости. Теперь перерисовывается только когда расписание реально изменилось (появился/удалён/отредактирован будильник, таймер или напоминание). Тик таймера и смена громкости больше не дёргают пересчёт. Подробности — в CHANGELOG.md.