New version 1.2.5

Stable release consolidating the v1.2.4 beta cycle (1.2.4.1-beta and 1.2.4.2-beta) into 1.2.5.

Highlights:

- Apps dashboard: single launcher for every LXC-registered app and user-defined Custom Web Link, with category badges, search, sort and one-click deep-links back to the guest modal.
- LXC Apps & Updates end-to-end: App tab inside every guest modal, upstream version tracking, and Easy Updates that cover OS packages, registered apps, Docker Engine and per-image updates on the same 24-hour cycle.
- Application detection catalog with 380+ tracked workloads generated live from community-scripts across seven detector methods.
- Monitor now speaks 8 languages: English, Spanish, German, French, Italian, Portuguese, Slovak and Swedish (i18n scaffolding by @vaso73).
- NVIDIA multi-GPU passthrough by exact BDF so one card can be assigned to a VM while another stays operational on the host or LXC.
- Navigation reorder, Memory & Swap real memory-pressure signal, native Pushover channel, Actions API, plus wide-reaching improvements across health, hardware, network, backup and post-install.

Full release notes: see CHANGELOG.md and https://github.com/MacRimi/ProxMenux/releases
This commit is contained in:
MacRimi
2026-09-01 19:15:42 +02:00
parent f8e65cc4c4
commit 315259f5ec
54 changed files with 4343 additions and 333 deletions
+67 -7
View File
@@ -31,6 +31,7 @@
},
"navigation": {
"overview": "Visão geral",
"apps": "Apps",
"storage": "Armazenar",
"network": "Rede",
"virtualMachines": "VMs e LXCs",
@@ -1211,6 +1212,7 @@
"familyLabel": "Família:",
"applyOsUpdate": "Aplicar atualização do sistema operacional",
"osUpToDate": "SO atualizado",
"osStatusUnavailable": "Não foi possível determinar o estado das atualizações do sistema operativo.",
"installedByHelperPrefix": "Instalado por",
"helperScriptsName": "Proxmox VE Helper-Scripts",
"helperUpdatesRun": "Instalado pelo Proxmox Helper-Scripts.",
@@ -1369,7 +1371,7 @@
"methodApk": "pacote apk (Alpino)",
"methodBinary": "Binário (caminho absoluto ou nome simples)",
"methodFile": "arquivo + regex",
"methodDockerLabel": "docker inspecionar (etiqueta OCI)",
"methodDockerLabel": "docker inspect (etiqueta OCI)",
"methodDockerExec": "docker exec (binário no contêiner)",
"methodPython": "distribuição python (importlib.metadata)",
"methodCommand": "comando (avançado - argv)",
@@ -1435,6 +1437,11 @@
"portHttps": "https",
"portLogoLabel": "URL do logotipo deste link (opcional)",
"portLogoPlaceholder": "por exemplo, https://example.com/logo.webp",
"portCategoryPlaceholder": "Category for the Apps dashboard (optional)",
"portCategoryNone": "No category",
"portCategoryAddNew": "+ Add new category…",
"portCategoryCustomPlaceholder": "Type a category and press Enter (Esc to cancel)",
"portCustomUrlPlaceholder": "Custom URL (e.g. https://vault.example.com) — overrides IP:port",
"removePortTooltip": "Remover porta",
"detectMethodDpkg": "dpkg ·",
"detectMethodApk": "APK ·",
@@ -1484,7 +1491,7 @@
"managedApp": "Aplicativo gerenciado",
"managedStatus": "gerenciou",
"checkedAt": "Verificado {date}",
"latestUpstream": "Versão mais recente disponível",
"latestUpstream": "Última",
"loadingApplications": "Carregando aplicativos…",
"nameSearchPlaceholder": "Digite para pesquisar mais de 700 aplicativos ou digite o seu próprio",
"matchCount": "{count} corresponde",
@@ -2045,7 +2052,18 @@
"title": "Capacidade do pool ZFS",
"description": "Os pools ZFS no nível do host, independentemente do registro do PVE, portanto, o rpool e os pools de backup dedicados também são monitorados."
}
}
},
"swapPressure": "Pressão de memória",
"swapPressureHint": "Marca um evento crítico apenas quando AMBAS as condições forem verdadeiras ao mesmo tempo — uso do arquivo de swap acima do primeiro limite E RAM disponível abaixo do segundo. Alertar apenas por swap era ruidoso em hosts Proxmox onde o Linux troca páginas inativas enquanto a RAM permanece amplamente disponível.",
"swapHighLabel": "Uso do arquivo de swap",
"availableMinLabel": "RAM disponível mínima"
},
"navOrder": {
"title": "Ordem de navegação",
"description": "Personalize a ordem das abas principais. As abas agrupadas (Node, Admin) movem-se como uma unidade; seus itens internos mantêm a ordem padrão.",
"reset": "Restaurar padrão",
"hint": "Arraste para reordenar · No toque, pressione longamente primeiro",
"customActive": "Ordem de navegação personalizada ativa."
}
},
"login": {
@@ -2069,7 +2087,7 @@
"backupCodeHint": "Você também pode usar um código de backup (formato: XXXX-XXXX)",
"backToLogin": "Voltar ao login",
"verifyCode": "Verifique o código",
"version": "ProxMenux Monitor v1.2.4.1-beta"
"version": "ProxMenux Monitor v1.2.5"
},
"account": {
"signedIn": "Conectado",
@@ -3120,8 +3138,12 @@
"currentFeatures": {
"appDetection": "Smarter app detection in the App tab: Docker is correctly promoted as the parent workload during cold start (Portainer/SearXNG no longer briefly show up as native apps), unregistered suggestions live in the startup cache, and 'Find applications' runs a fresh catalog-backed scan on demand.",
"dockerUpdates": "The Updates tab now covers Docker end-to-end: Docker Engine and per-image update tracking follow the same 24-hour rolling cycle as OS packages, with a 'Check now' action for on-demand digest comparison — no more waiting for the daily collector.",
"appCatalog": "New application detection catalog with over 380 tracked workloads, built from the live community-scripts source with independent script evidence. Primary and fallback detectors (file, binary, dpkg, apk, Python, Docker exec, Docker label) cover both new and historical LXC layouts.",
"pushover": "Pushover joins Telegram, Gotify, Discord, Email and Apprise as a native notification channel — user/API key, device and sound selectors, priority 0 for regular messages, optional priority 1 for CRITICAL events. Suggested by @benginx (#308)."
"appCatalog": "New application detection catalog with over 380 tracked workloads, generated live from community-scripts across seven detector methods (file, binary, dpkg, apk, Python, Docker exec, Docker label). Primary and fallback detectors cover both new and historical LXC layouts.",
"pushover": "Pushover joins Telegram, Gotify, Discord, Email and Apprise as a native notification channel — user/API key, device and sound selectors, priority 0 for regular messages, optional priority 1 for CRITICAL events. Suggested by @benginx (#308).",
"appsDashboard": "New top-level Apps dashboard — a single launcher for every Web Link across the node. LXC-registered apps and user-defined Custom Web Links share the same grid with category badges, search, and one-click deep-links back to the guest modal.",
"lxcAppsUpdates": "App tab inside every LXC modal registers installed apps, captures weblinks and tracks upstream versions. Reworked Updates tab applies OS packages and app updates from a single button; Docker Engine and per-image tracking follow the same 24-hour cycle, with a 'Check now' action on demand.",
"multilingual": "The Monitor now speaks 8 languages: English, Spanish, German, French, Italian, Portuguese, Swedish and Slovak. Huge thanks to @vaso73 for building the i18n scaffolding that made this possible.",
"nvidiaMultiGpu": "NVIDIA driver lifecycle moves to per-BDF ownership so a multi-GPU host can pass one card to a VM and keep the other operational on the host or in LXCs, plus a kernel + branch + GPU-aware version picker (#298)."
}
},
"network": {
@@ -3525,7 +3547,7 @@
"wifi": "Wi-fi",
"storage": "Armazenar",
"storageController": "Controlador de armazenamento",
"hid": "ESCONDIDO",
"hid": "HID",
"vendorSpecific": "Específico do fornecedor",
"communications": "Comunicações",
"integrated": "Integrado",
@@ -4733,5 +4755,43 @@
"yourInput": "Sua entrada:",
"submit": "Enviar",
"ok": "OK"
},
"apps": {
"searchPlaceholder": "Search app or CT…",
"searchAriaLabel": "Search",
"filterAll": "All categories",
"filterAriaLabel": "Filter by category",
"sortAriaLabel": "Sort by",
"sortName": "Name",
"sortId": "ID",
"sortCategory": "Category",
"countOne": "1 app",
"countMany": "{n} apps",
"uncategorized": "Uncategorized",
"openAriaLabel": "Open {name} in a new tab",
"openGuestAriaLabel": "Abrir {name} ({type} {id})",
"emptyTitle": "No apps with a web link yet.",
"emptyHint": "Register a Web Link for any app (App tab of a CT) to see it here.",
"customLinkAdd": "Add link",
"editModeToggle": "Edit",
"editModeDone": "Done",
"customLinkNewTitle": "New web link",
"customLinkEditTitle": "Edit web link",
"customLinkEditAria": "Editar o link personalizado {name}",
"customLinkName": "Name",
"customLinkNamePlaceholder": "e.g. My app",
"customLinkUrl": "URL",
"customLinkLogo": "Logo URL (optional)",
"customLinkLogoPlaceholder": "e.g., https://example.com/logo.webp",
"customLinkCategory": "Category (optional)",
"customLinkBinding": "Bound to",
"customLinkBindingNone": "Not bound to any guest",
"customLinkBindingHelp": "Bind this link to a VM or CT to add its ID + name to the card and jump to the guest with one click.",
"customLinkSave": "Save",
"customLinkCreate": "Create",
"customLinkCancel": "Cancel",
"customLinkDelete": "Delete",
"customLinkSaveError": "Save failed",
"customLinkDeleteError": "Delete failed"
}
}