eep only package-changing executions and clean up entry presentation

This commit is contained in:
MacRimi
2026-09-11 08:37:23 +02:00
parent ca7c9ec58e
commit 8e0d4ff337
20 changed files with 80 additions and 81 deletions
+11 -2
View File
@@ -78,6 +78,7 @@ function operationLabelKey(change: { operation: string; capture: string }): stri
function undoKey(change: { revert: string; exactness: string }): string {
if (change.revert === "remove") return "undo.remove"
if (change.revert === "restore" && change.exactness === "exact") return "undo.restore"
if (change.revert === "purge") return "undo.purge"
return `exactness.${change.exactness}`
}
@@ -128,6 +129,10 @@ const FN_LABEL: Record<string, string> = {
// else is a general host script (nvidia/tpu installers, PVE update, vfio…).
const POST_INSTALL_SOURCES = new Set(["auto", "customizable"])
// A few sources deserve a friendly name instead of a raw script identifier;
// everything else shows the script it came from.
const FRIENDLY_SOURCE = new Set(["install_proxmenux"])
// Which of the three sections a change belongs to: installations are their
// own block, post-install optimizations another, general scripts the rest.
function blockOf(c: { class: string; source: string }): "installs" | "postInstall" | "scripts" {
@@ -399,7 +404,11 @@ export function AuditChanges() {
// install sections group by the script that made the change, and show
// that script's name — not a per-function label.
const key = b === "postInstall" ? (c.function || c.source || "—") : (c.source || c.function || "—")
const label = b === "postInstall" ? groupLabel(c.function, c.source) : (c.source || c.function || "—")
const label = b === "postInstall"
? groupLabel(c.function, c.source)
: FRIENDLY_SOURCE.has(c.source)
? t(`audit.changes.scriptLabel.${c.source}`)
: (c.source || c.function || "—")
const g = target.get(key) || { key, label, version: "", last: 0, items: [] }
g.items.push(c)
if (c.recorded_at > g.last) g.last = c.recorded_at
@@ -408,7 +417,7 @@ export function AuditChanges() {
}
const sort = (m: Map<string, Group>) => Array.from(m.values()).sort((a, b) => b.last - a.last)
return { post: sort(post), scripts: sort(scripts), installs: sort(installs) }
}, [changes])
}, [changes, t])
const when = (epoch: number) => new Date(epoch * 1000).toLocaleString(language)
+6 -2
View File
@@ -5877,7 +5877,7 @@
"failed": "Das Änderungsjournal war nicht lesbar",
"intro": "Was ProxMenux auf diesem Host geändert hat und was vor jeder Änderung vorhanden war. Gezeigt wird die Differenz.",
"empty": "Auf diesem Host wurde noch nichts aufgezeichnet.",
"since": "Aufzeichnung seit {date}. Früher Angewandtes erscheint als angewandt, ohne den ersetzten Zustand.",
"since": "Aufzeichnung seit {date}.",
"byFunction": "Nach Funktion",
"count": "{count} Änderungen",
"function": "Funktion",
@@ -5924,12 +5924,16 @@
},
"undo": {
"remove": "Löscht die Datei (vorher war keine vorhanden)",
"restore": "Stellt exakt den vorherigen Zustand wieder her"
"restore": "Stellt exakt den vorherigen Zustand wieder her",
"purge": "Das Paket kann deinstalliert werden"
},
"section": {
"postInstall": "Post-Install-Optimierungen",
"scripts": "ProxMenux-Skripte",
"installs": "Installierte Pakete und Werkzeuge"
},
"scriptLabel": {
"install_proxmenux": "ProxMenux-Installer"
}
},
"comparison": {
+6 -2
View File
@@ -5943,7 +5943,7 @@
"failed": "The change journal could not be read",
"intro": "What ProxMenux changed on this host and what was there before each change. The difference is shown.",
"empty": "Nothing has been recorded on this host yet.",
"since": "Recording since {date}. Anything applied before that appears as applied, without the state it replaced.",
"since": "Recording since {date}.",
"byFunction": "By function",
"count": "{count} changes",
"function": "Function",
@@ -5990,12 +5990,16 @@
},
"undo": {
"remove": "Deletes the file (there was none before)",
"restore": "Restores exactly what was there"
"restore": "Restores exactly what was there",
"purge": "The package can be uninstalled"
},
"section": {
"postInstall": "Post-install optimizations",
"scripts": "ProxMenux scripts",
"installs": "Installed packages and utilities"
},
"scriptLabel": {
"install_proxmenux": "ProxMenux installer"
}
},
"comparison": {
+6 -2
View File
@@ -5877,7 +5877,7 @@
"failed": "No se ha podido leer el registro de cambios",
"intro": "Qué ha cambiado ProxMenux en este host y qué había antes de cada cambio. Se muestra la diferencia.",
"empty": "Todavía no se ha registrado nada en este host.",
"since": "Registrando desde el {date}. Lo aplicado antes figura como aplicado, sin el estado al que sustituyó.",
"since": "Registrando desde el {date}.",
"byFunction": "Por función",
"count": "{count} cambios",
"function": "Función",
@@ -5924,12 +5924,16 @@
},
"undo": {
"remove": "Elimina el fichero (no había ninguno antes)",
"restore": "Restaura exactamente lo que había"
"restore": "Restaura exactamente lo que había",
"purge": "Se puede desinstalar el paquete"
},
"section": {
"postInstall": "Optimizaciones de post-install",
"scripts": "Scripts de ProxMenux",
"installs": "Paquetes y utilidades instalados"
},
"scriptLabel": {
"install_proxmenux": "Instalador de ProxMenux"
}
},
"comparison": {
+6 -2
View File
@@ -5877,7 +5877,7 @@
"failed": "Le journal des modifications n'a pas pu être lu",
"intro": "Ce que ProxMenux a changé sur cet hôte et ce qui existait avant chaque changement. C'est la différence qui est montrée.",
"empty": "Rien n'a encore été enregistré sur cet hôte.",
"since": "Enregistrement depuis le {date}. Ce qui a été appliqué avant figure comme appliqué, sans l'état remplacé.",
"since": "Enregistrement depuis le {date}.",
"byFunction": "Par fonction",
"count": "{count} modifications",
"function": "Fonction",
@@ -5924,12 +5924,16 @@
},
"undo": {
"remove": "Supprime le fichier (il n'y en avait aucun avant)",
"restore": "Restaure exactement ce qui existait"
"restore": "Restaure exactement ce qui existait",
"purge": "Le paquet peut être désinstallé"
},
"section": {
"postInstall": "Optimisations post-installation",
"scripts": "Scripts ProxMenux",
"installs": "Paquets et utilitaires installés"
},
"scriptLabel": {
"install_proxmenux": "Programme d'installation de ProxMenux"
}
},
"comparison": {
+6 -2
View File
@@ -5877,7 +5877,7 @@
"failed": "Non è stato possibile leggere il registro delle modifiche",
"intro": "Cosa ha cambiato ProxMenux su questo host e cosa c'era prima di ogni modifica. Viene mostrata la differenza.",
"empty": "Su questo host non è ancora stato registrato nulla.",
"since": "Registrazione dal {date}. Ciò che è stato applicato prima risulta applicato, senza lo stato sostituito.",
"since": "Registrazione dal {date}.",
"byFunction": "Per funzione",
"count": "{count} modifiche",
"function": "Funzione",
@@ -5924,12 +5924,16 @@
},
"undo": {
"remove": "Elimina il file (prima non ce n'era nessuno)",
"restore": "Ripristina esattamente ciò che c'era"
"restore": "Ripristina esattamente ciò che c'era",
"purge": "Il pacchetto può essere disinstallato"
},
"section": {
"postInstall": "Ottimizzazioni post-installazione",
"scripts": "Script di ProxMenux",
"installs": "Pacchetti e utilità installati"
},
"scriptLabel": {
"install_proxmenux": "Installer di ProxMenux"
}
},
"comparison": {
+6 -2
View File
@@ -5877,7 +5877,7 @@
"failed": "Não foi possível ler o registo de alterações",
"intro": "O que o ProxMenux alterou neste host e o que existia antes de cada alteração. Mostra-se a diferença.",
"empty": "Ainda não foi registado nada neste anfitrião.",
"since": "A registar desde {date}. O que foi aplicado antes figura como aplicado, sem o estado que substituiu.",
"since": "A registar desde {date}.",
"byFunction": "Por função",
"count": "{count} alterações",
"function": "Função",
@@ -5924,12 +5924,16 @@
},
"undo": {
"remove": "Elimina o ficheiro (não existia nenhum antes)",
"restore": "Restaura exatamente o que existia"
"restore": "Restaura exatamente o que existia",
"purge": "O pacote pode ser desinstalado"
},
"section": {
"postInstall": "Otimizações pós-instalação",
"scripts": "Scripts do ProxMenux",
"installs": "Pacotes e utilitários instalados"
},
"scriptLabel": {
"install_proxmenux": "Instalador do ProxMenux"
}
},
"comparison": {
+6 -2
View File
@@ -5943,7 +5943,7 @@
"failed": "Denník zmien sa nepodarilo prečítať",
"intro": "Čo ProxMenux na tomto hostiteľovi zmenil a čo tam bolo pred každou zmenou. Zobrazuje sa rozdiel.",
"empty": "Na tomto hostiteľovi zatiaľ nebolo nič zaznamenané.",
"since": "Zaznamenáva sa od {date}. Čo bolo použité skôr, figuruje ako použité, bez stavu, ktorý nahradilo.",
"since": "Zaznamenáva sa od {date}.",
"byFunction": "Podľa funkcie",
"count": "{count} zmien",
"function": "Funkcia",
@@ -5990,12 +5990,16 @@
},
"undo": {
"remove": "Odstráni súbor (predtým žiadny nebol)",
"restore": "Obnoví presne to, čo tam bolo"
"restore": "Obnoví presne to, čo tam bolo",
"purge": "Balík možno odinštalovať"
},
"section": {
"postInstall": "Optimalizácie po inštalácii",
"scripts": "Skripty ProxMenux",
"installs": "Nainštalované balíky a nástroje"
},
"scriptLabel": {
"install_proxmenux": "Inštalátor ProxMenux"
}
},
"comparison": {
+6 -2
View File
@@ -5878,7 +5878,7 @@
"failed": "Ändringsjournalen kunde inte läsas",
"intro": "Vad ProxMenux ändrat på den här värden och vad som fanns före varje ändring. Skillnaden visas.",
"empty": "Inget har ännu registrerats på den här värden.",
"since": "Registrerar sedan {date}. Det som tillämpades dessförinnan står som tillämpat, utan det tillstånd det ersatte.",
"since": "Registrerar sedan {date}.",
"byFunction": "Per funktion",
"count": "{count} ändringar",
"function": "Funktion",
@@ -5925,12 +5925,16 @@
},
"undo": {
"remove": "Tar bort filen (det fanns ingen tidigare)",
"restore": "Återställer exakt vad som fanns"
"restore": "Återställer exakt vad som fanns",
"purge": "Paketet kan avinstalleras"
},
"section": {
"postInstall": "Optimeringar efter installation",
"scripts": "ProxMenux-skript",
"installs": "Installerade paket och verktyg"
},
"scriptLabel": {
"install_proxmenux": "ProxMenux-installerare"
}
},
"comparison": {