Adds the OCI manager: an engine that turns a Docker Compose file into an LXC definition, a catalog of 365 applications drawn from LinuxServer.io and other container image sources, and a per-instance registry recording what each container was built from. Reachable from the main menu. Catalog text is translated like every other string in the project: the taglines go through translate() and land in lang/*.json, so the entries read in all eight languages instead of only English. Translation cache builder: - a failed translation leaves the key absent rather than writing English, which previously made the string count as translated forever - a result identical to a 3+ word source is rejected, catching a provider that silently returns the text it was given - strings that are nothing but glossary terms keep their source spelling instead of being discarded as failures - no backoff between attempts when the provider is deterministic - application names are protected so "HAOS One" survives translation - argos joins the provider list, and the workflow reads the OCI sources Audit & Report: - findings that moved in the wrong direction between runs are reported alongside the ones that improved - an accepted risk can carry a review date and is flagged when it falls due - backup checks explain in plain language what they looked at and what to do next Monitor: - disks can be excluded from periodic reads, and an idle disk says so instead of showing a stale temperature - per-disk identity survives a controller or enclosure change - scheduled Borg backups resolve their SSH key from the repository entry - PVE upgrades log the package list and the resulting dpkg changes The web build no longer copies scripts/ into public/: the documentation links to GitHub, so nothing read that folder. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Monitor dashboard translations
The ProxMenux Monitor dashboard uses a small client-side i18n layer.
- English (
en) is the source language and the runtime fallback. - Eight locales are shipped and fully populated end-to-end:
en,de,es,fr,it,pt,sk,sv. Non-English catalogs started from an automated bootstrap and are being polished as native speakers pass through them.
To improve a translation, edit the values in your locale's common.json — keep placeholders such as {uptime}, {vmid} or {count} unchanged, and don't translate brand or product names (ProxMenux Monitor, Proxmox Backup Server, Secure Gateway, Tailscale, etc.). Missing keys fall back to English at runtime, so a partial refresh is always safe to merge.
Backup message composition regressions
From the repository root, run:
node tests/test_backup_archives_empty.cjs
node tests/test_backup_destination_messages.cjs
Prerequisites: Node.js and the typescript development dependency from
AppImage/package.json must be installed/resolvable (normally in
AppImage/node_modules). These tests compile actual JSX message branches and
pure i18n lookup functions without importing the component or calling a backend.
They cover whole English messages, missing-key locale fallback, loading/error
branches, nonempty lists, the removal notice at zero/one/multiple archives,
local-attach help, and unchanged shared labels. They do not replace browser or
real-host acceptance. Keep literal paths in the local-attach help unchanged.
To add a new locale, see §11 → Adding a new locale in the Contributing Guide.