feat(studio): hub maintenance panel with reset action (v0.45.0)
Some checks are pending
Security / Security check (push) Waiting to run
Some checks are pending
Security / Security check (push) Waiting to run
UI parity with the platform CLI: `fai reset` (v0.10.93) is now reachable from Settings. The panel shows the reset blurb plus two checkboxes mirroring the CLI flags (Keep modules / Keep audit log + saved flows), then a destructive-styled "Reset hub state" button. Click goes through a confirm dialog before SystemActions.faiReset is invoked. After the CLI returns, Studio bounces its gRPC channel against the same endpoint (the daemon restarts on the same channel + port, so no Settings change needed) and reloads every panel: channel status, system AI, MCP clients, n8n endpoints, registry token. Output (success or failure) is shown in a copyable error box so any unexpected stderr lands somewhere the operator can paste from. Sits at the bottom of the dialog under "HUB MAINTENANCE", separated from the everyday config so a destructive button doesn't crowd the day-to-day controls. Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
9944a7ac8a
commit
3db7db7330
8 changed files with 358 additions and 1 deletions
|
|
@ -449,6 +449,17 @@
|
|||
"@registryTokenSaveFailedToast": {
|
||||
"placeholders": { "error": { "type": "String" } }
|
||||
},
|
||||
"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.",
|
||||
"maintenanceKeepModulesTitle": "Installierte Module behalten",
|
||||
"maintenanceKeepModulesSubtitle": "Standardverhalten löscht ~/.fai/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.",
|
||||
"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?",
|
||||
"maintenanceResetConfirmButton": "Zurücksetzen",
|
||||
"welcomeChecklistAllSetTitle": "Du bist eingerichtet.",
|
||||
"welcomeChecklistAllSetBody": "Drei Stränge, an denen du als nächstes ziehen kannst:",
|
||||
"welcomeChecklistNextAuditTitle": "Audit-Log lesen",
|
||||
|
|
|
|||
|
|
@ -450,6 +450,17 @@
|
|||
"@registryTokenSaveFailedToast": {
|
||||
"placeholders": { "error": { "type": "String" } }
|
||||
},
|
||||
"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.",
|
||||
"maintenanceKeepModulesTitle": "Keep installed modules",
|
||||
"maintenanceKeepModulesSubtitle": "Default behaviour wipes ~/.fai/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.",
|
||||
"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?",
|
||||
"maintenanceResetConfirmButton": "Reset",
|
||||
"welcomeChecklistAllSetTitle": "You're set up.",
|
||||
"welcomeChecklistAllSetBody": "Three threads to pull on next:",
|
||||
"welcomeChecklistNextAuditTitle": "Read the audit log",
|
||||
|
|
|
|||
|
|
@ -2042,6 +2042,72 @@ abstract class AppLocalizations {
|
|||
/// **'Could not save: {error}'**
|
||||
String registryTokenSaveFailedToast(String error);
|
||||
|
||||
/// No description provided for @maintenanceHeader.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'HUB MAINTENANCE'**
|
||||
String get maintenanceHeader;
|
||||
|
||||
/// 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.'**
|
||||
String get maintenanceResetBlurb;
|
||||
|
||||
/// No description provided for @maintenanceKeepModulesTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Keep installed modules'**
|
||||
String get maintenanceKeepModulesTitle;
|
||||
|
||||
/// 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.'**
|
||||
String get maintenanceKeepModulesSubtitle;
|
||||
|
||||
/// No description provided for @maintenanceKeepDataTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Keep audit log + saved flows'**
|
||||
String get maintenanceKeepDataTitle;
|
||||
|
||||
/// 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.'**
|
||||
String get maintenanceKeepDataSubtitle;
|
||||
|
||||
/// No description provided for @maintenanceResetButton.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reset hub state'**
|
||||
String get maintenanceResetButton;
|
||||
|
||||
/// No description provided for @maintenanceResetInProgress.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Resetting…'**
|
||||
String get maintenanceResetInProgress;
|
||||
|
||||
/// No description provided for @maintenanceResetConfirmTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reset hub state?'**
|
||||
String get maintenanceResetConfirmTitle;
|
||||
|
||||
/// 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?'**
|
||||
String get maintenanceResetConfirmBody;
|
||||
|
||||
/// No description provided for @maintenanceResetConfirmButton.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reset'**
|
||||
String get maintenanceResetConfirmButton;
|
||||
|
||||
/// No description provided for @welcomeChecklistAllSetTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
|
|
@ -1159,6 +1159,44 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
return 'Speichern fehlgeschlagen: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get maintenanceHeader => 'HUB-WARTUNG';
|
||||
|
||||
@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.';
|
||||
|
||||
@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.';
|
||||
|
||||
@override
|
||||
String get maintenanceKeepDataTitle =>
|
||||
'Protokoll + gespeicherte Flows behalten';
|
||||
|
||||
@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.';
|
||||
|
||||
@override
|
||||
String get maintenanceResetButton => 'Hub zurücksetzen';
|
||||
|
||||
@override
|
||||
String get maintenanceResetInProgress => 'Zurücksetzen…';
|
||||
|
||||
@override
|
||||
String get maintenanceResetConfirmTitle => 'Hub zurücksetzen?';
|
||||
|
||||
@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?';
|
||||
|
||||
@override
|
||||
String get maintenanceResetConfirmButton => 'Zurücksetzen';
|
||||
|
||||
@override
|
||||
String get welcomeChecklistAllSetTitle => 'Du bist eingerichtet.';
|
||||
|
||||
|
|
|
|||
|
|
@ -1174,6 +1174,43 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
return 'Could not save: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get maintenanceHeader => 'HUB MAINTENANCE';
|
||||
|
||||
@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.';
|
||||
|
||||
@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.';
|
||||
|
||||
@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.';
|
||||
|
||||
@override
|
||||
String get maintenanceResetButton => 'Reset hub state';
|
||||
|
||||
@override
|
||||
String get maintenanceResetInProgress => 'Resetting…';
|
||||
|
||||
@override
|
||||
String get maintenanceResetConfirmTitle => 'Reset hub state?';
|
||||
|
||||
@override
|
||||
String get maintenanceResetConfirmBody =>
|
||||
'This stops every daemon, moves ~/.fai/ to a timestamped backup, and starts fresh. The backup is fully restorable. Continue?';
|
||||
|
||||
@override
|
||||
String get maintenanceResetConfirmButton => 'Reset';
|
||||
|
||||
@override
|
||||
String get welcomeChecklistAllSetTitle => 'You\'re set up.';
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue