- ~50 feste Texte (deutsch und englisch gemischt) in app.js, api.js, backup, chat, info, instances, logs, services, tasks, organisation ueber t() - Datumsformat folgt der Sprache (war immer de-DE) - status.isApiReachable gab es nie (Feld heisst apiReachable): Kopfzeile und Info-Seite zeigten ohne Guthabentext immer 'offline' - views/placeholders.js entfernt (seit Stufe 1 ungenutzt) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
104 lines
4.1 KiB
JavaScript
104 lines
4.1 KiB
JavaScript
// ClawdDotNet — System-Info & Status
|
|
//
|
|
// Shows application version, instance ID, subsystems, and OpenRouter credits.
|
|
|
|
import { api, holeAktiveInstanz } from "../modules/api.js";
|
|
import { t } from "../modules/i18n.js";
|
|
import {
|
|
erstelleElement,
|
|
erstelleKarte,
|
|
erstellePlakette
|
|
} from "../modules/dom.js";
|
|
|
|
export async function rendereInfo() {
|
|
const container = document.getElementById("ansicht-inhalt");
|
|
if (!container) return;
|
|
container.replaceChildren();
|
|
|
|
const layout = erstelleElement("div", { klasse: "info-ansicht" });
|
|
layout.append(erstelleElement("h1", { text: t("info.title") }));
|
|
|
|
const gitter = erstelleElement("div", { klasse: "info-gitter" });
|
|
layout.append(gitter);
|
|
container.append(layout);
|
|
|
|
if (!holeAktiveInstanz()) {
|
|
gitter.append(
|
|
erstelleKarte(t("info.noInstanceSelected"), [
|
|
erstelleElement("p", {
|
|
klasse: "hinweis",
|
|
text: t("info.noInstanceHint")
|
|
})
|
|
])
|
|
);
|
|
return;
|
|
}
|
|
|
|
gitter.append(
|
|
erstelleElement("div", { klasse: "hinweis-zentriert", text: t("info.loading") })
|
|
);
|
|
|
|
try {
|
|
const [info, status] = await Promise.all([
|
|
api("/info").catch(() => null),
|
|
api("/status").catch(() => null)
|
|
]);
|
|
|
|
gitter.replaceChildren();
|
|
|
|
// 1. Instanz & Version
|
|
if (info) {
|
|
const dlInstanz = erstelleElement("dl", { klasse: "datenliste" });
|
|
dlInstanz.append(
|
|
erstelleElement("dt", { text: t("info.instanceName") }),
|
|
erstelleElement("dd", {}, erstelleElement("strong", { text: info.instanceName })),
|
|
erstelleElement("dt", { text: t("info.instanceId") }),
|
|
erstelleElement("dd", {}, erstelleElement("code", { text: info.instanceId })),
|
|
erstelleElement("dt", { text: t("info.version") }),
|
|
erstelleElement("dd", { text: info.appVersion }),
|
|
erstelleElement("dt", { text: t("info.build") }),
|
|
erstelleElement("dd", { text: info.buildSummary })
|
|
);
|
|
gitter.append(erstelleKarte(t("info.instanceAndVersion"), [dlInstanz]));
|
|
|
|
// 2. Teilsysteme
|
|
const dlSysteme = erstelleElement("dl", { klasse: "datenliste" });
|
|
dlSysteme.append(
|
|
erstelleElement("dt", { text: t("info.agentEngine") }),
|
|
erstelleElement("dd", {}, erstellePlakette(info.engineActive ? (t("status.running")) : (t("status.stopped")), info.engineActive ? "erfolg" : "neutral")),
|
|
erstelleElement("dt", { text: t("info.scheduler") }),
|
|
erstelleElement("dd", {}, erstellePlakette(info.schedulerActive ? (t("status.running")) : (t("status.stopped")), info.schedulerActive ? "erfolg" : "neutral")),
|
|
erstelleElement("dt", { text: t("nav.staging") }),
|
|
erstelleElement("dd", {}, erstellePlakette(info.stagingActive ? (t("status.running")) : (t("status.stopped")), info.stagingActive ? "erfolg" : "neutral")),
|
|
erstelleElement("dt", { text: "Deploymentcenter" }),
|
|
erstelleElement("dd", {}, erstellePlakette(info.deploymentcenterActive ? "OK" : "—", info.deploymentcenterActive ? "erfolg" : "neutral"))
|
|
);
|
|
gitter.append(erstelleKarte(t("info.subsystems"), [dlSysteme]));
|
|
}
|
|
|
|
// 3. OpenRouter / API-Status
|
|
const dlStatus = erstelleElement("dl", { klasse: "datenliste" });
|
|
if (status) {
|
|
dlStatus.append(
|
|
erstelleElement("dt", { text: "API" }),
|
|
erstelleElement("dd", {}, erstellePlakette(status.apiReachable ? t("info.apiOk") : t("info.apiOffline"), status.apiReachable ? "erfolg" : "gefahr")),
|
|
erstelleElement("dt", { text: t("common.status") }),
|
|
erstelleElement("dd", { text: status.statusText || "—" }),
|
|
erstelleElement("dt", { text: t("info.credits") }),
|
|
erstelleElement("dd", {}, erstelleElement("strong", { text: status.creditsText || "—" }))
|
|
);
|
|
} else {
|
|
dlStatus.append(
|
|
erstelleElement("dt", { text: "OpenRouter" }),
|
|
erstelleElement("dd", { klasse: "gedaempft", text: "—" })
|
|
);
|
|
}
|
|
gitter.append(erstelleKarte(t("info.openRouterStatus"), [dlStatus]));
|
|
|
|
} catch (err) {
|
|
gitter.replaceChildren(
|
|
erstelleElement("div", { klasse: "fehler-zentriert", text: err.message })
|
|
);
|
|
}
|
|
}
|