feat(studio): localise Settings sidebar + add inline help docs + Approvals doc
Some checks failed
Security / Security check (push) Failing after 1s

Three operator-UX gaps closed:

  - Settings dialog's six-category sidebar (General / Appearance /
    System AI / Integrations / Security / Maintenance) was
    hardcoded English; now flows through AppLocalizations
    ("Allgemein" / "Darstellung" / "System-KI" / "Integrationen" /
    "Sicherheit" / "Wartung"). Same for the per-panel title +
    description.
  - Per-channel daemon-action labels ('enable autostart' /
    'disable autostart' / 'daemon restart' etc.) and the
    OK / Failed result line in the toast also moved to l10n,
    so the system-action feedback reads as one language.
  - New 'Approvals' doc bundle (en + de) under assets/docs/,
    registered as a fifth doc card on Welcome plus exposed via
    the new public  helper. The
    Approvals, Audit and Doctor app-bars grow a Help icon button
    next to Refresh that opens the matching doc in the existing
    bottom-sheet reader — no extra screen, no learning curve.

Studio bumped to 0.67.0; editor path-override pulls in 0.20.1
(flow-list row polish).

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-06-09 01:57:46 +02:00
parent 2be7d241bf
commit 28fafce7dc
15 changed files with 681 additions and 36 deletions

View file

@ -101,6 +101,16 @@ class AppLocalizationsEn extends AppLocalizations {
String get welcomeDocFlowsBlurb =>
'YAML basics, templating reference, the extract→summarize example.';
@override
String get welcomeDocApprovalsTitle => 'Approvals';
@override
String get welcomeDocApprovalsBlurb =>
'Human-in-the-loop checkpoints — when to use them, how the audit log records them.';
@override
String get helpTooltip => 'Help';
@override
String get welcomeDocClose => 'Close';
@ -2328,6 +2338,89 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get doctorPathStudioErrors => 'Studio errors';
@override
String get settingsCategoryGeneral => 'General';
@override
String get settingsCategoryAppearance => 'Appearance';
@override
String get settingsCategoryAi => 'System AI';
@override
String get settingsCategoryIntegrations => 'Integrations';
@override
String get settingsCategorySecurity => 'Security';
@override
String get settingsCategoryMaintenance => 'Maintenance';
@override
String get settingsAiPanelTitle => 'System AI';
@override
String get settingsAiPanelBody =>
'Operator-managed LLM endpoint used by Studio for the AI helpers (system-ai-edit, install-suggest, doctor-summary). No flow ever calls this; modules speak to their own LLM.';
@override
String get settingsIntegrationsPanelTitle => 'Integrations';
@override
String get settingsIntegrationsPanelBody =>
'External tool servers the hub federates capabilities from. MCP servers expose tool-shaped endpoints; n8n endpoints expose hosted workflows.';
@override
String get settingsSecurityPanelTitle => 'Security & credentials';
@override
String get settingsSecurityPanelBody =>
'Tokens the hub holds on the operator\'s behalf. Stored in ~/.fai/ with mode 0600; never sent in telemetry.';
@override
String get settingsMaintenancePanelTitle => 'Maintenance';
@override
String get settingsMaintenancePanelBody =>
'Destructive operations gated behind explicit confirm dialogs. Use when re-pilot-testing or debugging.';
@override
String get tooltipMoveUp => 'Move up';
@override
String get tooltipMoveDown => 'Move down';
@override
String get tooltipRemove => 'Remove';
@override
String get daemonActionEnableAutostart => 'enable autostart';
@override
String get daemonActionDisableAutostart => 'disable autostart';
@override
String get daemonActionRestart => 'daemon restart';
@override
String get daemonActionStart => 'daemon start';
@override
String get daemonActionStop => 'daemon stop';
@override
String get daemonActionStatus => 'daemon status';
@override
String daemonActionResultOk(String label) {
return 'OK · $label';
}
@override
String daemonActionResultFailed(String label) {
return 'Failed · $label';
}
@override
String get addSourceTitle => 'Add module source';