v0.1.4-pre.013

This commit is contained in:
2026-08-16 16:51:11 +02:00
parent 2b343c25de
commit e0f2586400
16 changed files with 549 additions and 20 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-app-config-desk/frontend/ts/environment.ts
// version: 3
// version: 4
//! Safe environment report and `.env` management panel backed exclusively by ConfigManagement.
@@ -10,6 +10,7 @@ import type { ConfigEnvironmentChangeDto } from "./bindings/ksp_app_config_desk/
import type { ConfigEnvironmentReportDto } from "./bindings/ksp_app_config_desk/environment/ConfigEnvironmentReportDto";
import { frontendDebug, frontendTrace } from "./frontend_log";
import { invokeKsp } from "./invoke";
import { initializeSecretReveal, requestSecretReveal } from "./secret_reveal";
interface EnvironmentDataTable {
destroy(): unknown;
@@ -17,6 +18,7 @@ interface EnvironmentDataTable {
let environmentTable: EnvironmentDataTable | null = null;
let currentReports: ConfigEnvironmentReportDto[] = [];
let mutationControlsDisabled = false;
function setEnvironmentStatus(message: string, tone: "primary" | "success" | "warning" | "danger" = "primary"): void {
const status = document.querySelector<HTMLElement>("#environmentStatus");
@@ -163,9 +165,16 @@ function updateEditorSensitivity(): void {
: sensitivity === "invalid"
? "Saisis un nom KSP_* ou KSPB_* ; Config reste l'autorité de validation."
: `${sensitivityLabel(sensitivity)} : la valeur saisie n'est jamais préchargée depuis .env.`;
updateRevealButtons(sensitivity);
frontendTrace("main", "Environment mutation editor sensitivity updated", { sensitivity });
}
function updateRevealButtons(sensitivity = classifyEditorSensitivity(document.querySelector<HTMLInputElement>("#environmentVariableName")?.value.trim() ?? "")): void {
const revealDisabled = mutationControlsDisabled || sensitivity !== "secret";
document.querySelector<HTMLButtonElement>("#revealEnvironmentEffective")?.toggleAttribute("disabled", revealDisabled);
document.querySelector<HTMLButtonElement>("#revealEnvironmentDotenv")?.toggleAttribute("disabled", revealDisabled);
}
function selectVariableForMutation(variableName: string, source: "table" | "input"): void {
const variable = document.querySelector<HTMLInputElement>("#environmentVariableName");
const value = document.querySelector<HTMLInputElement>("#environmentVariableValue");
@@ -218,8 +227,10 @@ function renderMutationResult(result: ConfigEnvironmentChangeDto): void {
}
function setMutationControlsDisabled(disabled: boolean): void {
mutationControlsDisabled = disabled;
document.querySelector<HTMLButtonElement>("#setEnvironmentValue")?.toggleAttribute("disabled", disabled);
document.querySelector<HTMLButtonElement>("#removeEnvironmentValue")?.toggleAttribute("disabled", disabled);
updateRevealButtons();
}
function confirmEnvironmentRemoval(variableName: string): Promise<boolean> {
@@ -380,6 +391,14 @@ function bindEnvironmentActions(): void {
frontendTrace("main", "Environment remove value button clicked");
void removeEnvironmentValue();
});
document.querySelector<HTMLButtonElement>("#revealEnvironmentEffective")?.addEventListener("click", () => {
const variableName = document.querySelector<HTMLInputElement>("#environmentVariableName")?.value.trim() ?? "";
requestSecretReveal(variableName, "effective");
});
document.querySelector<HTMLButtonElement>("#revealEnvironmentDotenv")?.addEventListener("click", () => {
const variableName = document.querySelector<HTMLInputElement>("#environmentVariableName")?.value.trim() ?? "";
requestSecretReveal(variableName, "dotenv");
});
document.querySelector<HTMLButtonElement>("#clearEnvironmentEditor")?.addEventListener("click", () => {
const variable = document.querySelector<HTMLInputElement>("#environmentVariableName");
const value = document.querySelector<HTMLInputElement>("#environmentVariableValue");
@@ -396,6 +415,7 @@ function bindEnvironmentActions(): void {
}
export function initializeEnvironmentPanel(): void {
initializeSecretReveal();
bindEnvironmentActions();
updateEditorSensitivity();
void refreshEnvironmentReport();