feat(studio): guided-setup wizard (reuses chain init engine)

A Welcome 'Setup assistant' button opens a wizard that collects
scenario / intent / target (+ approval & data-local toggles), then calls
`chain init --answers` to preview the assembled plan and `--apply --force`
to write the config — reusing the Rust deterministic engine, no logic
duplicated. New SystemActions.chainInit; copyable errors via
showFaiProcessError; EN+DE l10n. analyze clean; smoke test + existing
welcome/sidebar tests pass.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-06-21 21:04:13 +02:00
parent 36a8252f67
commit c9fa068991
9 changed files with 509 additions and 0 deletions

View file

@ -1,5 +1,19 @@
{
"@@locale": "de",
"guidedSetupTitle": "Setup-Assistent",
"guidedSetupIntro": "Beantworte drei Fragen — Ch∆In stellt passende Konfiguration, Modul-Set und Start-Flow zusammen.",
"guidedSetupScenario": "Szenario",
"guidedSetupIntent": "Aufgabe",
"guidedSetupTarget": "Wo läuft es?",
"guidedSetupApproval": "Menschlichen Freigabe-Schritt vor dem KI-Schritt verlangen",
"guidedSetupDataLocal": "Daten müssen lokal bleiben (air-gapped)",
"guidedSetupReviewHeading": "Diesen Plan wird Ch∆In anwenden:",
"guidedSetupApply": "Setup übernehmen",
"guidedSetupApplied": "Setup übernommen. Schließe mit den Schritten unten ab:",
"guidedSetupBack": "Zurück",
"guidedSetupNext": "Weiter",
"guidedSetupCancel": "Abbrechen",
"guidedSetupClose": "Schließen",
"appTitle": "Ch∆In Studio",
"navWelcome": "Willkommen",
"welcomeHeroTitle": "Ch∆In Platform",

View file

@ -1,5 +1,19 @@
{
"@@locale": "en",
"guidedSetupTitle": "Setup assistant",
"guidedSetupIntro": "Answer three questions and Ch∆In assembles a tailored config, module set and starter flow.",
"guidedSetupScenario": "Scenario",
"guidedSetupIntent": "Task",
"guidedSetupTarget": "Where will it run?",
"guidedSetupApproval": "Require a human approval step before the AI step",
"guidedSetupDataLocal": "Data must stay local (air-gapped posture)",
"guidedSetupReviewHeading": "This is the plan Ch∆In will apply:",
"guidedSetupApply": "Apply setup",
"guidedSetupApplied": "Setup applied. Finish with the steps below:",
"guidedSetupBack": "Back",
"guidedSetupNext": "Next",
"guidedSetupCancel": "Cancel",
"guidedSetupClose": "Close",
"appTitle": "Ch∆In Studio",
"@appTitle": {
"description": "App-bar title in the OS task switcher."

View file

@ -98,6 +98,90 @@ abstract class AppLocalizations {
Locale('en'),
];
/// No description provided for @guidedSetupTitle.
///
/// In en, this message translates to:
/// **'Setup assistant'**
String get guidedSetupTitle;
/// No description provided for @guidedSetupIntro.
///
/// In en, this message translates to:
/// **'Answer three questions and Ch∆In assembles a tailored config, module set and starter flow.'**
String get guidedSetupIntro;
/// No description provided for @guidedSetupScenario.
///
/// In en, this message translates to:
/// **'Scenario'**
String get guidedSetupScenario;
/// No description provided for @guidedSetupIntent.
///
/// In en, this message translates to:
/// **'Task'**
String get guidedSetupIntent;
/// No description provided for @guidedSetupTarget.
///
/// In en, this message translates to:
/// **'Where will it run?'**
String get guidedSetupTarget;
/// No description provided for @guidedSetupApproval.
///
/// In en, this message translates to:
/// **'Require a human approval step before the AI step'**
String get guidedSetupApproval;
/// No description provided for @guidedSetupDataLocal.
///
/// In en, this message translates to:
/// **'Data must stay local (air-gapped posture)'**
String get guidedSetupDataLocal;
/// No description provided for @guidedSetupReviewHeading.
///
/// In en, this message translates to:
/// **'This is the plan Ch∆In will apply:'**
String get guidedSetupReviewHeading;
/// No description provided for @guidedSetupApply.
///
/// In en, this message translates to:
/// **'Apply setup'**
String get guidedSetupApply;
/// No description provided for @guidedSetupApplied.
///
/// In en, this message translates to:
/// **'Setup applied. Finish with the steps below:'**
String get guidedSetupApplied;
/// No description provided for @guidedSetupBack.
///
/// In en, this message translates to:
/// **'Back'**
String get guidedSetupBack;
/// No description provided for @guidedSetupNext.
///
/// In en, this message translates to:
/// **'Next'**
String get guidedSetupNext;
/// No description provided for @guidedSetupCancel.
///
/// In en, this message translates to:
/// **'Cancel'**
String get guidedSetupCancel;
/// No description provided for @guidedSetupClose.
///
/// In en, this message translates to:
/// **'Close'**
String get guidedSetupClose;
/// App-bar title in the OS task switcher.
///
/// In en, this message translates to:

View file

@ -8,6 +8,51 @@ import 'app_localizations.dart';
class AppLocalizationsDe extends AppLocalizations {
AppLocalizationsDe([String locale = 'de']) : super(locale);
@override
String get guidedSetupTitle => 'Setup-Assistent';
@override
String get guidedSetupIntro =>
'Beantworte drei Fragen — Ch∆In stellt passende Konfiguration, Modul-Set und Start-Flow zusammen.';
@override
String get guidedSetupScenario => 'Szenario';
@override
String get guidedSetupIntent => 'Aufgabe';
@override
String get guidedSetupTarget => 'Wo läuft es?';
@override
String get guidedSetupApproval =>
'Menschlichen Freigabe-Schritt vor dem KI-Schritt verlangen';
@override
String get guidedSetupDataLocal => 'Daten müssen lokal bleiben (air-gapped)';
@override
String get guidedSetupReviewHeading => 'Diesen Plan wird Ch∆In anwenden:';
@override
String get guidedSetupApply => 'Setup übernehmen';
@override
String get guidedSetupApplied =>
'Setup übernommen. Schließe mit den Schritten unten ab:';
@override
String get guidedSetupBack => 'Zurück';
@override
String get guidedSetupNext => 'Weiter';
@override
String get guidedSetupCancel => 'Abbrechen';
@override
String get guidedSetupClose => 'Schließen';
@override
String get appTitle => 'Ch∆In Studio';

View file

@ -8,6 +8,52 @@ import 'app_localizations.dart';
class AppLocalizationsEn extends AppLocalizations {
AppLocalizationsEn([String locale = 'en']) : super(locale);
@override
String get guidedSetupTitle => 'Setup assistant';
@override
String get guidedSetupIntro =>
'Answer three questions and Ch∆In assembles a tailored config, module set and starter flow.';
@override
String get guidedSetupScenario => 'Scenario';
@override
String get guidedSetupIntent => 'Task';
@override
String get guidedSetupTarget => 'Where will it run?';
@override
String get guidedSetupApproval =>
'Require a human approval step before the AI step';
@override
String get guidedSetupDataLocal =>
'Data must stay local (air-gapped posture)';
@override
String get guidedSetupReviewHeading => 'This is the plan Ch∆In will apply:';
@override
String get guidedSetupApply => 'Apply setup';
@override
String get guidedSetupApplied =>
'Setup applied. Finish with the steps below:';
@override
String get guidedSetupBack => 'Back';
@override
String get guidedSetupNext => 'Next';
@override
String get guidedSetupCancel => 'Cancel';
@override
String get guidedSetupClose => 'Close';
@override
String get appTitle => 'Ch∆In Studio';