Repository navigation
Releases: RoBiN19666/midipult
Release list
MidiPult 0.4.47 — обновления из панели
Обновление 0.4.47: финальная проверка и устойчивость самообновления.
Исправления
- После отката статус обновления показывает актуальную версию и не тащит
старыеbackup/installed/rolled_back. - Старые бэкапы обновления автоматически чистятся: остаются два последних.
- Проверено на станции: обновление
0.4.45 → 0.4.46через GitHub release,
затем принудительный сбойinstall.shи успешный откат.
Обновления из панели
- Раз в сутки проверяется GitHub Releases; результат кэшируется на 24 часа.
- В «Системе» — текущая/доступная версия, дата и список изменений.
- Окно «Обновить / Отмена», галочка «Больше не показывать это обновление».
- Архив скачивается с SHA-256, делается бэкап, при ошибке — откат.
Проверка
- static: 49/49
- unit: 46/46
- CGI: 36/36
MidiPult 0.4.46 — обновления из панели
Обновление 0.4.46: проверка обновлений из панели и безопасное самообновление.
Обновления
- Раз в сутки панель проверяет GitHub Releases; результат кэшируется на 24 часа.
- В «Системе» есть карточка «Обновление»: текущая версия, доступная версия,
дата публикации и список изменений. - При наличии новой версии показывается окно «с какой на какую» с кнопками
«Обновить» / «Отмена» и галочкой «Больше не показывать это обновление». - «Обновить» скачивает release-архив, проверяет SHA-256, делает бэкап
/data/mypult-update-backup-*, устанавливает и перезапускает пульт. - Если установка не удалась — автоматический откат из бэкапа.
Сборка релиза
deploy/build-release.ps1собираетmidipult-<версия>.tar.gzи
.sha256для GitHub Release.
Проверка
- Проверено на станции: скачивание архива, SHA-256, бэкап, установка,
перезапуск и статус. - static: 49/49
- unit: 46/46
- CGI: 36/36
MidiPult 0.4.44 — свой промпт, громкость и карточки
Обновление 0.4.44: свой характер ответов LLM, чистая громкость и удобные карточки.
Нейросеть
- В карточке «Нейросеть» появилось поле «Характер ответов (system prompt)».
Пусто — стандартный промпт; свой текст применяется и к голосовым ответам,
и к текстовому чату. Лимит 4000 символов, хранится вllm.json. - Из стандартного промпта убраны имя «Нейросеть», запрет называться Алисой
или ChatGPT и озвучиваемая приставка «Нейросеть отвечает.». - Ответ LLM больше не управляет громкостью: нет захвата
level_before,
потолка иset_volume.
Громкость
- Убрано автоматическое восстановление старого
volume.json— источник
залипавших 10%. volume_sync_loopтолько запоминает физически выставленный уровень, не
меняя его.- На вкладке «Звук» панель раз в 5 секунд читает фактическую громкость
черезvolume.py: изменения на колонке и на других панелях подхватываются
автоматически, слайдер не перебивается во время перетаскивания. - Убрана мёртвая настройка «потолок громкости ответов».
Карточки
- Порядок карточек сохраняется в
localStorageсо стабильными ID. - Кнопки ↑/↓ позволяют менять порядок без drag и колеса; состояние кнопок
считается по текущему DOM-порядку. - Drag ограничен своей вкладкой, без повторных вставок и мерцания.
Проверка
- static: 49/49
- unit: 46/46
- CGI: 36/36
- Проверено в панели: сохранение/очистка промпта, синхронизация громкости,
сохранение порядка карточек после перезагрузки.
MidiPult 0.4.34 — Glagol, проверка модели и выбор колонки
Единый релиз 0.4.34: исправление Glagol, проверка модели при установке и выбор колонки.
Glagol
- Устройство выбирается по платформе
yandexmidi/cucumberи совпадению
локального IP/MAC, а не по первой записи вdevices.json. - Это исправляет
next/prev/pauseи радио, если к аккаунту привязана
Станция Лайт или несколько Миди. - Кэш
glagol.jsonпривязан кdevice_id/platform; старый токен от другой
станции перезапрашивается автоматически.
Установка
deploy/preflight.shчитает/proc/device-tree/modelи требует
Cucumber/Midi. На другой станции установка отменяется до копирования
файлов.- Если сканер нашёл несколько SSH-кандидатов, установщик показывает
нумерованный список (IP, Luna, источник) и просит выбрать, какую колонку
обновлять. После выбора preflight проверяет модель. - Внутри самой панели выбора устройства нет: Glagol определяет Миди
автоматически по платформе и IP/MAC.
Проверка
- На станции:
Yandex Cucumber DVT2, preflight пройден. - Glagol: выбран
cucumber, токен содержит"plt": "cucumber". - static: 49/49
- unit: 46/46
- CGI: 36/36
sh -n deploy/preflight.sh: OK
MidiPult 0.4.33 — рабочие перезагрузка и выключение
Исправление перезагрузки и выключения из панели.
Что было сломано
- Кнопки отправляли команду, но CGI завершался через
common.ok()→sys.exit(0)раньше, чем успевал выполнитьreboot/poweroff. Панель получала «команда отправлена», но ядро не перезагружалось. - Подтверждение перезагрузки ждало пропадания
/version.json; если HTTP не пропадал, через 3 минуты появлялось «Перезагрузка не подтверждена».
Что исправлено
schedule_power()запускает отдельный процессsleep 1; exec /sbin/reboot -f(илиpoweroff -f) до завершения CGI.- Перезагрузка проверена реально: uptime сбрасывается,
boot_idменяется. - Выключение использует тот же механизм.
- Подтверждение перезагрузки теперь сравнивает
boot_idиз/proc/sys/kernel/random/boot_id, а не только пропадание сети. Базовый ID сохраняется в localStorage. - Добавлен endpoint
/cgi-bin/maintenance.py?boot=1.
Также в этой версии
- Браузерные
confirmзаменены на стилизованный диалог панели. - Новый горизонтальный логотип, круглая иконка в шапке, favicon и PWA-иконки.
- Опасная экспериментальная кнопка «Применить без ребута» удалена: системные звуки снова применяются только перезагрузкой.
- Ожидание перезагрузки увеличено до 180 секунд.
Проверка
- Перезагрузка через endpoint: ядро реально ушло в ребут, boot ID сменился, uptime ~30 секунд после загрузки.
- static: 49/49
- unit: 43/43
- CGI: 36/36
py_compileиsh -n: OK
MidiPult 0.4.29 — иконки, перезагрузка и подтверждения
Обновление интерфейса, перезагрузки и безопасности.
Перезагрузка
- Ожидание отключения станции увеличено до 180 секунд: панель больше не пишет «Перезагрузка не подтверждена» через минуту, если ребут занимает больше времени.
- Команда осталась безопасной:
sync+reboot -f; обычный/sbin/rebootна этой прошивке не доходит до init.
Логотип и иконки
- Новый горизонтальный логотип в README проекта и профиля.
- Круглая иконка с прозрачным фоном в шапке панели и на странице PIN-входа.
- Квадратная иконка для favicon и PWA:
favicon.ico,icon-192.png,icon-512.png. - Обновлены manifest, установщик и деплой; старый
icon.svgудалён.
Подтверждения
- Браузерные
window.confirmзаменены на стилизованный диалог панели с кнопками «Отмена» и «Подтвердить». - Диалог используется для перезагрузки, выключения, восстановления настроек, удаления звуков, возврата оригинала, отключения PIN и удаления чата.
Системные звуки
- Экспериментальная кнопка «Применить без ребута» удалена. При тесте
quasar_launcher2не гарантировал перезапускmaind --platformd; после неудачного рестарта колонка могла уйти в режим настройки. - Системные звуки снова применяются только перезагрузкой. Свои звуки, как и раньше, работают без перезагрузки.
Документация
- Обновлены README, FAQ, архитектура и инструкция по деплою под новые иконки и поведение.
- Changelog фиксирует удаление опасной экспериментальной функции.
Проверка
- static: 49/49
- unit: 43/43
- CGI: 36/36
py_compileиsh -n: OK
MidiPult 0.4.22 — быстрее панель, рабочие перезагрузка и звуки
Панель стала заметно экономнее, а перезагрузка, звуки и IPv6 — предсказуемее.
Панель и опрос
- Ленивая загрузка разделов: данные LLM, VPN, Bluetooth, Wi-Fi, Zigbee, сценариев, логов и звуков запрашиваются только при открытии соответствующей вкладки.
- «Система» перенесена в конец меню, после «Сценариев»; остаётся стартовой вкладкой.
/stateразделён на лёгкий ответ (статус и плеер, ~0,5 КБ) и полный?full=1(система, диски, железо, звуки)./stateопрашивается раз в 15 секунд на обычных вкладках и раз в 6 секунд на «Звуке»; в скрытой вкладке запросов нет.- Характеристики, диски и список звуков отдаются из
state_daemon; CGI остаётся резервом. state_daemonопрашивает Glagol раз в 10 секунд вместо 2 — меньше фоновой нагрузки.
Штатная Алиса и сценарии
- Голосовой демон делает паузу 5 секунд после речи/прослушивания штатной Алисы и не занимает микрофон повторным распознаванием.
- Повторно распознанная та же фраза не обрабатывается и не запускает новый
recognizeещё 8 секунд. - Сценарии проверяются локально по
scenarios.json; если фраза не совпала, HTTP-запрос кscenarios.pyне запускается. - После диагностики задержка Алисы оказалась зависанием
maind; жёсткая перезагрузка её сбрасывает.
Перезагрузка и выключение
- Исправлено: обычный
/sbin/rebootна прошивке возвращал успех, но init не перезагружал станцию. - Теперь используется
sync+/sbin/reboot -fиsync+/sbin/poweroff -f. - Кнопки панели должны реально перезагружать и выключать колонку, без «перезагрузка не подтверждена».
IPv6
- Переключатель IPv6 в разделе «Сеть»; по умолчанию выключен.
- Настройка сохраняется и повторно применяется через 25 секунд после старта, когда сеть уже поднялась.
- Если провайдер выдаёт IPv6 — его можно включить обратно.
Звуки
- После успешного возврата стандартного звука бэкап удаляется, поэтому кнопка «Вернуть» больше не появляется.
- Старые бэкапы, уже совпадающие с текущим файлом, автоматически очищаются.
- При следующей замене бэкап создаётся заново.
Документация
- Обновлены README, FAQ, архитектура и благодарности Yandex Station Extended/hackalice.me, 4PDA и внешним компонентам.
Проверка
- static: 49/49
- unit: 43/43
- CGI: 36/36
py_compileиsh -n: OK
MidiPult 0.4.12
Звуки и сценарии:
- карточка «Звуки»: список, прослушивание, скачивание и автобэкап системных звуков;
- замена drag-and-drop с конвертацией в Ogg Opus/WAV 48 кГц моно;
- MP3-цель принимается готовым MP3, без перекодирования;
- «Мои звуки»: загрузка, drag-and-drop в общую зону, переименование и удаление;
- действие сценария «Свой звук» с выбором из библиотеки;
- подписи назначения системных звуков.
Система и сеть:
- карточка «Характеристики»: модель, SoC, CPU, ОЗУ, eMMC, ядро, userspace, Quasar; недостающее — из hackalice.me с пометкой «вики»;
- прогресс перезагрузки с таймером и уведомлением «Колонка перезагружена»;
- переключатель IPv6; в сетях без глобального IPv6 выключен по умолчанию;
- стартовая вкладка «Система → Ресурсы».
Надёжность:
- релизный аудит, исправление очистки staging и устаревших CGI при обновлении;
- очистка staging-каталога деплоя и восстановление кодировки деплой-скрипта;
- кэш statvfs и опрос ресурсов раз в 10 секунд;
- голосовой демон не запускает recognize, пока штатная Алиса слушает/говорит; в voice.log добавлены замеры;
- обновлены README, FAQ и благодарности.
MidiPult 0.2.12
FAQ в приложении переписан на короткие популярные вопросы: запуск, телефон, голос, нейросеть, VPN, PIN, обновление/удаление и логи.
MidiPult 0.2.9
Лимит 32 символа для текста на дисплее; длительность бегущей строки зависит от длины; исправлен порядок действий сценария и возврат звука перед speak; добавлен разбор голосовых ограничений и обходов в docs/VOICE-LIMITS.md.