feat: guided-setup wizard — localized explained options + plain-language plan
Some checks failed
Security / Security check (push) Failing after 1s
Some checks failed
Security / Security check (push) Failing after 1s
Reworks the Setup-Assistent toward the zero-learning-curve bar
(docs/architecture/guided-setup.md, phase 1.1):
- Every scenario/intent/target choice is now a localized option CARD
with a one-line plain-language explanation of what it configures
(DE+EN, Sie-form) — replacing the bare dropdowns whose labels were
English enum humanizations ('Regulated Production', 'This Laptop').
- Three explained steps with a 'Schritt n von 3' progress line
(stakes → task → environment); the two adaptive toggles move to the
last step in plain language (no 'air-gapped' jargon).
- The review step renders a localized PLAIN-LANGUAGE summary built
from 'chain init --answers --plan-json' (the structured SetupPlan) —
'Ch∆In richtet einen regulierten Betrieb ein: signierte Module
verlangt · … · geändert wird nur ~/.chain/config.yaml' — instead of
echoing the CLI's English prose. Warns when an existing config will
be overwritten. After apply: a plain 'Fertig' + next steps.
flutter analyze clean; widget tests for the step flow + German option
labels. Remaining per plan: clickable follow-up actions, signature
dead-end fix, placement/auto-open, and the LLM free-text path.
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
0073d77a67
commit
140408d26a
7 changed files with 1133 additions and 146 deletions
|
|
@ -5046,6 +5046,306 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'Leave'**
|
||||
String get sealedLeave;
|
||||
|
||||
/// No description provided for @setupStepOf.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Step {n} of {total}'**
|
||||
String setupStepOf(int n, int total);
|
||||
|
||||
/// No description provided for @setupStep1Title.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'What are the stakes?'**
|
||||
String get setupStep1Title;
|
||||
|
||||
/// No description provided for @setupStep2Title.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'What do you want to do first?'**
|
||||
String get setupStep2Title;
|
||||
|
||||
/// No description provided for @setupStep3Title.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Where will it run?'**
|
||||
String get setupStep3Title;
|
||||
|
||||
/// No description provided for @setupReviewTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This is what Ch∆In will set up'**
|
||||
String get setupReviewTitle;
|
||||
|
||||
/// No description provided for @setupChooseFreeText.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Or just describe what you want to do'**
|
||||
String get setupChooseFreeText;
|
||||
|
||||
/// No description provided for @setupScenTryingOut.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Just trying it out'**
|
||||
String get setupScenTryingOut;
|
||||
|
||||
/// No description provided for @setupScenTryingOutSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A relaxed workspace on this machine — no signing, no audit locking.'**
|
||||
String get setupScenTryingOutSub;
|
||||
|
||||
/// No description provided for @setupScenTeamHub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A shared team hub'**
|
||||
String get setupScenTeamHub;
|
||||
|
||||
/// No description provided for @setupScenTeamHubSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A secured hub for several people — signed modules, resource limits.'**
|
||||
String get setupScenTeamHubSub;
|
||||
|
||||
/// No description provided for @setupScenRegulated.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Regulated production'**
|
||||
String get setupScenRegulated;
|
||||
|
||||
/// No description provided for @setupScenRegulatedSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Signed modules, a complete tamper-evident audit trail, and a human approval before every AI step.'**
|
||||
String get setupScenRegulatedSub;
|
||||
|
||||
/// No description provided for @setupScenBuildModules.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Building modules'**
|
||||
String get setupScenBuildModules;
|
||||
|
||||
/// No description provided for @setupScenBuildModulesSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A developer setup for writing and testing your own modules.'**
|
||||
String get setupScenBuildModulesSub;
|
||||
|
||||
/// No description provided for @setupIntentHello.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Run the hello example'**
|
||||
String get setupIntentHello;
|
||||
|
||||
/// No description provided for @setupIntentHelloSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Just see one flow run end to end.'**
|
||||
String get setupIntentHelloSub;
|
||||
|
||||
/// No description provided for @setupIntentExtract.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Extract text from documents'**
|
||||
String get setupIntentExtract;
|
||||
|
||||
/// No description provided for @setupIntentExtractSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Pull plain text out of PDF and DOCX files.'**
|
||||
String get setupIntentExtractSub;
|
||||
|
||||
/// No description provided for @setupIntentExtractSummarize.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Extract and summarize'**
|
||||
String get setupIntentExtractSummarize;
|
||||
|
||||
/// No description provided for @setupIntentExtractSummarizeSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Extract text, then summarize it.'**
|
||||
String get setupIntentExtractSummarizeSub;
|
||||
|
||||
/// No description provided for @setupIntentClassify.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Sort incoming documents'**
|
||||
String get setupIntentClassify;
|
||||
|
||||
/// No description provided for @setupIntentClassifySub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Extract text, then classify it with an AI step.'**
|
||||
String get setupIntentClassifySub;
|
||||
|
||||
/// No description provided for @setupIntentBuildModule.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Build my own module'**
|
||||
String get setupIntentBuildModule;
|
||||
|
||||
/// No description provided for @setupIntentBuildModuleSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Start from a module scaffold.'**
|
||||
String get setupIntentBuildModuleSub;
|
||||
|
||||
/// No description provided for @setupTargetLaptop.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This computer'**
|
||||
String get setupTargetLaptop;
|
||||
|
||||
/// No description provided for @setupTargetLaptopSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Runs locally on the machine you are on now.'**
|
||||
String get setupTargetLaptopSub;
|
||||
|
||||
/// No description provided for @setupTargetHomeServer.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'An on-premise server'**
|
||||
String get setupTargetHomeServer;
|
||||
|
||||
/// No description provided for @setupTargetHomeServerSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A server in your own house — starts on boot, runs in the background.'**
|
||||
String get setupTargetHomeServerSub;
|
||||
|
||||
/// No description provided for @setupTargetAirgapped.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A fully local server (no internet)'**
|
||||
String get setupTargetAirgapped;
|
||||
|
||||
/// No description provided for @setupTargetAirgappedSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'An isolated server with no internet — the strictest, most private posture.'**
|
||||
String get setupTargetAirgappedSub;
|
||||
|
||||
/// No description provided for @setupTargetContainer.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A container'**
|
||||
String get setupTargetContainer;
|
||||
|
||||
/// No description provided for @setupTargetContainerSub.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Docker or Podman, with a ready-made compose snippet.'**
|
||||
String get setupTargetContainerSub;
|
||||
|
||||
/// No description provided for @setupApprovalPlain.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Ask a person for approval before every AI step'**
|
||||
String get setupApprovalPlain;
|
||||
|
||||
/// No description provided for @setupDataLocalPlain.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Data must never leave the building (fully local)'**
|
||||
String get setupDataLocalPlain;
|
||||
|
||||
/// No description provided for @setupPlanIntroDev.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Ch∆In sets up a straightforward workspace.'**
|
||||
String get setupPlanIntroDev;
|
||||
|
||||
/// No description provided for @setupPlanIntroEnterprise.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Ch∆In sets up a secured operation for a team.'**
|
||||
String get setupPlanIntroEnterprise;
|
||||
|
||||
/// No description provided for @setupPlanIntroAirgapped.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Ch∆In sets up a fully local, regulated operation.'**
|
||||
String get setupPlanIntroAirgapped;
|
||||
|
||||
/// No description provided for @setupPlanSignatures.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Only signed modules are allowed.'**
|
||||
String get setupPlanSignatures;
|
||||
|
||||
/// No description provided for @setupPlanWorm.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The audit log is additionally sealed tamper-proof (WORM).'**
|
||||
String get setupPlanWorm;
|
||||
|
||||
/// No description provided for @setupPlanApproval.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Before every AI step, the system asks a person for approval.'**
|
||||
String get setupPlanApproval;
|
||||
|
||||
/// No description provided for @setupPlanModules.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'These modules are prepared: {modules}.'**
|
||||
String setupPlanModules(String modules);
|
||||
|
||||
/// No description provided for @setupPlanFlow.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'An example flow “{flow}” is created.'**
|
||||
String setupPlanFlow(String flow);
|
||||
|
||||
/// No description provided for @setupPlanFileChanged.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Only one file is changed: {path}.'**
|
||||
String setupPlanFileChanged(String path);
|
||||
|
||||
/// No description provided for @setupPlanOverwriteWarn.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'An existing configuration will be overwritten.'**
|
||||
String get setupPlanOverwriteWarn;
|
||||
|
||||
/// No description provided for @setupApplied.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Done — Ch∆In is set up.'**
|
||||
String get setupApplied;
|
||||
|
||||
/// No description provided for @setupNextTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Next steps'**
|
||||
String get setupNextTitle;
|
||||
|
||||
/// No description provided for @setupNextHubStart.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Start the hub'**
|
||||
String get setupNextHubStart;
|
||||
|
||||
/// No description provided for @setupNextInstall.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Install the modules'**
|
||||
String get setupNextInstall;
|
||||
|
||||
/// No description provided for @setupNextRunFlow.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Run the example flow'**
|
||||
String get setupNextRunFlow;
|
||||
|
||||
/// No description provided for @setupStartCta.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Get started in 3 questions'**
|
||||
String get setupStartCta;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue