fix(studio): chain config dir + spawn path + doc URLs
Some checks failed
Security / Security check (push) Failing after 2s

Track the platform rename: the hub spawn path is now ~/.chain/bin/chain
(was ~/.fai/bin/fai.exe on Windows — both dir and binary were stale, so
Studio could not launch the hub after the config-dir rename), the
~/.fai/* help strings become ~/.chain/*, FAI_REGISTRY_TOKEN ->
CHAIN_REGISTRY_TOKEN, and the two in-app doc URLs point at the public
fai/chain repo (fai/platform was renamed to the private fai/chain-private).
The .fai module bundle extension is left unchanged (format phase).
flutter analyze: no issues.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-06-16 09:38:30 +02:00
parent 7ff4fda2a3
commit 0f93d90963
18 changed files with 121 additions and 121 deletions

View file

@ -37,7 +37,7 @@
"errOutputTooLarge": "Step-Output hat die Größenbegrenzung überschritten.",
"errOutputTooLargeHint": "Entweder Output kürzen (Text truncaten, Bytes komprimieren) oder `max_output_size_mb` in der Operator-Config erhöhen.",
"errServiceUnavailableForStep": "Host-Service nicht konfiguriert.",
"errServiceUnavailableForStepHint": "Das Modul braucht einen Service (z.B. ollama, playwright), den der Operator nicht deklariert hat. Trage ihn unter `services:` in ~/.fai/config.yaml ein.",
"errServiceUnavailableForStepHint": "Das Modul braucht einen Service (z.B. ollama, playwright), den der Operator nicht deklariert hat. Trage ihn unter `services:` in ~/.chain/config.yaml ein.",
"errMissingValue": "Pflichtwert fehlt.",
"errMissingValueHint": "Der Step erwartet eine Eingabe, die nicht verdrahtet ist — entweder zur Laufzeit liefern oder den vorgelagerten `$ref` korrigieren.",
"errMcpUnreachable": "MCP-Endpunkt nicht erreichbar.",
@ -148,7 +148,7 @@
"settingsHubEndpointHint": "Wohin soll Studio sich verbinden? Standard ist der lokale Hub auf 127.0.0.1:50051.",
"settingsTlsSubtitle": "https/grpc-secure",
"settingsPortError": "Port muss 165535 sein",
"channelsBlurb": "Hub-Kanal wechseln (schreibt ~/.fai/current-channel und startet den Daemon neu). Verbinden ändert nur die Wire von Studio.",
"channelsBlurb": "Hub-Kanal wechseln (schreibt ~/.chain/current-channel und startet den Daemon neu). Verbinden ändert nur die Wire von Studio.",
"channelsActionsTooltip": "Kanal-Aktionen",
"systemAiHeader": "SYSTEM-AI",
"systemAiEnabled": "aktiv",
@ -433,7 +433,7 @@
"storeOpenRepoButton": "Repository im Browser öffnen",
"storeDocsErrorNotFound": "Dieses Modul ist nicht im Store-Index des Hubs enthalten.",
"storeDocsErrorNoDocs": "Für dieses Modul ist keine Repository-URL hinterlegt.",
"storeDocsErrorAuth": "Die Registry erfordert Authentifizierung, um dieses README zu laden. Setze FAI_REGISTRY_TOKEN in der Umgebung des Daemons und starte den Hub neu.",
"storeDocsErrorAuth": "Die Registry erfordert Authentifizierung, um dieses README zu laden. Setze CHAIN_REGISTRY_TOKEN in der Umgebung des Daemons und starte den Hub neu.",
"storeDocsErrorNetwork": "Netzwerkfehler beim Laden des README. {detail}",
"@storeDocsErrorNetwork": {
"placeholders": {
@ -607,7 +607,7 @@
"auditClearLogButton": "Log löschen",
"modulesTitle": "Module",
"modulesNoneTitle": "Noch keine Module",
"modulesNoneHint": "`chain install <capability-name>` ausführen oder ~/.fai/modules/ prüfen.",
"modulesNoneHint": "`chain install <capability-name>` ausführen oder ~/.chain/modules/ prüfen.",
"modulesReloadTooltip": "Aktualisieren",
"modulesRecentActivity": "LETZTE AKTIVITÄT",
"modulesRecentActivityHint": "letzte {n} install/uninstall-Ereignisse aus dem Audit-Log",
@ -758,7 +758,7 @@
}
},
"registryCredentialsHeader": "REGISTRY-ZUGANGSDATEN",
"registryCredentialsBlurb": "Token zum Herunterladen von .fai-Modulen aus einer Registry mit Anmeldepflicht (Forgejo, private GitHub-Repos). Gespeichert in ~/.fai/registry-token, Modus 0600. Die Umgebungsvariable FAI_REGISTRY_TOKEN hat weiterhin Vorrang, wenn gesetzt.",
"registryCredentialsBlurb": "Token zum Herunterladen von .fai-Modulen aus einer Registry mit Anmeldepflicht (Forgejo, private GitHub-Repos). Gespeichert in ~/.chain/registry-token, Modus 0600. Die Umgebungsvariable CHAIN_REGISTRY_TOKEN hat weiterhin Vorrang, wenn gesetzt.",
"registryTokenStatusConfigured": "Konfiguriert ({chars} Zeichen)",
"@registryTokenStatusConfigured": {
"placeholders": {
@ -772,7 +772,7 @@
"registryTokenFieldHint": "Forgejo- oder GitHub-PAT einfügen",
"registryTokenSaveButton": "Speichern",
"registryTokenClearButton": "Entfernen",
"registryTokenStorageHint": "Lokal gespeichert in ~/.fai/registry-token. Wird nie an einen Remote-Dienst übertragen.",
"registryTokenStorageHint": "Lokal gespeichert in ~/.chain/registry-token. Wird nie an einen Remote-Dienst übertragen.",
"registryTokenSavedToast": "Registry-Token gespeichert.",
"registryTokenClearedToast": "Registry-Token entfernt.",
"registryTokenSaveFailedToast": "Speichern fehlgeschlagen: {error}",
@ -784,7 +784,7 @@
}
},
"hubAuthTokenHeader": "HUB-AUTHENTIFIZIERUNG",
"hubAuthTokenBlurb": "Bearer-Token für die Studio-Anbindung an einen Hub mit aktivierter auth.tokens-Konfiguration (RBAC Level 2). Gespeichert in ~/.fai/hub-auth-token, Modus 0600. Studio sendet ihn als Authorization: Bearer bei jedem gRPC-Aufruf.",
"hubAuthTokenBlurb": "Bearer-Token für die Studio-Anbindung an einen Hub mit aktivierter auth.tokens-Konfiguration (RBAC Level 2). Gespeichert in ~/.chain/hub-auth-token, Modus 0600. Studio sendet ihn als Authorization: Bearer bei jedem gRPC-Aufruf.",
"hubAuthTokenStatusConfigured": "Eingerichtet ({chars} Zeichen)",
"@hubAuthTokenStatusConfigured": {
"placeholders": {
@ -798,7 +798,7 @@
"hubAuthTokenFieldHint": "Token aus dem auth.tokens-Eintrag des Hub-Operators einfügen",
"hubAuthTokenSaveButton": "Speichern",
"hubAuthTokenClearButton": "Entfernen",
"hubAuthTokenStorageHint": "Lokal gespeichert in ~/.fai/hub-auth-token. Studio verbindet nach dem Speichern automatisch neu, der Token wirkt sofort.",
"hubAuthTokenStorageHint": "Lokal gespeichert in ~/.chain/hub-auth-token. Studio verbindet nach dem Speichern automatisch neu, der Token wirkt sofort.",
"hubAuthTokenSavedToast": "Hub-Token gespeichert.",
"hubAuthTokenClearedToast": "Hub-Token entfernt.",
"hubAuthTokenSaveFailedToast": "Speichern fehlgeschlagen: {error}",
@ -830,15 +830,15 @@
"defaultScopeLoadFailed": "Standard-Scope konnte nicht geladen werden.",
"defaultScopeNonEmptyError": "Standard-Scope darf nicht leer sein — mindestens ein Segment muss erhalten bleiben.",
"maintenanceHeader": "HUB-WARTUNG",
"maintenanceResetBlurb": "Operator-Zustand zurücksetzen und mit einem sauberen Hub neu starten. Stoppt jeden laufenden Daemon, sichert ~/.fai/ atomar in ein Backup, legt es dann neu an — Binary, Channel-Pointer, MCP-/n8n-/System-AI-Konfiguration und Registry-Token bleiben erhalten. Wiederherstellen durch Zurückverschieben des Backup-Ordners.",
"maintenanceResetBlurb": "Operator-Zustand zurücksetzen und mit einem sauberen Hub neu starten. Stoppt jeden laufenden Daemon, sichert ~/.chain/ atomar in ein Backup, legt es dann neu an — Binary, Channel-Pointer, MCP-/n8n-/System-AI-Konfiguration und Registry-Token bleiben erhalten. Wiederherstellen durch Zurückverschieben des Backup-Ordners.",
"maintenanceKeepModulesTitle": "Installierte Module behalten",
"maintenanceKeepModulesSubtitle": "Standardverhalten löscht ~/.fai/modules/, damit eine frische Installation den Modul-Bezugspfad end-to-end verifizieren kann.",
"maintenanceKeepModulesSubtitle": "Standardverhalten löscht ~/.chain/modules/, damit eine frische Installation den Modul-Bezugspfad end-to-end verifizieren kann.",
"maintenanceKeepDataTitle": "Protokoll + gespeicherte Flows behalten",
"maintenanceKeepDataSubtitle": "Standardverhalten löscht ~/.fai/data/, damit die Audit-Kette mit einer neuen Genesis startet und die mitgelieferten Sample-Flows beim ersten Daemon-Start neu importiert werden.",
"maintenanceKeepDataSubtitle": "Standardverhalten löscht ~/.chain/data/, damit die Audit-Kette mit einer neuen Genesis startet und die mitgelieferten Sample-Flows beim ersten Daemon-Start neu importiert werden.",
"maintenanceResetButton": "Hub zurücksetzen",
"maintenanceResetInProgress": "Zurücksetzen…",
"maintenanceResetConfirmTitle": "Hub zurücksetzen?",
"maintenanceResetConfirmBody": "Stoppt jeden Daemon, verschiebt ~/.fai/ in ein Backup mit Zeitstempel und startet sauber neu. Das Backup ist vollständig wiederherstellbar. Fortfahren?",
"maintenanceResetConfirmBody": "Stoppt jeden Daemon, verschiebt ~/.chain/ in ein Backup mit Zeitstempel und startet sauber neu. Das Backup ist vollständig wiederherstellbar. Fortfahren?",
"maintenanceResetConfirmButton": "Zurücksetzen",
"welcomeChecklistAllSetTitle": "Du bist eingerichtet.",
"welcomeChecklistAllSetBody": "Drei Stränge, an denen du als nächstes ziehen kannst:",
@ -948,15 +948,15 @@
"errNotFoundHint": "Das Angefragte ist nicht hier — entweder entfernt oder nie existiert.",
"errAlreadyExists": "Existiert bereits.",
"errPermissionDenied": "Berechtigung verweigert.",
"errPermissionDeniedHint": "Die Operator-Policy des Hubs blockiert diese Aktion. `~/.fai/config.yaml` prüfen.",
"errPermissionDeniedHint": "Die Operator-Policy des Hubs blockiert diese Aktion. `~/.chain/config.yaml` prüfen.",
"errFailedPrecondition": "Setup-Problem hat das blockiert.",
"errFailedPreconditionHint": "Der Hub konnte nicht weiter, weil etwas Vorausgesetztes fehlt. Details unten erklären was.",
"errInternal": "Unerwarteter interner Fehler.",
"errInternalHint": "Hub-Logs unter `~/.fai/logs/` prüfen. Wenn das öfter passiert, bitte melden.",
"errInternalHint": "Hub-Logs unter `~/.chain/logs/` prüfen. Wenn das öfter passiert, bitte melden.",
"errUnavailable": "Hub nicht erreichbar.",
"errUnavailableHint": "Sicherstellen, dass `chain serve` (oder `chain daemon start`) läuft und der Daemon-Endpunkt zu Studios Einstellungen passt.",
"errUnauthenticated": "Authentifizierung erforderlich.",
"errUnauthenticatedHint": "`FAI_REGISTRY_TOKEN` setzen oder in den Einstellungen anmelden, dann erneut versuchen.",
"errUnauthenticatedHint": "`CHAIN_REGISTRY_TOKEN` setzen oder in den Einstellungen anmelden, dann erneut versuchen.",
"errCopyDetail": "Detail kopieren",
"errDetailCopied": "Detail in die Zwischenablage kopiert.",
"flowsOutputUnknown": "Unbekannter Output-Payload-Typ.",
@ -1111,7 +1111,7 @@
},
"doctorApprovalsAttentionPill": "wichtig",
"doctorServicesEmpty": "Keine Host-Dienste deklariert",
"doctorServicesEmptyHint": "in ~/.fai/config.yaml unter services: hinzufügen",
"doctorServicesEmptyHint": "in ~/.chain/config.yaml unter services: hinzufügen",
"doctorPillLoaded": "geladen",
"doctorPillEmpty": "leer",
"doctorRecheckTooltip": "Erneut prüfen",
@ -1477,7 +1477,7 @@
"settingsIntegrationsPanelTitle": "Integrationen",
"settingsIntegrationsPanelBody": "Externe Tool-Server, deren Capabilities der Hub föderiert. MCP-Server bieten Tool-Endpunkte; n8n-Endpunkte stellen gehostete Workflows bereit.",
"settingsSecurityPanelTitle": "Sicherheit & Zugangsdaten",
"settingsSecurityPanelBody": "Tokens, die der Hub für dich verwahrt. Liegen in ~/.fai/ mit Modus 0600; werden nie als Telemetrie versendet.",
"settingsSecurityPanelBody": "Tokens, die der Hub für dich verwahrt. Liegen in ~/.chain/ mit Modus 0600; werden nie als Telemetrie versendet.",
"settingsMaintenancePanelTitle": "Wartung",
"settingsMaintenancePanelBody": "Destruktive Aktionen, abgesichert durch explizite Bestätigungs-Dialoge. Nutzen z.B. beim Re-Pilot-Testen oder Debuggen.",
"tooltipMoveUp": "Nach oben",

View file

@ -40,7 +40,7 @@
"errOutputTooLarge": "Step output exceeded the size limit.",
"errOutputTooLargeHint": "Either trim the output (truncate text, downsample bytes) or raise `max_output_size_mb` in the operator config.",
"errServiceUnavailableForStep": "Host service not configured.",
"errServiceUnavailableForStepHint": "The module requires a service (e.g. ollama, playwright) the operator hasn't declared. Add it under `services:` in ~/.fai/config.yaml.",
"errServiceUnavailableForStepHint": "The module requires a service (e.g. ollama, playwright) the operator hasn't declared. Add it under `services:` in ~/.chain/config.yaml.",
"errMissingValue": "Required value is missing.",
"errMissingValueHint": "The step expected an input that wasn't wired up — either supply it at run time or fix the upstream `$ref`.",
"errMcpUnreachable": "MCP endpoint unreachable.",
@ -151,7 +151,7 @@
"settingsHubEndpointHint": "Where should Studio connect? Default is the local hub at 127.0.0.1:50051.",
"settingsTlsSubtitle": "https/grpc-secure",
"settingsPortError": "port must be 165535",
"channelsBlurb": "Switch hub channel (writes ~/.fai/current-channel and restarts the daemon). Connect just changes Studio's wire.",
"channelsBlurb": "Switch hub channel (writes ~/.chain/current-channel and restarts the daemon). Connect just changes Studio's wire.",
"channelsActionsTooltip": "Channel actions",
"systemAiHeader": "SYSTEM AI",
"systemAiEnabled": "enabled",
@ -436,7 +436,7 @@
"storeOpenRepoButton": "Open repository in browser",
"storeDocsErrorNotFound": "This module is not in the hub's store index.",
"storeDocsErrorNoDocs": "No repository URL is recorded for this module.",
"storeDocsErrorAuth": "The registry requires authentication to fetch this README. Set FAI_REGISTRY_TOKEN in the daemon's environment and restart the hub.",
"storeDocsErrorAuth": "The registry requires authentication to fetch this README. Set CHAIN_REGISTRY_TOKEN in the daemon's environment and restart the hub.",
"storeDocsErrorNetwork": "Network error while fetching the README. {detail}",
"@storeDocsErrorNetwork": {
"placeholders": {
@ -610,7 +610,7 @@
"auditClearLogButton": "Clear log",
"modulesTitle": "Modules",
"modulesNoneTitle": "No modules yet",
"modulesNoneHint": "Run `chain install <capability-name>` or check ~/.fai/modules/.",
"modulesNoneHint": "Run `chain install <capability-name>` or check ~/.chain/modules/.",
"modulesReloadTooltip": "Reload",
"modulesRecentActivity": "RECENT ACTIVITY",
"modulesRecentActivityHint": "last {n} install/uninstall events from the audit log",
@ -761,7 +761,7 @@
}
},
"registryCredentialsHeader": "REGISTRY CREDENTIALS",
"registryCredentialsBlurb": "Token used to download .fai modules from a registry behind a signin wall (Forgejo, GitHub-private). Stored at ~/.fai/registry-token, mode 0600. The FAI_REGISTRY_TOKEN env var still wins when set.",
"registryCredentialsBlurb": "Token used to download .fai modules from a registry behind a signin wall (Forgejo, GitHub-private). Stored at ~/.chain/registry-token, mode 0600. The CHAIN_REGISTRY_TOKEN env var still wins when set.",
"registryTokenStatusConfigured": "Configured ({chars} chars)",
"@registryTokenStatusConfigured": {
"placeholders": {
@ -775,7 +775,7 @@
"registryTokenFieldHint": "Paste your Forgejo or GitHub personal access token",
"registryTokenSaveButton": "Save",
"registryTokenClearButton": "Clear",
"registryTokenStorageHint": "Saved locally to ~/.fai/registry-token. Never sent to a remote service.",
"registryTokenStorageHint": "Saved locally to ~/.chain/registry-token. Never sent to a remote service.",
"registryTokenSavedToast": "Registry token saved.",
"registryTokenClearedToast": "Registry token cleared.",
"registryTokenSaveFailedToast": "Could not save: {error}",
@ -787,7 +787,7 @@
}
},
"hubAuthTokenHeader": "HUB AUTHENTICATION",
"hubAuthTokenBlurb": "Bearer token used to authenticate Studio against a hub that has auth.tokens: configured (RBAC Level 2). Stored at ~/.fai/hub-auth-token, mode 0600. Studio sends it as Authorization: Bearer on every gRPC call.",
"hubAuthTokenBlurb": "Bearer token used to authenticate Studio against a hub that has auth.tokens: configured (RBAC Level 2). Stored at ~/.chain/hub-auth-token, mode 0600. Studio sends it as Authorization: Bearer on every gRPC call.",
"hubAuthTokenStatusConfigured": "Configured ({chars} chars)",
"@hubAuthTokenStatusConfigured": {
"placeholders": {
@ -801,7 +801,7 @@
"hubAuthTokenFieldHint": "Paste a token from the hub operator's auth.tokens entry",
"hubAuthTokenSaveButton": "Save",
"hubAuthTokenClearButton": "Clear",
"hubAuthTokenStorageHint": "Saved locally to ~/.fai/hub-auth-token. Studio reconnects after save so the new token takes effect immediately.",
"hubAuthTokenStorageHint": "Saved locally to ~/.chain/hub-auth-token. Studio reconnects after save so the new token takes effect immediately.",
"hubAuthTokenSavedToast": "Hub auth token saved.",
"hubAuthTokenClearedToast": "Hub auth token cleared.",
"hubAuthTokenSaveFailedToast": "Could not save: {error}",
@ -833,15 +833,15 @@
"defaultScopeLoadFailed": "Could not load default scope.",
"defaultScopeNonEmptyError": "Default scope cannot be empty — keep at least one segment.",
"maintenanceHeader": "HUB MAINTENANCE",
"maintenanceResetBlurb": "Wipe operator state and start over with a clean hub. Stops every running daemon, atomically backs ~/.fai/ up, then recreates it with the binary, channel state, MCP / n8n / system-AI config, and registry token preserved. Restore by moving the backup directory back.",
"maintenanceResetBlurb": "Wipe operator state and start over with a clean hub. Stops every running daemon, atomically backs ~/.chain/ up, then recreates it with the binary, channel state, MCP / n8n / system-AI config, and registry token preserved. Restore by moving the backup directory back.",
"maintenanceKeepModulesTitle": "Keep installed modules",
"maintenanceKeepModulesSubtitle": "Default behaviour wipes ~/.fai/modules/ so a fresh install can verify the module-fetch path end-to-end.",
"maintenanceKeepModulesSubtitle": "Default behaviour wipes ~/.chain/modules/ so a fresh install can verify the module-fetch path end-to-end.",
"maintenanceKeepDataTitle": "Keep audit log + saved flows",
"maintenanceKeepDataSubtitle": "Default behaviour wipes ~/.fai/data/ so the audit chain restarts from a fresh genesis and the bundled sample flows re-import on first daemon start.",
"maintenanceKeepDataSubtitle": "Default behaviour wipes ~/.chain/data/ so the audit chain restarts from a fresh genesis and the bundled sample flows re-import on first daemon start.",
"maintenanceResetButton": "Reset hub state",
"maintenanceResetInProgress": "Resetting…",
"maintenanceResetConfirmTitle": "Reset hub state?",
"maintenanceResetConfirmBody": "This stops every daemon, moves ~/.fai/ to a timestamped backup, and starts fresh. The backup is fully restorable. Continue?",
"maintenanceResetConfirmBody": "This stops every daemon, moves ~/.chain/ to a timestamped backup, and starts fresh. The backup is fully restorable. Continue?",
"maintenanceResetConfirmButton": "Reset",
"welcomeChecklistAllSetTitle": "You're set up.",
"welcomeChecklistAllSetBody": "Three threads to pull on next:",
@ -951,15 +951,15 @@
"errNotFoundHint": "The item you asked for isn't here — it may have been removed or never existed.",
"errAlreadyExists": "Already exists.",
"errPermissionDenied": "Permission denied.",
"errPermissionDeniedHint": "The hub's operator policy blocks this action. Check `~/.fai/config.yaml`.",
"errPermissionDeniedHint": "The hub's operator policy blocks this action. Check `~/.chain/config.yaml`.",
"errFailedPrecondition": "Setup issue blocked this.",
"errFailedPreconditionHint": "The hub couldn't proceed because something it needs isn't ready. The detail below explains what.",
"errInternal": "Unexpected internal error.",
"errInternalHint": "Check the hub logs at `~/.fai/logs/`. If this repeats, please report it.",
"errInternalHint": "Check the hub logs at `~/.chain/logs/`. If this repeats, please report it.",
"errUnavailable": "Hub not reachable.",
"errUnavailableHint": "Make sure `chain serve` (or `chain daemon start`) is running and the daemon endpoint matches Studio's settings.",
"errUnauthenticated": "Authentication required.",
"errUnauthenticatedHint": "Set `FAI_REGISTRY_TOKEN` or sign in through Settings before retrying.",
"errUnauthenticatedHint": "Set `CHAIN_REGISTRY_TOKEN` or sign in through Settings before retrying.",
"errCopyDetail": "Copy detail",
"errDetailCopied": "Detail copied to clipboard.",
"flowsOutputUnknown": "Output payload variant not recognised.",
@ -1114,7 +1114,7 @@
},
"doctorApprovalsAttentionPill": "attention",
"doctorServicesEmpty": "No host services declared",
"doctorServicesEmptyHint": "add to ~/.fai/config.yaml under services:",
"doctorServicesEmptyHint": "add to ~/.chain/config.yaml under services:",
"doctorPillLoaded": "loaded",
"doctorPillEmpty": "empty",
"doctorRecheckTooltip": "Re-check",
@ -1480,7 +1480,7 @@
"settingsIntegrationsPanelTitle": "Integrations",
"settingsIntegrationsPanelBody": "External tool servers the hub federates capabilities from. MCP servers expose tool-shaped endpoints; n8n endpoints expose hosted workflows.",
"settingsSecurityPanelTitle": "Security & credentials",
"settingsSecurityPanelBody": "Tokens the hub holds on the operator's behalf. Stored in ~/.fai/ with mode 0600; never sent in telemetry.",
"settingsSecurityPanelBody": "Tokens the hub holds on the operator's behalf. Stored in ~/.chain/ with mode 0600; never sent in telemetry.",
"settingsMaintenancePanelTitle": "Maintenance",
"settingsMaintenancePanelBody": "Destructive operations gated behind explicit confirm dialogs. Use when re-pilot-testing or debugging.",
"tooltipMoveUp": "Move up",

View file

@ -323,7 +323,7 @@ abstract class AppLocalizations {
/// No description provided for @errServiceUnavailableForStepHint.
///
/// In en, this message translates to:
/// **'The module requires a service (e.g. ollama, playwright) the operator hasn\'t declared. Add it under `services:` in ~/.fai/config.yaml.'**
/// **'The module requires a service (e.g. ollama, playwright) the operator hasn\'t declared. Add it under `services:` in ~/.chain/config.yaml.'**
String get errServiceUnavailableForStepHint;
/// No description provided for @errMissingValue.
@ -875,7 +875,7 @@ abstract class AppLocalizations {
/// No description provided for @channelsBlurb.
///
/// In en, this message translates to:
/// **'Switch hub channel (writes ~/.fai/current-channel and restarts the daemon). Connect just changes Studio\'s wire.'**
/// **'Switch hub channel (writes ~/.chain/current-channel and restarts the daemon). Connect just changes Studio\'s wire.'**
String get channelsBlurb;
/// No description provided for @channelsActionsTooltip.
@ -1649,7 +1649,7 @@ abstract class AppLocalizations {
/// No description provided for @storeDocsErrorAuth.
///
/// In en, this message translates to:
/// **'The registry requires authentication to fetch this README. Set FAI_REGISTRY_TOKEN in the daemon\'s environment and restart the hub.'**
/// **'The registry requires authentication to fetch this README. Set CHAIN_REGISTRY_TOKEN in the daemon\'s environment and restart the hub.'**
String get storeDocsErrorAuth;
/// No description provided for @storeDocsErrorNetwork.
@ -1991,7 +1991,7 @@ abstract class AppLocalizations {
/// No description provided for @modulesNoneHint.
///
/// In en, this message translates to:
/// **'Run `chain install <capability-name>` or check ~/.fai/modules/.'**
/// **'Run `chain install <capability-name>` or check ~/.chain/modules/.'**
String get modulesNoneHint;
/// No description provided for @modulesReloadTooltip.
@ -2279,7 +2279,7 @@ abstract class AppLocalizations {
/// No description provided for @registryCredentialsBlurb.
///
/// In en, this message translates to:
/// **'Token used to download .fai modules from a registry behind a signin wall (Forgejo, GitHub-private). Stored at ~/.fai/registry-token, mode 0600. The FAI_REGISTRY_TOKEN env var still wins when set.'**
/// **'Token used to download .fai modules from a registry behind a signin wall (Forgejo, GitHub-private). Stored at ~/.chain/registry-token, mode 0600. The CHAIN_REGISTRY_TOKEN env var still wins when set.'**
String get registryCredentialsBlurb;
/// No description provided for @registryTokenStatusConfigured.
@ -2321,7 +2321,7 @@ abstract class AppLocalizations {
/// No description provided for @registryTokenStorageHint.
///
/// In en, this message translates to:
/// **'Saved locally to ~/.fai/registry-token. Never sent to a remote service.'**
/// **'Saved locally to ~/.chain/registry-token. Never sent to a remote service.'**
String get registryTokenStorageHint;
/// No description provided for @registryTokenSavedToast.
@ -2351,7 +2351,7 @@ abstract class AppLocalizations {
/// No description provided for @hubAuthTokenBlurb.
///
/// In en, this message translates to:
/// **'Bearer token used to authenticate Studio against a hub that has auth.tokens: configured (RBAC Level 2). Stored at ~/.fai/hub-auth-token, mode 0600. Studio sends it as Authorization: Bearer on every gRPC call.'**
/// **'Bearer token used to authenticate Studio against a hub that has auth.tokens: configured (RBAC Level 2). Stored at ~/.chain/hub-auth-token, mode 0600. Studio sends it as Authorization: Bearer on every gRPC call.'**
String get hubAuthTokenBlurb;
/// No description provided for @hubAuthTokenStatusConfigured.
@ -2393,7 +2393,7 @@ abstract class AppLocalizations {
/// No description provided for @hubAuthTokenStorageHint.
///
/// In en, this message translates to:
/// **'Saved locally to ~/.fai/hub-auth-token. Studio reconnects after save so the new token takes effect immediately.'**
/// **'Saved locally to ~/.chain/hub-auth-token. Studio reconnects after save so the new token takes effect immediately.'**
String get hubAuthTokenStorageHint;
/// No description provided for @hubAuthTokenSavedToast.
@ -2501,7 +2501,7 @@ abstract class AppLocalizations {
/// No description provided for @maintenanceResetBlurb.
///
/// In en, this message translates to:
/// **'Wipe operator state and start over with a clean hub. Stops every running daemon, atomically backs ~/.fai/ up, then recreates it with the binary, channel state, MCP / n8n / system-AI config, and registry token preserved. Restore by moving the backup directory back.'**
/// **'Wipe operator state and start over with a clean hub. Stops every running daemon, atomically backs ~/.chain/ up, then recreates it with the binary, channel state, MCP / n8n / system-AI config, and registry token preserved. Restore by moving the backup directory back.'**
String get maintenanceResetBlurb;
/// No description provided for @maintenanceKeepModulesTitle.
@ -2513,7 +2513,7 @@ abstract class AppLocalizations {
/// No description provided for @maintenanceKeepModulesSubtitle.
///
/// In en, this message translates to:
/// **'Default behaviour wipes ~/.fai/modules/ so a fresh install can verify the module-fetch path end-to-end.'**
/// **'Default behaviour wipes ~/.chain/modules/ so a fresh install can verify the module-fetch path end-to-end.'**
String get maintenanceKeepModulesSubtitle;
/// No description provided for @maintenanceKeepDataTitle.
@ -2525,7 +2525,7 @@ abstract class AppLocalizations {
/// No description provided for @maintenanceKeepDataSubtitle.
///
/// In en, this message translates to:
/// **'Default behaviour wipes ~/.fai/data/ so the audit chain restarts from a fresh genesis and the bundled sample flows re-import on first daemon start.'**
/// **'Default behaviour wipes ~/.chain/data/ so the audit chain restarts from a fresh genesis and the bundled sample flows re-import on first daemon start.'**
String get maintenanceKeepDataSubtitle;
/// No description provided for @maintenanceResetButton.
@ -2549,7 +2549,7 @@ abstract class AppLocalizations {
/// No description provided for @maintenanceResetConfirmBody.
///
/// In en, this message translates to:
/// **'This stops every daemon, moves ~/.fai/ to a timestamped backup, and starts fresh. The backup is fully restorable. Continue?'**
/// **'This stops every daemon, moves ~/.chain/ to a timestamped backup, and starts fresh. The backup is fully restorable. Continue?'**
String get maintenanceResetConfirmBody;
/// No description provided for @maintenanceResetConfirmButton.
@ -2795,7 +2795,7 @@ abstract class AppLocalizations {
/// No description provided for @errPermissionDeniedHint.
///
/// In en, this message translates to:
/// **'The hub\'s operator policy blocks this action. Check `~/.fai/config.yaml`.'**
/// **'The hub\'s operator policy blocks this action. Check `~/.chain/config.yaml`.'**
String get errPermissionDeniedHint;
/// No description provided for @errFailedPrecondition.
@ -2819,7 +2819,7 @@ abstract class AppLocalizations {
/// No description provided for @errInternalHint.
///
/// In en, this message translates to:
/// **'Check the hub logs at `~/.fai/logs/`. If this repeats, please report it.'**
/// **'Check the hub logs at `~/.chain/logs/`. If this repeats, please report it.'**
String get errInternalHint;
/// No description provided for @errUnavailable.
@ -2843,7 +2843,7 @@ abstract class AppLocalizations {
/// No description provided for @errUnauthenticatedHint.
///
/// In en, this message translates to:
/// **'Set `FAI_REGISTRY_TOKEN` or sign in through Settings before retrying.'**
/// **'Set `CHAIN_REGISTRY_TOKEN` or sign in through Settings before retrying.'**
String get errUnauthenticatedHint;
/// No description provided for @errCopyDetail.
@ -3155,7 +3155,7 @@ abstract class AppLocalizations {
/// No description provided for @doctorServicesEmptyHint.
///
/// In en, this message translates to:
/// **'add to ~/.fai/config.yaml under services:'**
/// **'add to ~/.chain/config.yaml under services:'**
String get doctorServicesEmptyHint;
/// No description provided for @doctorPillLoaded.
@ -4139,7 +4139,7 @@ abstract class AppLocalizations {
/// No description provided for @settingsSecurityPanelBody.
///
/// In en, this message translates to:
/// **'Tokens the hub holds on the operator\'s behalf. Stored in ~/.fai/ with mode 0600; never sent in telemetry.'**
/// **'Tokens the hub holds on the operator\'s behalf. Stored in ~/.chain/ with mode 0600; never sent in telemetry.'**
String get settingsSecurityPanelBody;
/// No description provided for @settingsMaintenancePanelTitle.

View file

@ -138,7 +138,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get errServiceUnavailableForStepHint =>
'Das Modul braucht einen Service (z.B. ollama, playwright), den der Operator nicht deklariert hat. Trage ihn unter `services:` in ~/.fai/config.yaml ein.';
'Das Modul braucht einen Service (z.B. ollama, playwright), den der Operator nicht deklariert hat. Trage ihn unter `services:` in ~/.chain/config.yaml ein.';
@override
String get errMissingValue => 'Pflichtwert fehlt.';
@ -448,7 +448,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get channelsBlurb =>
'Hub-Kanal wechseln (schreibt ~/.fai/current-channel und startet den Daemon neu). Verbinden ändert nur die Wire von Studio.';
'Hub-Kanal wechseln (schreibt ~/.chain/current-channel und startet den Daemon neu). Verbinden ändert nur die Wire von Studio.';
@override
String get channelsActionsTooltip => 'Kanal-Aktionen';
@ -901,7 +901,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get storeDocsErrorAuth =>
'Die Registry erfordert Authentifizierung, um dieses README zu laden. Setze FAI_REGISTRY_TOKEN in der Umgebung des Daemons und starte den Hub neu.';
'Die Registry erfordert Authentifizierung, um dieses README zu laden. Setze CHAIN_REGISTRY_TOKEN in der Umgebung des Daemons und starte den Hub neu.';
@override
String storeDocsErrorNetwork(String detail) {
@ -1125,7 +1125,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get modulesNoneHint =>
'`chain install <capability-name>` ausführen oder ~/.fai/modules/ prüfen.';
'`chain install <capability-name>` ausführen oder ~/.chain/modules/ prüfen.';
@override
String get modulesReloadTooltip => 'Aktualisieren';
@ -1302,7 +1302,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get registryCredentialsBlurb =>
'Token zum Herunterladen von .fai-Modulen aus einer Registry mit Anmeldepflicht (Forgejo, private GitHub-Repos). Gespeichert in ~/.fai/registry-token, Modus 0600. Die Umgebungsvariable FAI_REGISTRY_TOKEN hat weiterhin Vorrang, wenn gesetzt.';
'Token zum Herunterladen von .fai-Modulen aus einer Registry mit Anmeldepflicht (Forgejo, private GitHub-Repos). Gespeichert in ~/.chain/registry-token, Modus 0600. Die Umgebungsvariable CHAIN_REGISTRY_TOKEN hat weiterhin Vorrang, wenn gesetzt.';
@override
String registryTokenStatusConfigured(int chars) {
@ -1326,7 +1326,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get registryTokenStorageHint =>
'Lokal gespeichert in ~/.fai/registry-token. Wird nie an einen Remote-Dienst übertragen.';
'Lokal gespeichert in ~/.chain/registry-token. Wird nie an einen Remote-Dienst übertragen.';
@override
String get registryTokenSavedToast => 'Registry-Token gespeichert.';
@ -1344,7 +1344,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get hubAuthTokenBlurb =>
'Bearer-Token für die Studio-Anbindung an einen Hub mit aktivierter auth.tokens-Konfiguration (RBAC Level 2). Gespeichert in ~/.fai/hub-auth-token, Modus 0600. Studio sendet ihn als Authorization: Bearer bei jedem gRPC-Aufruf.';
'Bearer-Token für die Studio-Anbindung an einen Hub mit aktivierter auth.tokens-Konfiguration (RBAC Level 2). Gespeichert in ~/.chain/hub-auth-token, Modus 0600. Studio sendet ihn als Authorization: Bearer bei jedem gRPC-Aufruf.';
@override
String hubAuthTokenStatusConfigured(int chars) {
@ -1369,7 +1369,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get hubAuthTokenStorageHint =>
'Lokal gespeichert in ~/.fai/hub-auth-token. Studio verbindet nach dem Speichern automatisch neu, der Token wirkt sofort.';
'Lokal gespeichert in ~/.chain/hub-auth-token. Studio verbindet nach dem Speichern automatisch neu, der Token wirkt sofort.';
@override
String get hubAuthTokenSavedToast => 'Hub-Token gespeichert.';
@ -1432,14 +1432,14 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get maintenanceResetBlurb =>
'Operator-Zustand zurücksetzen und mit einem sauberen Hub neu starten. Stoppt jeden laufenden Daemon, sichert ~/.fai/ atomar in ein Backup, legt es dann neu an — Binary, Channel-Pointer, MCP-/n8n-/System-AI-Konfiguration und Registry-Token bleiben erhalten. Wiederherstellen durch Zurückverschieben des Backup-Ordners.';
'Operator-Zustand zurücksetzen und mit einem sauberen Hub neu starten. Stoppt jeden laufenden Daemon, sichert ~/.chain/ atomar in ein Backup, legt es dann neu an — Binary, Channel-Pointer, MCP-/n8n-/System-AI-Konfiguration und Registry-Token bleiben erhalten. Wiederherstellen durch Zurückverschieben des Backup-Ordners.';
@override
String get maintenanceKeepModulesTitle => 'Installierte Module behalten';
@override
String get maintenanceKeepModulesSubtitle =>
'Standardverhalten löscht ~/.fai/modules/, damit eine frische Installation den Modul-Bezugspfad end-to-end verifizieren kann.';
'Standardverhalten löscht ~/.chain/modules/, damit eine frische Installation den Modul-Bezugspfad end-to-end verifizieren kann.';
@override
String get maintenanceKeepDataTitle =>
@ -1447,7 +1447,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get maintenanceKeepDataSubtitle =>
'Standardverhalten löscht ~/.fai/data/, damit die Audit-Kette mit einer neuen Genesis startet und die mitgelieferten Sample-Flows beim ersten Daemon-Start neu importiert werden.';
'Standardverhalten löscht ~/.chain/data/, damit die Audit-Kette mit einer neuen Genesis startet und die mitgelieferten Sample-Flows beim ersten Daemon-Start neu importiert werden.';
@override
String get maintenanceResetButton => 'Hub zurücksetzen';
@ -1460,7 +1460,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get maintenanceResetConfirmBody =>
'Stoppt jeden Daemon, verschiebt ~/.fai/ in ein Backup mit Zeitstempel und startet sauber neu. Das Backup ist vollständig wiederherstellbar. Fortfahren?';
'Stoppt jeden Daemon, verschiebt ~/.chain/ in ein Backup mit Zeitstempel und startet sauber neu. Das Backup ist vollständig wiederherstellbar. Fortfahren?';
@override
String get maintenanceResetConfirmButton => 'Zurücksetzen';
@ -1614,7 +1614,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get errPermissionDeniedHint =>
'Die Operator-Policy des Hubs blockiert diese Aktion. `~/.fai/config.yaml` prüfen.';
'Die Operator-Policy des Hubs blockiert diese Aktion. `~/.chain/config.yaml` prüfen.';
@override
String get errFailedPrecondition => 'Setup-Problem hat das blockiert.';
@ -1628,7 +1628,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get errInternalHint =>
'Hub-Logs unter `~/.fai/logs/` prüfen. Wenn das öfter passiert, bitte melden.';
'Hub-Logs unter `~/.chain/logs/` prüfen. Wenn das öfter passiert, bitte melden.';
@override
String get errUnavailable => 'Hub nicht erreichbar.';
@ -1642,7 +1642,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get errUnauthenticatedHint =>
'`FAI_REGISTRY_TOKEN` setzen oder in den Einstellungen anmelden, dann erneut versuchen.';
'`CHAIN_REGISTRY_TOKEN` setzen oder in den Einstellungen anmelden, dann erneut versuchen.';
@override
String get errCopyDetail => 'Detail kopieren';
@ -1834,7 +1834,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get doctorServicesEmptyHint =>
'in ~/.fai/config.yaml unter services: hinzufügen';
'in ~/.chain/config.yaml unter services: hinzufügen';
@override
String get doctorPillLoaded => 'geladen';
@ -2421,7 +2421,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get settingsSecurityPanelBody =>
'Tokens, die der Hub für dich verwahrt. Liegen in ~/.fai/ mit Modus 0600; werden nie als Telemetrie versendet.';
'Tokens, die der Hub für dich verwahrt. Liegen in ~/.chain/ mit Modus 0600; werden nie als Telemetrie versendet.';
@override
String get settingsMaintenancePanelTitle => 'Wartung';

View file

@ -137,7 +137,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get errServiceUnavailableForStepHint =>
'The module requires a service (e.g. ollama, playwright) the operator hasn\'t declared. Add it under `services:` in ~/.fai/config.yaml.';
'The module requires a service (e.g. ollama, playwright) the operator hasn\'t declared. Add it under `services:` in ~/.chain/config.yaml.';
@override
String get errMissingValue => 'Required value is missing.';
@ -448,7 +448,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get channelsBlurb =>
'Switch hub channel (writes ~/.fai/current-channel and restarts the daemon). Connect just changes Studio\'s wire.';
'Switch hub channel (writes ~/.chain/current-channel and restarts the daemon). Connect just changes Studio\'s wire.';
@override
String get channelsActionsTooltip => 'Channel actions';
@ -919,7 +919,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get storeDocsErrorAuth =>
'The registry requires authentication to fetch this README. Set FAI_REGISTRY_TOKEN in the daemon\'s environment and restart the hub.';
'The registry requires authentication to fetch this README. Set CHAIN_REGISTRY_TOKEN in the daemon\'s environment and restart the hub.';
@override
String storeDocsErrorNetwork(String detail) {
@ -1140,7 +1140,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get modulesNoneHint =>
'Run `chain install <capability-name>` or check ~/.fai/modules/.';
'Run `chain install <capability-name>` or check ~/.chain/modules/.';
@override
String get modulesReloadTooltip => 'Reload';
@ -1315,7 +1315,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get registryCredentialsBlurb =>
'Token used to download .fai modules from a registry behind a signin wall (Forgejo, GitHub-private). Stored at ~/.fai/registry-token, mode 0600. The FAI_REGISTRY_TOKEN env var still wins when set.';
'Token used to download .fai modules from a registry behind a signin wall (Forgejo, GitHub-private). Stored at ~/.chain/registry-token, mode 0600. The CHAIN_REGISTRY_TOKEN env var still wins when set.';
@override
String registryTokenStatusConfigured(int chars) {
@ -1340,7 +1340,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get registryTokenStorageHint =>
'Saved locally to ~/.fai/registry-token. Never sent to a remote service.';
'Saved locally to ~/.chain/registry-token. Never sent to a remote service.';
@override
String get registryTokenSavedToast => 'Registry token saved.';
@ -1358,7 +1358,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get hubAuthTokenBlurb =>
'Bearer token used to authenticate Studio against a hub that has auth.tokens: configured (RBAC Level 2). Stored at ~/.fai/hub-auth-token, mode 0600. Studio sends it as Authorization: Bearer on every gRPC call.';
'Bearer token used to authenticate Studio against a hub that has auth.tokens: configured (RBAC Level 2). Stored at ~/.chain/hub-auth-token, mode 0600. Studio sends it as Authorization: Bearer on every gRPC call.';
@override
String hubAuthTokenStatusConfigured(int chars) {
@ -1383,7 +1383,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get hubAuthTokenStorageHint =>
'Saved locally to ~/.fai/hub-auth-token. Studio reconnects after save so the new token takes effect immediately.';
'Saved locally to ~/.chain/hub-auth-token. Studio reconnects after save so the new token takes effect immediately.';
@override
String get hubAuthTokenSavedToast => 'Hub auth token saved.';
@ -1445,21 +1445,21 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get maintenanceResetBlurb =>
'Wipe operator state and start over with a clean hub. Stops every running daemon, atomically backs ~/.fai/ up, then recreates it with the binary, channel state, MCP / n8n / system-AI config, and registry token preserved. Restore by moving the backup directory back.';
'Wipe operator state and start over with a clean hub. Stops every running daemon, atomically backs ~/.chain/ up, then recreates it with the binary, channel state, MCP / n8n / system-AI config, and registry token preserved. Restore by moving the backup directory back.';
@override
String get maintenanceKeepModulesTitle => 'Keep installed modules';
@override
String get maintenanceKeepModulesSubtitle =>
'Default behaviour wipes ~/.fai/modules/ so a fresh install can verify the module-fetch path end-to-end.';
'Default behaviour wipes ~/.chain/modules/ so a fresh install can verify the module-fetch path end-to-end.';
@override
String get maintenanceKeepDataTitle => 'Keep audit log + saved flows';
@override
String get maintenanceKeepDataSubtitle =>
'Default behaviour wipes ~/.fai/data/ so the audit chain restarts from a fresh genesis and the bundled sample flows re-import on first daemon start.';
'Default behaviour wipes ~/.chain/data/ so the audit chain restarts from a fresh genesis and the bundled sample flows re-import on first daemon start.';
@override
String get maintenanceResetButton => 'Reset hub state';
@ -1472,7 +1472,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get maintenanceResetConfirmBody =>
'This stops every daemon, moves ~/.fai/ to a timestamped backup, and starts fresh. The backup is fully restorable. Continue?';
'This stops every daemon, moves ~/.chain/ to a timestamped backup, and starts fresh. The backup is fully restorable. Continue?';
@override
String get maintenanceResetConfirmButton => 'Reset';
@ -1624,7 +1624,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get errPermissionDeniedHint =>
'The hub\'s operator policy blocks this action. Check `~/.fai/config.yaml`.';
'The hub\'s operator policy blocks this action. Check `~/.chain/config.yaml`.';
@override
String get errFailedPrecondition => 'Setup issue blocked this.';
@ -1638,7 +1638,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get errInternalHint =>
'Check the hub logs at `~/.fai/logs/`. If this repeats, please report it.';
'Check the hub logs at `~/.chain/logs/`. If this repeats, please report it.';
@override
String get errUnavailable => 'Hub not reachable.';
@ -1652,7 +1652,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get errUnauthenticatedHint =>
'Set `FAI_REGISTRY_TOKEN` or sign in through Settings before retrying.';
'Set `CHAIN_REGISTRY_TOKEN` or sign in through Settings before retrying.';
@override
String get errCopyDetail => 'Copy detail';
@ -1843,7 +1843,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get doctorServicesEmptyHint =>
'add to ~/.fai/config.yaml under services:';
'add to ~/.chain/config.yaml under services:';
@override
String get doctorPillLoaded => 'loaded';
@ -2425,7 +2425,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get settingsSecurityPanelBody =>
'Tokens the hub holds on the operator\'s behalf. Stored in ~/.fai/ with mode 0600; never sent in telemetry.';
'Tokens the hub holds on the operator\'s behalf. Stored in ~/.chain/ with mode 0600; never sent in telemetry.';
@override
String get settingsMaintenancePanelTitle => 'Maintenance';