Перейти к содержимому

2026-04-06 — Режим простоя, диета Docker и единый брендинг (v2.55.0)

Финальный день недели — релиз с новыми фичами: система режимов простоя, заменившая два запутанных числовых поля одним выпадающим списком с четырьмя понятными стратегиями, масштабная оптимизация Docker-образа и визуальная унификация всех каналов. Двенадцать RC-итераций привели к v2.55.0 стабильному.

Старое поведение имело два независимых параметра: keepalive_interval и idle_disconnect_minutes. Новый enum idle_mode заменяет оба одним выпадающим списком:

РежимПоведениеДля чего
defaultБез действий; колонка решает самаКолонки с хорошим авто-сном
power_saveSuspend PA-синка → A2DP освобождается → колонка спит, BT подключёнБыстрое возобновление без реконнекта
auto_disconnectПолное BT-отключение + демон → null-sinkАналог старого idle_disconnect_minutes
keep_aliveИнфразвуковые импульсы для удержания A2DPКолонки, отключающиеся при цифровой тишине

Power save — новый режим. Использует инфраструктуру SinkMonitor из v2.54.0: после настраиваемой задержки (1–60 мин) бридж suspend’ит PA-синк через asuspend_sink(). A2DP-транспорт освобождается, колонка засыпает, Bluetooth остаётся.

Инфразвуковой keepalive — улучшение старого режима. Вместо цифровой тишины генерируются импульсы синусоиды 2 Гц на −50 дБ: ниже порога человеческого слуха, но ненулевые PCM-данные удерживают A2DP-транспорт.

Автомиграция конфига при старте: keepalive_interval > 0keep_alive, idle_disconnect_minutes > 0auto_disconnect.

С 916 МБ до ~450 МБ через три раунда оптимизации:

  • Раунд 1 (rc.7): Удалён системный FFmpeg — PyAV бандлит свои библиотеки в av.libs/. −37% (916→580 МБ)
  • Раунд 2 (rc.9): Глубокая чистка транзитивных зависимостей (FFmpeg/GStreamer/кодеки от PulseAudio), strip символов отладки, чистка stdlib. −51% (916→450 МБ)
  • Раунд 3 (rc.10): Возврат libasound2-plugins — нужен sounddevice/PortAudio для обнаружения аудиовыходов

Все визуальные активы заменены на дизайн wave-bridge с лендинга (два столба + три волны):

  • HA addon иконки: stable=teal-purple, rc=gold, beta=red
  • Все логотипы и фавиконы. ~310 КБ → ~55 КБ
  • dbus-fast 4.0.0→4.0.4, ruff 0.11.13→0.15.8
  • numpy возвращён к <2.0 после краша X86_V2 на QEMU
  • CI: docker/build-push-action v6→v7, actions/download-artifact v4→v8
  • Issue #123: Нет звука после удаления бриджа — null-sink sendspin_fallback остался дефолтным
  • Issue #133: Синки не появляются после перезагрузки на PipeWire/Ubuntu
ВерсияКлючевое
rc.1idle_mode enum, инфразвук, PA suspend
rc.2–3Стилизация, секунды → минуты
rc.4Исправление config download в Ingress
rc.5–6Зависимости, NumPy <2.0
rc.7–10Docker диета (3 раунда)
rc.11–12Единый брендинг
2.55.0Стабильный релиз

Система idle_mode — кульминация работы над SinkMonitor из v2.53–2.54. Четыре режима дают пользователям понятную модель вместо двух взаимодействующих числовых параметров.

Docker-диета критична для Raspberry Pi — меньше места на SD-карте, быстрее обновления. Единый брендинг закрывает визуальное несоответствие между лендингом и HA addon.

Двенадцать RC за день — рекорд проекта. Каждый решал реальную проблему, обнаруженную в тестировании.

Тестов: 1088 Python. Всего релизов с v2.52.0: 33 (8 стабильных + 25 RC).