All checks were successful
CI / Lint, typecheck, test (pull_request) Successful in 6m12s
CI / Build container images (pull_request) Successful in 4m2s
CI / Auth e2e pack (pull_request) Successful in 8m29s
CI / Import/export fidelity gate (pull_request) Successful in 54s
CD / Build and push images (push) Successful in 31s
CD / Deploy to Test (push) Successful in 14s
CD / Smoke tests against Test (push) Successful in 1m29s
CD / Promote to Int (push) Successful in 14s
CI / Build container images (push) Has been skipped
CI / Lint, typecheck, test (push) Successful in 6m30s
CI / Auth e2e pack (push) Successful in 8m6s
CI / Import/export fidelity gate (push) Successful in 57s
The deployment declares through VS_NFD_MODE (off | marked | hidden | enforced, default off) how the application treats configuration that violates the VS-NfD reference profile — deploy-level like BACKUP_ALLOWED_TARGETS, so a compromised Site Admin cannot widen it. The catalog in shared (vs-nfd-profile.ts) is the single source of truth: every profile-relevant setting with a decidable compliant value, judgement calls in an explicit advisory list, and a fence test parsing the hardening guide's reference tables so neither can drift (pattern #201). The api evaluates the catalog against the typed settings registry and validated env and exposes mode + verdict on GET /admin/system/vs-nfd-profile; the admin settings view shows the card whenever the mode is not off. Display only — the treatments land with #244–#246 (ADR 0027, proposed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AUtYMxwTCMHG9mVHnwbFg8
109 lines
4.8 KiB
JSON
109 lines
4.8 KiB
JSON
{
|
||
"title": "Einstellungen",
|
||
"profile": {
|
||
"title": "Profil",
|
||
"displayName": "Anzeigename",
|
||
"locale": "Sprache",
|
||
"locales": {
|
||
"de": "Deutsch",
|
||
"en": "English"
|
||
},
|
||
"save": "Speichern",
|
||
"saved": "Gespeichert."
|
||
},
|
||
"password": {
|
||
"title": "Passwort ändern",
|
||
"current": "Aktuelles Passwort",
|
||
"new": "Neues Passwort",
|
||
"submit": "Passwort ändern",
|
||
"changed": "Passwort geändert. Andere Geräte wurden abgemeldet."
|
||
},
|
||
"sessions": {
|
||
"title": "Aktive Sitzungen",
|
||
"current": "Diese Sitzung",
|
||
"created": "Angemeldet",
|
||
"lastSeen": "Zuletzt aktiv",
|
||
"device": "Gerät",
|
||
"revoke": "Abmelden",
|
||
"revokeAll": "Alle anderen Sitzungen abmelden",
|
||
"empty": "Keine weiteren aktiven Sitzungen."
|
||
},
|
||
"dataExport": {
|
||
"title": "Meine Daten exportieren",
|
||
"description": "Lade ein ZIP mit deinem Profil, einer Liste deiner Mitgliedschaften und dem Markdown-Export deines persönlichen Teichs sowie der Teiche, die dir gehören.",
|
||
"request": "Export vorbereiten",
|
||
"preparing": "Dein Export wird vorbereitet…",
|
||
"download": "Export herunterladen",
|
||
"ready": "Dein Export ist bereit.",
|
||
"expiresHint": "Der Download-Link läuft am {{when}} ab.",
|
||
"failed": "Der Export konnte nicht erstellt werden. Bitte versuche es erneut.",
|
||
"rateLimited": "Du hast kürzlich einen Export angefordert. Bitte versuche es später erneut."
|
||
},
|
||
"admin": {
|
||
"title": "Administration",
|
||
"general": "Allgemein",
|
||
"instanceName": "Name der Instanz",
|
||
"defaultLocale": "Standardsprache",
|
||
"registrationMode": "Selbst-Registrierung",
|
||
"registrationOpen": "Offen — alle können sich registrieren",
|
||
"registrationClosed": "Geschlossen — keine neuen Registrierungen",
|
||
"save": "Speichern",
|
||
"saved": "Gespeichert.",
|
||
"newPageClassification": "Einstufung neuer Seiten",
|
||
"newPageClassificationHelp": "Standard-Einstufung (VS-NfD-Kennzeichnung) für neu angelegte Seiten. Die Kennzeichnung ist keine Zugriffskontrolle; die Trennung von Einstufungsniveaus leistet die Umgebung (eine Instanz je Niveau).",
|
||
"classificationUnclassified": "Offen — keine Kennzeichnung",
|
||
"classificationVsNfd": "VS – NUR FÜR DEN DIENSTGEBRAUCH",
|
||
"uploadPolicy": "Datei-Uploads auf eingestufte Seiten",
|
||
"uploadPolicyHelp": "Anhänge erben die Einstufung der Seite, tragen selbst aber keine Kennzeichnung im Inhalt. „Blockieren\" lehnt Uploads auf eingestufte Seiten serverseitig ab.",
|
||
"uploadPolicyWarn": "Warnen — Upload mit deutlichem Hinweis erlauben",
|
||
"uploadPolicyBlock": "Blockieren — Uploads auf eingestufte Seiten ablehnen",
|
||
"vsNfd": {
|
||
"title": "VS-NfD-Profil",
|
||
"intro": "Das Deployment vergleicht die laufende Konfiguration mit der Referenzkonfiguration des Härtungsleitfadens (Deploy-Variable VS_NFD_MODE).",
|
||
"modeLabel": "Aktiver Modus",
|
||
"modes": {
|
||
"marked": "markiert — Abweichungen werden angezeigt",
|
||
"hidden": "ausgeblendet — abweichende Optionen werden nicht angeboten",
|
||
"enforced": "erzwungen — abweichende Konfiguration wird serverseitig abgewiesen"
|
||
},
|
||
"compliant": "Die laufende Konfiguration entspricht der Referenzkonfiguration.",
|
||
"violations_one": "{{count}} Einstellung weicht von der Referenzkonfiguration ab:",
|
||
"violations_other": "{{count}} Einstellungen weichen von der Referenzkonfiguration ab:",
|
||
"referenceValue": "Referenzwert: {{value}}",
|
||
"guideRef": "Härtungsleitfaden §{{section}}"
|
||
}
|
||
},
|
||
"landing": {
|
||
"title": "Startseite",
|
||
"hint": "Inhalt der öffentlichen Startseite (/) als Markdown. Leer lassen zeigt den eingebauten Willkommenstext.",
|
||
"label": "Startseiten-Inhalt (Markdown)",
|
||
"save": "Startseite speichern",
|
||
"saved": "Gespeichert."
|
||
},
|
||
"appearance": {
|
||
"title": "Erscheinungsbild",
|
||
"legend": "Farbschema",
|
||
"light": "Hell",
|
||
"dark": "Dunkel",
|
||
"system": "Systemeinstellung",
|
||
"hint": "„Systemeinstellung“ folgt dem Hell-/Dunkel-Modus des Geräts. Gilt für dieses Gerät.",
|
||
"cycle": "Farbschema wechseln (aktuell: {{mode}})",
|
||
"accentLegend": "Akzentfarbe",
|
||
"presets": {
|
||
"pond-green": "Teichgrün (Standard)",
|
||
"lake-blue": "Seeblau",
|
||
"iris-violet": "Irisviolett",
|
||
"reed-teal": "Schilftürkis",
|
||
"stone-slate": "Steingrau"
|
||
},
|
||
"custom": "Eigene Farbe",
|
||
"customPick": "Eigene Akzentfarbe wählen",
|
||
"accentHint": "Die gewählte Farbe wird je Modus automatisch heller oder dunkler angepasst, damit Texte lesbar bleiben. Gilt für dieses Gerät."
|
||
},
|
||
"interaction": {
|
||
"title": "Bedienung",
|
||
"disableSingleKey": "Einzeltasten-Kürzel deaktivieren",
|
||
"disableSingleKeyHint": "Schaltet die Kürzel „e“ (Bearbeiten) und „/“ (Suche) ab — hilfreich bei Spracheingabe. Gilt für dieses Gerät."
|
||
}
|
||
}
|