{ "versions": [ { "version": "0.12.4", "date": "2026-09-27", "title": "Машина с установочного образа после установки перезагружается сама", "summary": "Раньше машина, созданная с ISO, после установки системы выключалась вместо перезагрузки, а при следующем запуске снова загружалась с установочного образа. Теперь она создаётся сразу в рабочем виде, диск стоит первым в порядке загрузки, и после установки машина перезагружается уже в установленную систему.", "features": [ "После установки с ISO машина перезагружается сама, а не выключается", "Для машин с ISO диск стоит первым в порядке загрузки: пока он пустой, машина загружается с образа, а после установки с диска и повторно в установщик не попадает", "Версия обновлена до 0.12.4" ] }, { "version": "0.12.3", "date": "2026-09-27", "title": "Экран машины снова подключается", "summary": "На Ubuntu 26.04 экран машины в браузере не подключался: новая версия noVNC обращалась не по тому адресу. Теперь экран работает и с новой, и со старой версией noVNC.", "features": [ "Экран машины в браузере подключается на Ubuntu 26.04 и Debian 13 (noVNC 1.6), как и на Ubuntu 24.04 (noVNC 1.3)", "Версия обновлена до 0.12.3" ] }, { "version": "0.12.2", "date": "2026-09-27", "title": "Понятный итог, если машину создать не удалось", "summary": "Если создание машины сорвалось, панель больше не предлагает открыть экран несуществующей машины. Она пишет, что на сервере от неё ничего не осталось, и даёт кнопку «Создать заново» с тем же образом. Недосозданный диск удаляется сам, поэтому то же название можно использовать сразу.", "features": [ "Кнопки «Открыть экран машины» и «Перейти к машине» появляются только после успешного создания", "После неудачного создания: кнопка «Создать заново» с тем же установочным или готовым образом", "Недосозданный диск удаляется сам, повторное создание под тем же названием больше не упирается в «Диск уже существует»", "Версия обновлена до 0.12.2" ] }, { "version": "0.12.1", "date": "2026-09-27", "title": "Понятное предупреждение, когда диск машины больше свободного места", "summary": "Если диск новой машины больше, чем свободно на сервере, панель больше не запускает установку, которая падала с ошибкой на английском. Она объясняет, в чём риск, и создаёт такую машину только после подтверждения: диск занимает место постепенно, по мере заполнения.", "features": [ "В шаге «Мощность» видно, сколько места свободно на сервере", "Диск больше свободного места создаётся только с подтверждением, раньше установка падала с ошибкой virt-install", "Версия обновлена до 0.12.1" ] }, { "version": "0.12.0", "date": "2026-09-27", "title": "Резервные копии по расписанию", "summary": "Сервер сам копирует машины каждый день или раз в неделю в выбранное время и хранит только последние копии, чтобы они не заняли весь диск. Копии делает отдельная служба сервера, поэтому ночное обновление панели их не прерывает. Исправлена загрузка ISO и образов дисков с компьютера.", "features": [ "Загрузка ISO и образов дисков с компьютера снова работает: браузер отправлял пустой запрос, и сервер отвечал ошибкой 422", "Расписание копий: каждый день или в выбранный день недели, время, все машины или только отмеченные", "Сервер хранит последние N копий по расписанию для каждой машины и удаляет старые только после удачной новой", "Копии, сделанные вручную, расписание не удаляет", "Если сервер был выключен в назначенное время, копия делается в течение двух часов после включения, иначе в следующий раз", "На странице «Резервные копии» видно следующую копию и итог последнего запуска по каждой машине", "Перезапуск панели больше не объявляет прерванными задачи, которые ведёт служба копий", "Установочный образ не собирается с именем администратора, которое запрещает установщик Ubuntu (admin, root, kvm)", "Версия обновлена до 0.12.0" ] }, { "version": "0.11.1", "date": "2026-09-27", "title": "Переезд обновлений на git.stackworks.ru", "summary": "Проект переехал с GitHub на собственный сервер git.stackworks.ru, и обновления теперь приходят оттуда. Сервер, который до сих пор получал обновления с GitHub, переключится на новый адрес сам при следующей проверке. Заодно исправлена редкая ошибка резервных копий: машина могла снова запуститься, хотя её только что выключили вручную.", "features": [ "Обновления, установка одной командой и установочный ISO берут код с git.stackworks.ru", "Сервер со старым адресом GitHub сам переключается на новый при проверке обновлений", "Запасное обновление архивом ZIP скачивается с того же адреса, откуда сервер получает обновления", "Резервные копии: если машину выключили вручную, пока панель ждала её выключения, панель больше не запускает её снова", "Версия обновлена до 0.11.1" ] }, { "version": "0.11.0", "date": "2026-09-25", "title": "Мастер настройки, снимки, резервные копии и быстрые машины из готовых образов", "summary": "Virtuality стала полноценной заменой Proxmox для дома: после установки с ISO панель открывается сразу, а мастер настройки проводит через HTTPS, пароль, сеть машин, хранилище и обновления. Добавлены снимки, резервные копии, клонирование, увеличение диска, спящий режим, скачивание образов по ссылке и из каталога, создание машины из облачного образа с пользователем и паролем, установка Windows 11 с UEFI и TPM. Исправлено больше двадцати ошибок, найденных аудитом.", "features": [ "Мастер первичной настройки: часовой пояс, пароль, HTTPS, сеть NAT или локальная сеть (с автооткатом), отдельный диск под машины, обновления", "Первая загрузка образа: панель ставится первой и показывает ход установки в браузере; при ошибке установка продолжается сама", "Страница «Настройки»: всё то же, что в мастере, плюс перезагрузка и выключение сервера, архив настроек, отчёт для поддержки", "HTTPS для панели с сертификатом сервера и перенаправлением с обычного адреса", "Снимки машин: создать, вернуться, удалить — до 8 на машину", "Резервные копии машин: создание, восстановление в новую или ту же машину, удаление", "Клонирование, увеличение диска, пауза и спящий режим, заметки, живая нагрузка процессора и памяти", "Скачивание ISO и образов по ссылке и из каталога: Ubuntu 26.04/24.04, Debian 13, Alpine — с проверкой контрольных сумм", "Машина из готового образа за минуту: пользователь, пароль и SSH-ключ через cloud-init, диск нужного размера", "Тип системы при установке с ISO: Linux, Windows 11 (UEFI + TPM), Windows 10, другая", "Постоянный адрес машины в сети NAT — пробросы портов не ломаются после перезагрузки", "Стабильный канал обновлений: только выпущенные версии; ранний доступ — по желанию", "Консоль машин доступна только через панель: VNC больше не открыт в сеть", "Операции, прерванные перезапуском панели, больше не блокируют машину", "Исправлены: формат облачных образов .img, CD-ROM, удаление UEFI-машин, правила firewall удалённых пробросов, русская локаль virsh, чужой IP у остановленных машин", "Убраны Cockpit, консольный dashboard, эмуляция ARM64 на x86, загрузка по PXE и устаревшие скрипты", "Команда virtuality-ctl: статус, настройки, пароль, часовой пояс, мост, диск, резервная копия настроек, откат, удаление", "Версия обновлена до 0.11.0" ] }, { "version": "0.10.0", "date": "2026-09-25", "title": "Новый интерфейс, установочный образ и подготовка к продакшену", "summary": "Панель полностью перерисована: светлая и тёмная темы, понятный русский язык вместо технических терминов, мастер создания машины из трёх шагов, открытие доступа из интернета в пару кликов. Добавлен установочный ISO-образ Virtuality на базе Ubuntu Server 26.04 LTS. Исправлены ошибки создания VM, автозапуска и обновлений, усилена безопасность.", "features": [ "Новый дизайн панели: светлая и тёмная темы, адаптивная вёрстка для телефона", "Главная страница: загрузка процессора, памяти и хранилища, карточки машин с быстрыми действиями", "Мастер создания машины: готовые конфигурации «Мини», «Стандарт», «Мощная»", "Страница машины: вкладки, переключатель автозапуска, порядок загрузки кнопками", "Раздел «Сеть и доступ»: открытие SSH, сайта, RDP и других сервисов из списка", "Загрузка образов перетаскиванием с прогрессом, скоростью и оставшимся временем", "Подтверждения опасных действий и уведомления о результате", "Раздел «Помощь» с инструкциями для частых задач", "Установочный ISO на базе Ubuntu Server 26.04 LTS: image/build-iso.sh", "Установщик ноды работает на Ubuntu 24.04, 26.04 и Debian 13", "Исправлено падение создания VM из-за отсутствующего импорта platform", "Исправлено: центр обновлений и автообновление предлагали откат на старую версию", "Проверка пароля работает на Python 3.13+ без модулей crypt и spwd", "Ограничение попыток входа, срок жизни сессии, защита от cross-origin POST", "Правила проброса портов восстанавливаются после перезагрузки сервера", "Настройки ноды сохраняются в /var/lib/virtuality/config/web.env и не сбрасываются обновлением", "Публичный /healthz для мониторинга, автотесты и GitHub Actions", "Версия обновлена до 0.10.0" ] }, { "version": "0.8.61", "date": "2026-05-07", "title": "Защита загрузки файлов была усилена", "summary": "Для ISO и образов дисков сохранена AJAX-загрузка файлов с прогресс-баром, проверкой расширений, отменой загрузки и защитой от случайного перехода во время активной передачи файла. При этом общая AJAX-навигация панели остаётся отключённой для стабильности.", "features": [ "ISO-загрузка сохранила XMLHttpRequest-прогресс без возврата AJAX-навигации страниц", "Загрузка образов дисков сохранила XMLHttpRequest-прогресс и polling конвертации", "Добавлено предупреждение beforeunload при попытке закрыть или обновить страницу во время загрузки", "Добавлена блокировка переходов по меню, ссылкам и другим submit-кнопкам во время активной загрузки", "Для ISO добавлен отдельный блок ошибки неправильного файла", "Для дисков усилено состояние активной загрузки и конвертации", "Версия обновлена до 0.8.61" ] }, { "version": "0.8.60", "date": "2026-05-07", "title": "AJAX-навигация панели была отключена", "summary": "Панель была переведена в стабильный режим обычной навигации: panel.js больше не перехватывает переходы по ссылкам и POST-формы. AJAX оставлен только для безопасных фоновых функций: раскрытие меню, мобильное меню, обновление фрагментов и live-status.", "features": [ "Убран перехват кликов по ссылкам для AJAX-подмены страниц", "Убран перехват POST-форм для AJAX-submit", "Удалена логика swapPage/ajaxNavigate из panel.js", "Скрипты страниц снова выполняются через нормальную загрузку документа", "Снижена нестабильность из-за смешанного full-load/AJAX режима", "Оставлены безопасные фоновые функции: nav groups, mobile menu, refreshFragments, live-status и toasts", "Версия обновлена до 0.8.60" ] }, { "version": "0.8.59", "date": "2026-05-07", "title": "Раскрытие блока Образы было восстановлено", "summary": "На странице базы знаний был подключён /static/panel.js, чтобы раскрывающийся блок Образы снова работал по клику. Группа Образы не открыта принудительно, но корректно раскрывается через свою кнопку.", "features": [ "web/static/knowledge.html снова подключает /static/panel.js", "Блок Образы раскрывается по клику на свою кнопку", "При открытии Базы знаний Образы не раскрываются принудительно", "Версия блока базы знаний обновлена до 0.8.59", "Версия проекта обновлена до 0.8.59" ] }, { "version": "0.8.58", "date": "2026-05-07", "title": "Меню базы знаний было исправлено", "summary": "На статической странице базы знаний была убрана принудительная раскрытость группы Образы. Теперь при открытии Базы знаний меню Образы не раскрывается само по себе, а нижний пункт База знаний остаётся активным.", "features": [ "В web/static/knowledge.html удалён класс open у группы Образы", "Активным оставлен только пункт База знаний", "Версия блока базы знаний обновлена до 0.8.58", "Версия проекта обновлена до 0.8.58" ] }, { "version": "0.8.57", "date": "2026-05-07", "title": "Меню было централизовано на основных страницах", "summary": "Главная страница, создание VM и карточка VM были переведены на общий шаблон меню _sidebar.html. Это устранило ситуацию, когда пункт База знаний был добавлен в общий шаблон, но не появлялся на страницах со старым зашитым aside.", "features": [ "dashboard.html теперь подключает общее меню через _sidebar.html", "vm_create.html теперь подключает общее меню через _sidebar.html", "vm_detail.html теперь подключает общее меню через _sidebar.html", "Пункт База знаний теперь должен появляться на главной, создании VM и карточке VM", "Закреплено правило: меню правится только в web/templates/_sidebar.html, без отдельных копий в страницах", "Версия обновлена до 0.8.57" ] }, { "version": "0.8.56", "date": "2026-05-07", "title": "База знаний была добавлена в панель", "summary": "В главное меню Virtuality в самый низ был добавлен пункт База знаний. Раздел был первично наполнен документацией по SSL-ready подходу, Let’s Encrypt, bridge/NAT пробросам, ключевым директориям, обновлению панели и диагностике сети.", "features": [ "В левое меню добавлен пункт База знаний в нижней части навигации", "Добавлена статическая страница /static/knowledge.html с первым набором документации", "В базу знаний внесён чек-лист SSL-ready by default для Let’s Encrypt", "Описаны варианты проброса для bridge VM и NAT VM", "Добавлены ключевые директории Virtuality и команды обновления", "Добавлены быстрые команды диагностики хоста, VM и сетевого проброса", "Добавлены стили для нижнего пункта меню и карточек базы знаний", "Версия обновлена до 0.8.56" ] }, { "version": "0.8.55", "date": "2026-05-07", "title": "Проброс портов для bridge VM был добавлен", "summary": "Сетевой патч был расширен для VM в bridge/static сетях: правила теперь определяют интерфейс до IP VM через ip route get и используют его вместо жёсткой привязки к virbr100. Это позволяет пробрасывать порты на VM, подключённые к br0, например fastpanel с IP 10.0.0.152.", "features": [ "Добавлен патч patch_network_bridge_forwards.py", "Установщик теперь применяет bridge/static VM patch после патча диапазонов портов", "nftables DNAT теперь добавляет FORWARD/MASQUERADE правила для фактического интерфейса VM", "iptables fallback теперь использует интерфейс маршрута к guest_ip вместо постоянного virbr100", "Команда диагностики tcpdump теперь подставляет реальный интерфейс до VM", "Версия обновлена до 0.8.55" ] }, { "version": "0.8.54", "date": "2026-05-07", "title": "Ручной IP VM был добавлен в проброс портов", "summary": "На странице Сеть скрытое значение guest_ip=auto было заменено на видимое поле IP VM. Теперь при пустых DHCP leases, статическом IP внутри VM, bridge-сети или отсутствии qemu-guest-agent можно вручную указать внутренний IP и создать проброс без блокировки автоопределением.", "features": [ "В форме добавления проброса портов появилось поле IP VM", "Значение auto оставлено по умолчанию для обычного DHCP/qemu-guest-agent сценария", "Ручной внутренний IP VM теперь можно указать прямо при создании DNAT-правила", "Подсказки DHCP leases были уточнены для bridge/static VM и готовых образов", "Версия обновлена до 0.8.54" ] }, { "version": "0.8.53", "date": "2026-05-07", "title": "Проброс диапазонов портов был усилен", "summary": "Патч сетевых диапазонов был усилен: форма проброса теперь принимает диапазоны как текст, iptables DNAT использует корректный синтаксис диапазона назначения, а применение правил не падает сразу при сбое nftables, если iptables fallback смог поставить правила.", "features": [ "Обработчик /network/forward/add был исправлен для приёма диапазонов портов как строки", "iptables DNAT для диапазонов теперь формирует назначение вида IP:10000-20000 вместо ошибочного IP:10000:20000", "apply_port_forwards теперь пробует UFW и iptables fallback даже если nftables не применился", "Ошибки применения правил теперь собираются в более понятное сообщение", "Версия обновлена до 0.8.53" ] }, { "version": "0.8.52", "date": "2026-05-07", "title": "Страница сети была переведена на единое меню", "summary": "Раздел Сеть был переведён со старого shell-каркаса на общий v-layout/v-main с подключением _sidebar.html, чтобы после F5 левое меню не пропадало.", "features": [ "Страница network.html была переведена на общий v-layout/v-main каркас", "Раздел Сеть теперь подключает единое меню через _sidebar.html", "panel.js подключён на странице Сеть", "После F5 левое меню больше не должно пропадать в разделе Сеть", "Версия обновлена до 0.8.52" ] }, { "version": "0.8.51", "date": "2026-05-07", "title": "Левое меню было пересобрано централизованно", "summary": "Левое меню было вынесено в единый шаблон _sidebar.html и подключено к страницам ISO, Диски, Операции и Хост. Установщик теперь финально восстанавливает основные канонические шаблоны панели после патчеров.", "features": [ "Общее меню _sidebar.html было пересобрано", "Страница ISO была переведена на общий v-layout/v-main каркас", "Страница Диски была переведена на общий v-layout/v-main каркас", "Страница Операции была переведена на общий v-layout/v-main каркас", "Страница Хост была переведена на общий v-layout/v-main каркас", "Прогресс-бар был убран из таблицы операций", "install_web_panel.sh теперь восстанавливает основные канонические шаблоны панели после патчеров", "После F5 левое меню больше не должно пропадать на ISO, Диски, Операции и Хост", "Версия обновлена до 0.8.51" ] } ] }