fix(approvals,l10n,theme): usertest findings — localized prompts, no-data confirm, .chain log path, honest wording, AA contrast
Some checks failed
Security / Security check (push) Failing after 2s

- approvals: empty/legacy hub prompts render the localized fallback;
  approving without show: data asks for conscious confirmation first
- chain_log: write to ~/.chain/logs/studio-errors.log (was .fai),
  one-time best-effort migration of the legacy file + rotation sibling
- l10n: 'manipulationssicher' -> 'manipulationserkennend', neutral
  WORM-1 blurb, doctor pill 'Integritätskette v1', federation hint
  says the CA authenticates the first connect (DE+EN)
- theme: muted text token now >=4.5:1 on canvas, cards and elevated
  dark surfaces (was 3.7:1 on cards)

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-07-11 02:38:24 +02:00
parent 0fda2600ad
commit bb606a8b23
10 changed files with 167 additions and 26 deletions

View file

@ -110,7 +110,7 @@ class AppLocalizationsDe extends AppLocalizations {
'Jedes Modul bringt eine explizite Berechtigungsliste mit — Netzwerk-Endpunkte, Dateien, Umgebungsvariablen. Der Hub setzt sie durch; ohne Operator-Freigabe verlässt nichts die Sandbox.';
@override
String get welcomeTrustAuditTitle => 'Manipulationssicheres Audit-Log';
String get welcomeTrustAuditTitle => 'Manipulationserkennendes Audit-Log';
@override
String get welcomeTrustAuditBody =>
@ -145,11 +145,11 @@ class AppLocalizationsDe extends AppLocalizations {
'Was ein Modul deklariert, was der Operator deckelt, was der Hub durchsetzt.';
@override
String get welcomeDocAuditTitle => 'Manipulationssicheres Audit-Log';
String get welcomeDocAuditTitle => 'Manipulationserkennendes Audit-Log';
@override
String get welcomeDocAuditBlurb =>
'Wie die Hash-Kette funktioniert und warum WORM-1 für KRITIS reicht.';
'Wie die Hash-Kette nachträgliche Änderungen erkennbar macht — und was die Integritätsstufe WORM-1 leistet (und was nicht).';
@override
String get welcomeDocFlowsTitle => 'Flow-Komposition';
@ -1871,6 +1871,16 @@ class AppLocalizationsDe extends AppLocalizations {
String get approvalsNoPayload =>
'Keine Daten zum Prüfen angehängt. Der system.approval-Schritt des Flows bestimmt über sein \"show:\"-Feld, was angezeigt wird — setze es, um die Daten hinter dieser Entscheidung sichtbar zu machen.';
@override
String get approvalsNoDataConfirmTitle => 'Ohne Prüfdaten freigeben?';
@override
String get approvalsNoDataConfirmBody =>
'Dieser Flow hat bewusst keine Prüfdaten hinterlegt (kein \"show:\" am Freigabe-Schritt). Du kannst trotzdem freigeben — entscheidest dann aber, ohne die Daten hinter dieser Entscheidung gesehen zu haben.';
@override
String get approvalsNoDataConfirmAction => 'Trotzdem freigeben';
@override
String get approvalsRequestFallback =>
'Freigabe für diesen Schritt erforderlich';
@ -2043,7 +2053,7 @@ class AppLocalizationsDe extends AppLocalizations {
}
@override
String get doctorChainPillOk => 'WORM-1';
String get doctorChainPillOk => 'Integritätskette v1';
@override
String get doctorChainPillTamper => 'MANIPULIERT';
@ -2860,5 +2870,5 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get federationEnrollmentHint =>
'Übergib das Token dem Satelliten-Betreiber über einen sicheren Kanal. Die mitgelieferte CA macht den ersten Connect des Satelliten manipulationssicher.';
'Übergib das Token dem Satelliten-Betreiber über einen sicheren Kanal. Die mitgelieferte CA authentifiziert den ersten Connect des Satelliten.';
}