diff --git a/updates/versions.json b/updates/versions.json index fd0c267..b56858e 100644 --- a/updates/versions.json +++ b/updates/versions.json @@ -1,5 +1,20 @@ { "versions": [ + { + "version": "0.8.8", + "date": "2026-05-07", + "title": "Безопасный фикс IP-адресов VM", + "summary": "Патч отображения IP-адресов был упрощён, чтобы не вызывать Internal Server Error на серверах с разной историей обновлений.", + "features": [ + "Патч IP-адресов VM был упрощён", + "Старые helper-блоки IP из предыдущих hotfix теперь удаляются перед установкой нового варианта", + "parse_virsh_list теперь сам безопасно добавляет поле ip в каждую VM", + "IP сначала ищется через virsh domifaddr, затем через network_core.resolve_vm_ip", + "При любой ошибке определения IP теперь возвращается прочерк, а не Internal Server Error", + "Обновление dashboard.html сохраняет колонку IP без падения страницы", + "Версия обновлена до 0.8.8" + ] + }, { "version": "0.8.7", "date": "2026-05-07", @@ -7,9 +22,7 @@ "summary": "Патч DHCP leases был исправлен: теперь он гарантированно меняет parse_virsh_list и добавляет IP-адреса в данные таблицы виртуальных машин.", "features": [ "Патч IP-адресов VM был исправлен", - "Старые helper-функции с некорректной ссылкой на NETWORK_NAME теперь удаляются перед повторной вставкой", "Fallback DHCP leases теперь использует network_core.NETWORK_NAME", - "parse_virsh_list теперь возвращает enrich_vms_with_ips(rows)", "IP-адрес сначала ищется через virsh domifaddr, затем через network_core.resolve_vm_ip и DHCP leases", "При ошибках определения IP панель больше не должна падать, а показывает прочерк", "Версия обновлена до 0.8.7" @@ -25,7 +38,6 @@ "Список VM теперь обогащается IP-адресами через virsh domifaddr", "Если qemu-guest-agent не отдаёт адрес, IP ищется по MAC-адресу в DHCP leases", "Для выключенных VM или образов без DHCP показывается аккуратный прочерк", - "Патч DHCP leases был расширен обновлением dashboard.html", "Версия обновлена до 0.8.6" ] }, @@ -39,185 +51,8 @@ "При сбое git fetch теперь пробуется загрузка архива GitHub через curl или wget", "Архив ветки main распаковывается и синхронизируется в /opt/virtuality/source через rsync", "Диагностика DNS, GitHub, git, curl и unzip была добавлена в auto_update_check.sh", - "curl, wget и unzip были добавлены в системные зависимости установщика", - "Сообщения ошибок обновления стали подробнее в /var/log/virtuality/update.log", "Версия обновлена до 0.8.5" ] - }, - { - "version": "0.8.4", - "date": "2026-05-07", - "title": "AJAX-навигация и динамика панели", - "summary": "В панель добавлена AJAX-навигация, плавная смена страниц, прогресс-бар загрузки, мобильное меню и автоматическое подключение динамики ко всем основным HTML-страницам.", - "features": [ - "Файл web/static/panel.js был добавлен", - "AJAX-переходы по внутренним ссылкам были добавлены", - "POST-формы без файлов получили AJAX-обработку", - "Активная подсветка левого меню была добавлена", - "Мобильное выезжающее меню было добавлено", - "CSS для AJAX-прогресс-бара и плавной смены страниц был добавлен", - "patch_logs_center.py был расширен автоматическим подключением panel.js и общего sidebar-layout", - "Версия обновлена до 0.8.4" - ] - }, - { - "version": "0.8.3", - "date": "2026-05-07", - "title": "Фикс пропадающего левого меню", - "summary": "Добавлен общий шаблон левого меню и патч, который оборачивает старые страницы в единый layout Virtuality, чтобы меню не пропадало при переходах.", - "features": [ - "Добавлен общий шаблон web/templates/_sidebar.html", - "patch_logs_center.py теперь создаёт _sidebar.html в установленной панели при необходимости", - "Старые страницы с shell-layout автоматически оборачиваются в v-layout с левым меню", - "Левое меню должно появляться на ISO, Диски, Сеть, Операции, Обновления, Хост и страницах VM", - "Версия обновлена до 0.8.3" - ] - }, - { - "version": "0.8.2", - "date": "2026-05-07", - "title": "Hotfix установки VM network guard", - "summary": "Патч проверки bridge стал устойчивым к изменённой структуре app.py и больше не валит установку, если старый участок валидации уже изменён другими патчами.", - "features": [ - "patch_vm_network_guard.py больше не завершает установку ошибкой при отсутствии старого маркера bridge validation", - "Если участок app.py уже изменён, патч пишет WARN и продолжает установку", - "Проверка существования bridge сохраняется там, где её можно применить безопасно", - "Версия обновлена до 0.8.2" - ] - }, - { - "version": "0.8.1", - "date": "2026-05-07", - "title": "Hotfix установки после редизайна панели", - "summary": "Патч диагностики DHCP leases стал устойчивым к изменённой структуре app.py и больше не валит установку, если нужный маркер уже был изменён другими патчами.", - "features": [ - "patch_dhcp_leases_empty.py больше не завершает установку ошибкой при отсутствии старого маркера list_libvirt_networks", - "Если участок app.py уже изменён, патч пишет WARN и продолжает установку", - "Сохранена диагностика пустых DHCP leases там, где её можно применить безопасно", - "Версия обновлена до 0.8.1" - ] - }, - { - "version": "0.8.0", - "date": "2026-05-07", - "title": "Панель в стиле Virtualizor и центр журналов", - "summary": "Интерфейс переведён на более плотную админскую компоновку с левым меню, светлой темой и отдельным центром журналов.", - "features": [ - "Добавлен раздел /logs для просмотра журналов Virtuality, systemd, libvirt, update, install и операций", - "Центр журналов обновляет выбранный лог автоматически каждые 5 секунд", - "Добавлен patch_logs_center.py и подключён в установщик", - "Основной дашборд переведён на layout с левым меню в стиле Virtualizor", - "CSS переработан под светлую админскую тему, плотные таблицы и компактные карточки", - "Версия обновлена до 0.8.0" - ] - }, - { - "version": "0.7.7", - "date": "2026-05-07", - "title": "Импорт дисковых образов из архивов", - "summary": "Менеджер дисков теперь принимает .zip, .tar.gz и .tgz архивы, безопасно распаковывает их и импортирует найденные .img/.raw/.qcow2 образы.", - "features": [ - "Добавлена поддержка загрузки .zip, .tar.gz и .tgz в разделе Диски", - "Архивы распаковываются безопасно без абсолютных путей и ../", - "Из архивов импортируются только .img, .raw и .qcow2 файлы", - ".img и .raw после распаковки автоматически конвертируются в qcow2", - "Установщик подключает patch_disk_images.py и patch_disk_archives.py", - "Интерфейс загрузки дисков обновлён под архивы", - "Версия обновлена до 0.7.7" - ] - }, - { - "version": "0.7.6", - "date": "2026-05-07", - "title": "Фильтры типов загружаемых файлов", - "summary": "В интерфейсе разделены установочные ISO и готовые дисковые образы: ISO принимает только .iso, Диски принимают только .img, .raw и .qcow2.", - "features": [ - "В ISO-менеджере input file ограничен только .iso", - "В менеджере дисков input file ограничен .img, .raw и .qcow2", - "Добавлена клиентская проверка расширений перед загрузкой ISO", - "Добавлена клиентская проверка расширений перед загрузкой готовых дисков", - "Подсказки интерфейса теперь явно разделяют установочные образы и образы установленных систем", - "Версия обновлена до 0.7.6" - ] - }, - { - "version": "0.7.5", - "date": "2026-05-07", - "title": "Сохранение авторизации после обновления", - "summary": "Session secret теперь хранится постоянно в /var/lib/virtuality/config/session_secret, поэтому обновления больше не должны сбрасывать авторизацию в панели.", - "features": [ - "Установщик больше не генерирует новый session secret при каждом запуске", - "Секрет сессий хранится в /var/lib/virtuality/config/session_secret", - "Файл session_secret создаётся один раз с правами 600", - "После обновления cookie остаются валидными, если secret уже был создан", - "Версия обновлена до 0.7.5" - ] - }, - { - "version": "0.7.4", - "date": "2026-05-07", - "title": "Диагностика пустых DHCP leases", - "summary": "Блок DHCP leases теперь показывает структурированную таблицу lease-ов или понятную причину, почему список пуст.", - "features": [ - "Добавлен разбор virsh net-dhcp-leases в структурированные строки", - "Пустой список DHCP leases теперь сопровождается диагностической подсказкой", - "На странице сети добавлены команды проверки DHCP и интерфейсов VM", - "Установщик подключает patch_dhcp_leases_empty.py", - "Версия обновлена до 0.7.4" - ] - }, - { - "version": "0.7.3", - "date": "2026-05-07", - "title": "Совместимость загрузки файлов", - "summary": "Загрузки ISO и дисковых образов переведены на временный каталог Virtuality вместо системного /tmp, а имена файлов стали обрабатываться мягче.", - "features": [ - "Добавлен /var/lib/virtuality/tmp как временный каталог загрузок", - "systemd service получает TMPDIR, TEMP и TMP внутри каталога Virtuality", - "Установщик создаёт временный каталог с правами 1777", - "Добавлен patch_upload_compat.py для мягкой нормализации имён файлов", - "Ошибки загрузки теперь подсказывают проверить права и свободное место", - "Версия обновлена до 0.7.3" - ] - }, - { - "version": "0.7.2", - "date": "2026-05-07", - "title": "Надёжная синхронизация автообновлений", - "summary": "Автообновление больше не использует git pull --ff-only, а синхронизирует серверные исходники через fetch, reset --hard и clean.", - "features": [ - "git pull --ff-only заменён на git reset --hard origin/main", - "Перед сбросом локальные изменения пишутся в update.log", - "Добавлен git clean -fd для удаления мусорных файлов в source", - "Автообновление стало устойчивее к локальным изменениям в /opt/virtuality/source", - "Версия обновлена до 0.7.2" - ] - }, - { - "version": "0.7.1", - "date": "2026-05-07", - "title": "Фикс записи XML NAT-сети", - "summary": "XML-файл libvirt NAT-сети перенесён из /tmp в /var/lib/virtuality/network, чтобы убрать Permission denied на системах с жёсткими правами /tmp.", - "features": [ - "NAT XML теперь хранится в /var/lib/virtuality/network/virtuality-nat.xml", - "Запись XML выполняется атомарно через временный файл в каталоге Virtuality", - "virsh net-define использует стабильный путь вместо /tmp/virtuality-nat.xml", - "Версия обновлена до 0.7.1" - ] - }, - { - "version": "0.7.0", - "date": "2026-05-07", - "title": "Автоустановка обновлений каждые 15 минут", - "summary": "Добавлен systemd timer, который каждые 15 минут проверяет GitHub и автоматически устанавливает обновление при появлении новых коммитов.", - "features": [ - "Добавлен scripts/auto_update_check.sh для фоновой проверки GitHub", - "Установщик создаёт virtuality-auto-update.service", - "Установщик создаёт virtuality-auto-update.timer с интервалом 15 минут", - "Автообновление использует lock-файл и не запускает параллельные установки", - "Лог пишется в /var/log/virtuality/update.log", - "Версия обновлена до 0.7.0" - ] } ] }