Skip to content

Releases: RoBiN19666/midipult

MidiPult 0.4.47 — обновления из панели

Choose a tag to compare

@RoBiN19666 RoBiN19666 released this 02 Nov 15:22

Обновление 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 — обновления из панели

Choose a tag to compare

@RoBiN19666 RoBiN19666 released this 02 Nov 15:18

Обновление 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 — свой промпт, громкость и карточки

Choose a tag to compare

@RoBiN19666 RoBiN19666 released this 02 Nov 14:54

Обновление 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, проверка модели и выбор колонки

Choose a tag to compare

@RoBiN19666 RoBiN19666 released this 02 Nov 03:29

Единый релиз 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 — рабочие перезагрузка и выключение

Choose a tag to compare

@RoBiN19666 RoBiN19666 released this 01 Nov 17:03

Исправление перезагрузки и выключения из панели.

Что было сломано

  • Кнопки отправляли команду, но 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 — иконки, перезагрузка и подтверждения

Choose a tag to compare

@RoBiN19666 RoBiN19666 released this 01 Nov 16:43

Обновление интерфейса, перезагрузки и безопасности.

Перезагрузка

  • Ожидание отключения станции увеличено до 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 — быстрее панель, рабочие перезагрузка и звуки

Choose a tag to compare

@RoBiN19666 RoBiN19666 released this 01 Nov 15:42

Панель стала заметно экономнее, а перезагрузка, звуки и 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

Choose a tag to compare

@RoBiN19666 RoBiN19666 released this 01 Nov 14:09

Звуки и сценарии:

  • карточка «Звуки»: список, прослушивание, скачивание и автобэкап системных звуков;
  • замена 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

Choose a tag to compare

@RoBiN19666 RoBiN19666 released this 31 Oct 09:02

FAQ в приложении переписан на короткие популярные вопросы: запуск, телефон, голос, нейросеть, VPN, PIN, обновление/удаление и логи.

MidiPult 0.2.9

Choose a tag to compare

@RoBiN19666 RoBiN19666 released this 31 Oct 08:53

Лимит 32 символа для текста на дисплее; длительность бегущей строки зависит от длины; исправлен порядок действий сценария и возврат звука перед speak; добавлен разбор голосовых ограничений и обходов в docs/VOICE-LIMITS.md.