refine post-install and hardware GPU docs, Monitor UX and CLI styling

- rewrite the 15 post-install pages and the 3 hardware GPU pages so they reflect the current scripts (reversibility, tracked-tool counts, kernel parameters, per-tool commands, Alpine LXC propagation flow)
- migrate the legacy step-badge helper on post-install/optional and create-vm/synology to the canonical pill component, with the stepLabel key added in each locale
- fix rich-text i18n calls missing helpers across network, automated, optional, security, customization and the post-install landing pages, and escape the `<iface>` placeholder in automated so intl no longer parses it as a tag
- remove the mouse-follow blue overlay from the docs landing layout
- reposition the App-tab Edit button and stack the Search and Register controls vertically on mobile
- move the Bulk update Configure/Edit control into the section header so it behaves the same on desktop and mobile
- show a spinner during the final autoremove/autoclean pass of update-pve-safe so the cleanup step reads as active instead of silent
- restyle the shell spinner and msg_info in a distinctive purple and drop the unused msg_lang duplicate
- add a web-docs i18n build script and its CI workflow, plus tests for the pushover notification channel
This commit is contained in:
MacRimi
2026-08-26 17:23:09 +02:00
parent b71dd65898
commit fcfe8da765
106 changed files with 3376 additions and 1358 deletions
+13 -19
View File
@@ -5764,14 +5764,22 @@ const handleDownloadLogs = async (vmid: number, vmName: string) => {
{t("vmLxc.bulkUpdate.description")}
</p>
</div>
{!bulkEditMode && bulkConfigured && (
{!bulkEditMode && (
<button
type="button"
onClick={() => setBulkEditMode(true)}
onClick={() => {
if (!bulkConfigured) {
setBulkTargets(["os"])
setBulkError(null)
}
setBulkEditMode(true)
}}
className="h-8 px-3 text-xs rounded-md border border-border bg-background hover:bg-muted transition-colors inline-flex items-center gap-1.5 flex-shrink-0"
>
<Settings2 className="h-3.5 w-3.5" />
{t("vmLxc.bulkUpdate.edit")}
{bulkConfigured
? t("vmLxc.bulkUpdate.edit")
: t("vmLxc.bulkUpdate.configure")}
</button>
)}
</div>
@@ -5932,22 +5940,8 @@ const handleDownloadLogs = async (vmid: number, vmName: string) => {
</div>
</div>
) : (
<div className="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3">
<div className="text-sm text-muted-foreground">
{t("vmLxc.bulkUpdate.notConfigured")}
</div>
<button
type="button"
onClick={() => {
setBulkTargets(["os"])
setBulkEditMode(true)
setBulkError(null)
}}
className="h-8 px-3 text-xs rounded-md border border-border bg-background hover:bg-muted transition-colors inline-flex items-center justify-center gap-1.5 flex-shrink-0"
>
<Settings2 className="h-3.5 w-3.5" />
{t("vmLxc.bulkUpdate.configure")}
</button>
<div className="text-sm text-muted-foreground">
{t("vmLxc.bulkUpdate.notConfigured")}
</div>
)}