diff --git a/CHANGELOG.md b/CHANGELOG.md index edc6b41..6e00886 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,39 @@ All notable changes to PVEmanager will be documented in this file. --- +## [v1.16.0] - 2026-08-14 + +### 🌍 i18n — Full Translation Pass + +A comprehensive sweep that eliminated the remaining hardcoded and untranslated strings from the UI: + +- **Dashboard & Instances** — action dialogs, resource cards, status labels, and bulk-operation descriptions are now fully translated (EN + RU) +- **Images page** — image browser, download/import dialogs, mirrors manager fully translated +- **App Store** — missing keys added for install wizard, operation states, and app detail labels +- **Nodes** — power action labels (`Start`, `Reboot`, `Shutdown`) and common node-admin strings translated +- **Scripts & Certs** — Scripts catalog and TLS/certificates sections added to both locales +- **Roles** — permission labels for all RBAC entries, including `remote_migrate`, translated to Russian +- **Graphs, Wizard, Storages** — previously hardcoded Russian strings moved to locale files and dual-translated +- **Bulk migrate & Access realm** — new locale keys for bulk migration actions and Proxmox realm labels +- **Critical fixes** — several strings that were silently falling back to English in the Russian UI are now correctly translated + +### 🔑 SSH Keys + +- **Swap SSH keys on owner change** — when an admin reassigns a VM/LXC to a different user, the instance now automatically receives the new owner's SSH public key (and the previous owner's key is removed), keeping access credentials in sync with the current owner + +### 📦 Cloud Images + +- **`patch-cloud-images.sh`** — new helper script that patches official cloud images to include `qemu-guest-agent`, then publishes them to a GitHub release mirror; enables live metrics and guest-agent features without requiring a post-deploy agent install +- **amd64 image catalog** — default amd64 image entries now point to the GitHub mirror (qemu-guest-agent pre-installed) and include `sha256` checksums for integrity verification + +### 🐛 Bug Fixes + +- **VM storage overview** — loop devices (`/dev/loop*`) and system partitions (`/dev/sr*`, `/boot`, `/snap`) were included in per-disk usage cards; they are now filtered out so only data disks are shown +- **Cloud image re-download** — cached import images were served from disk even when a checksum was provided and the remote file had changed; the cache is now invalidated when a checksum mismatch is detected +- **Password visibility icon** — the eye icon across all password fields (login, change-password, SSH key passphrase, and API-key dialogs) was inverted: open eye was shown when the field was hidden and vice-versa; icon state now correctly reflects whether the value is visible + +--- + ## [v1.15.0] - 2026-08-13 ### 🚀 One-Command Bootstrap diff --git a/CHANGELOG.ru.md b/CHANGELOG.ru.md index de7fcab..f19c9b8 100644 --- a/CHANGELOG.ru.md +++ b/CHANGELOG.ru.md @@ -4,6 +4,39 @@ --- +## [v1.16.0] - 2026-08-14 + +### 🌍 i18n — Полный проход по переводам + +Масштабная зачистка оставшихся захардкоженных и непереведённых строк интерфейса: + +- **Дашборд и инстансы** — диалоги действий, карточки ресурсов, метки статусов и описания массовых операций полностью переведены (EN + RU) +- **Страница «Образы»** — браузер образов, диалоги загрузки/импорта, менеджер зеркал — полный перевод +- **App Store** — добавлены недостающие ключи для мастера установки, состояний операций и меток страницы приложения +- **Ноды** — метки силовых действий (`Запуск`, `Перезагрузка`, `Выключение`) и общие строки администрирования нод переведены +- **Скрипты и сертификаты** — разделы каталога скриптов и TLS-сертификатов добавлены в оба локейла +- **Роли** — метки всех RBAC-разрешений, включая `remote_migrate`, переведены на русский +- **Графики, мастер, хранилища** — ранее захардкоженные русские строки вынесены в файлы локали и переведены на оба языка +- **Массовая миграция и Access realm** — добавлены ключи для действий массовой миграции и меток реалмов Proxmox +- **Критические исправления** — несколько строк, молча откатывавшихся на английский в русском интерфейсе, теперь корректно отображаются на русском + +### 🔑 SSH-ключи + +- **Смена SSH-ключей при смене владельца** — когда администратор переназначает VM/LXC другому пользователю, инстанс автоматически получает SSH-ключ нового владельца (ключ предыдущего при этом удаляется), так что учётные данные для доступа всегда соответствуют текущему владельцу + +### 📦 Облачные образы + +- **`patch-cloud-images.sh`** — новый вспомогательный скрипт, который патчит официальные облачные образы, добавляя `qemu-guest-agent`, и публикует их в GitHub-зеркало; позволяет получить живые метрики и функции гостевого агента без установки агента после деплоя +- **Каталог образов amd64** — записи образов amd64 по умолчанию теперь указывают на GitHub-зеркало (с предустановленным qemu-guest-agent) и включают контрольные суммы `sha256` для проверки целостности + +### 🐛 Исправления + +- **Обзор дисков VM** — loop-устройства (`/dev/loop*`) и системные разделы (`/dev/sr*`, `/boot`, `/snap`) включались в карточки использования диска; теперь они отфильтровываются и отображаются только диски с данными +- **Повторная загрузка облачных образов** — закешированные импортированные образы раздавались с диска даже при наличии контрольной суммы и изменении файла на удалённом источнике; теперь кеш инвалидируется при несовпадении суммы +- **Иконка видимости пароля** — значок глаза во всех полях пароля (вход, смена пароля, парольная фраза SSH-ключа, диалоги API-ключей) был инвертирован: открытый глаз отображался, когда значение было скрыто, и наоборот; теперь состояние иконки корректно отражает видимость значения + +--- + ## [v1.15.0] - 2026-08-13 ### 🚀 Установка одной командой diff --git a/README.md b/README.md index ccfb92c..f85cfd0 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ **Modern web panel for managing Proxmox servers, virtual machines and LXC containers** -[![Version](https://img.shields.io/badge/version-1.15.0-blue?style=flat-square)](CHANGELOG.md) +[![Version](https://img.shields.io/badge/version-1.16.0-blue?style=flat-square)](CHANGELOG.md) [![License](https://img.shields.io/badge/license-MIT-green?style=flat-square)](LICENSE) [![Docker](https://img.shields.io/badge/docker-ready-2496ED?style=flat-square&logo=docker&logoColor=white)](compose.yml) [![Python](https://img.shields.io/badge/python-3.12-3776AB?style=flat-square&logo=python&logoColor=white)](backend/) diff --git a/README.ru.md b/README.ru.md index 9a9d153..a98faed 100644 --- a/README.ru.md +++ b/README.ru.md @@ -4,7 +4,7 @@ **Современная веб-панель для управления серверами Proxmox, виртуальными машинами и контейнерами LXC** -[![Версия](https://img.shields.io/badge/версия-1.15.0-blue?style=flat-square)](CHANGELOG.md) +[![Версия](https://img.shields.io/badge/версия-1.16.0-blue?style=flat-square)](CHANGELOG.md) [![Лицензия](https://img.shields.io/badge/лицензия-MIT-green?style=flat-square)](LICENSE) [![Docker](https://img.shields.io/badge/docker-готов-2496ED?style=flat-square&logo=docker&logoColor=white)](compose.yml) [![Python](https://img.shields.io/badge/python-3.12-3776AB?style=flat-square&logo=python&logoColor=white)](backend/) diff --git a/VERSION b/VERSION index 141f2e8..15b989e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.15.0 +1.16.0 diff --git a/WIKI.md b/WIKI.md index ec5bac4..2e3b484 100644 --- a/WIKI.md +++ b/WIKI.md @@ -1,6 +1,6 @@ # 📖 PVEmanager - Documentation -> Complete guide for installation, configuration and usage of PVEmanager v1.13.0 +> Complete guide for installation, configuration and usage of PVEmanager v1.16.0 --- @@ -726,6 +726,21 @@ From a VM's detail page, the ISO dialog shows every ISO already on the node's st Either action that changes boot order applies it via a **hybrid reboot**: a graceful ACPI shutdown with a `forceStop` fallback, then start. This avoids the guest-ping timeout that a plain restart hits on a freshly installed OS with no QEMU Guest Agent running yet. +### GitHub Mirror with QEMU Guest Agent + +The bundled amd64 image catalog points to a **GitHub mirror** that contains cloud images pre-patched with `qemu-guest-agent`. This means: + +- Live per-VM metrics (CPU, memory, disk fill, I/O rates) work immediately after deploy — no post-install agent setup needed +- Images include a **sha256 checksum** for integrity verification; if the cached file no longer matches the published checksum, the panel re-downloads it automatically + +To rebuild or update the mirror yourself, run the included helper script on a Linux host with QEMU installed: + +```bash +bash patch-cloud-images.sh +``` + +It downloads the upstream `.qcow2`, installs `qemu-guest-agent` via `virt-customize`, and publishes the patched image as a GitHub Release. + ### Custom Mirrors (Admin Only) Administrators can configure custom image repositories: @@ -1903,6 +1918,15 @@ The SHA-256 fingerprint is computed and displayed automatically. - Regular users see their own keys - Admins selecting an owner see the owner's keys in addition to their own +### SSH Key Sync on Owner Change + +When an admin reassigns a VM or LXC to a different user (via the **Owner** dialog on the instance detail page), the panel automatically: + +1. Removes the previous owner's SSH public key from the instance's `ciuser`/authorized keys +2. Injects the new owner's SSH public key + +This keeps access credentials in sync with whoever currently owns the instance, without any manual key rotation. + ### Admin Key Management Admins (users with `user:manage` permission) can view and manage SSH keys for any user: @@ -1927,10 +1951,12 @@ GET /api/ssh-keys/user/{user_id} — list keys for a specific user ### Supported Languages -- 🇷🇺 Russian +- 🇷🇺 Russian (full coverage as of v1.16.0) - 🇺🇸 English (default) - 🇺🇿 Uzbek (partial) +> **v1.16.0** completed a full translation sweep: all previously hardcoded or untranslated strings across the dashboard, instances, images, app store, nodes, roles, storages, scripts, certificates, graphs, wizard, bulk migrate, and access realms are now properly translated in both Russian and English. + ### Switching Language Since v1.5.2, language is a **per-user** preference stored in the database. diff --git a/WIKI.ru.md b/WIKI.ru.md index da135a3..29d57f9 100644 --- a/WIKI.ru.md +++ b/WIKI.ru.md @@ -1,6 +1,6 @@ # 📖 PVEmanager — Документация -> Полное руководство по установке, настройке и использованию PVEmanager v1.13.0 +> Полное руководство по установке, настройке и использованию PVEmanager v1.16.0 --- @@ -725,6 +725,21 @@ RAM: 512 МБ – 128 ГБ Любое действие, меняющее порядок загрузки, применяется через **гибридную перезагрузку**: штатное ACPI-выключение с откатом на принудительную остановку, затем запуск. Это убирает таймаут ping гостя, с которым сталкивается обычный рестарт на свежеустановленной ОС, где ещё не запущен QEMU Guest Agent. +### GitHub-зеркало с QEMU Guest Agent + +Встроенный каталог образов amd64 ссылается на **GitHub-зеркало**, содержащее облачные образы с предустановленным `qemu-guest-agent`. Это даёт: + +- Живые метрики на ВМ (CPU, память, заполнение диска, скорости I/O) сразу после деплоя — дополнительная установка агента не нужна +- Образы включают контрольную сумму **sha256**; если закешированный файл не совпадает с опубликованной суммой, панель скачает его повторно автоматически + +Чтобы собрать или обновить зеркало самостоятельно, запустите вспомогательный скрипт на Linux-хосте с установленным QEMU: + +```bash +bash patch-cloud-images.sh +``` + +Скрипт скачивает исходный `.qcow2`, устанавливает `qemu-guest-agent` через `virt-customize` и публикует патченный образ как GitHub Release. + ### Кастомные зеркала (только админ) Администраторы могут настроить кастомные репозитории образов: @@ -1817,6 +1832,15 @@ SHA-256 отпечаток вычисляется и отображается а - Обычные пользователи видят свои ключи - Админы, выбирающие владельца, видят ключи владельца в дополнение к своим +### Синхронизация SSH-ключей при смене владельца + +Когда администратор переназначает ВМ или LXC другому пользователю (через диалог **Владелец** на странице инстанса), панель автоматически: + +1. Удаляет публичный SSH-ключ предыдущего владельца из `ciuser`/authorized keys инстанса +2. Внедряет публичный SSH-ключ нового владельца + +Учётные данные для доступа всегда соответствуют текущему владельцу — ручная ротация ключей не нужна. + ### Управление ключами админом Админы (пользователи с правом `user:manage`) могут просматривать и управлять SSH-ключами любого пользователя: @@ -1841,10 +1865,12 @@ GET /api/ssh-keys/user/{user_id} — список ключей конкрет ### Поддерживаемые языки -- 🇷🇺 Русский +- 🇷🇺 Русский (полное покрытие начиная с v1.16.0) - 🇺🇸 Английский (по умолчанию) - 🇺🇿 Узбекский (частично) +> **v1.16.0** завершил полный проход по переводам: все ранее захардкоженные или непереведённые строки на дашборде, в инстансах, образах, App Store, нодах, ролях, хранилищах, скриптах, сертификатах, графиках, мастере, массовой миграции и реалмах доступа теперь корректно переведены на русский и английский. + ### Переключение языка Начиная с v1.5.2, язык является **пользовательской** настройкой, хранящейся в базе данных.