feat: guided setup — free-text AI path (phase 1.2)
The wizard's first step now offers 'or just describe what you want
to do': the goal goes to the configured system AI, which maps it
onto the menu answers (validated against strict enum whitelists —
a hallucinated value can never reach the engine). The suggestion
comes back as an editable plain-language reflection ('this is how I
read your task') the operator can adjust step-by-step or take to
the same preview/apply the menu path uses. Trust rules per
guided-setup.md: suggestion only (never auto-apply), a privacy line
states whether the description is processed locally or sent to a
provider, and without a configured system AI the section explains
that the menu always works — no dead end.
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
1f1e050b42
commit
09c901b75e
7 changed files with 619 additions and 2 deletions
|
|
@ -1761,6 +1761,26 @@
|
|||
"setupAllowUnsigned": "Installation aus dem öffentlichen Store erlauben",
|
||||
"setupAllowUnsignedSub": "Lockert die Signaturpflicht bewusst. Gut zum Ausprobieren — für den regulierten Betrieb später wieder aktivieren.",
|
||||
"setupStartCta": "In 3 Fragen loslegen",
|
||||
"setupFreeTextHint": "z. B.: Eingehende Anträge vorprüfen und unvollständige markieren",
|
||||
"setupFreeTextSuggest": "Vorschlagen lassen",
|
||||
"setupFreeTextPrivacyLocal": "Ihre Beschreibung wird lokal auf diesem Rechner verarbeitet ({model}).",
|
||||
"@setupFreeTextPrivacyLocal": {"placeholders": {"model": {"type": "String"}}},
|
||||
"setupFreeTextPrivacyRemote": "Ihre Beschreibung wird an die eingerichtete System-KI gesendet: {model} ({provider}).",
|
||||
"@setupFreeTextPrivacyRemote": {"placeholders": {"model": {"type": "String"}, "provider": {"type": "String"}}},
|
||||
"setupFreeTextUnavailable": "Für den Freitext-Weg braucht Ch∆In eine eingerichtete System-KI (Einstellungen → System-KI). Die Auswahl oben funktioniert immer — ganz ohne KI.",
|
||||
"setupFreeTextParseError": "Die System-KI hat keinen verwertbaren Vorschlag geliefert. Wählen Sie oben aus dem Menü — oder versuchen Sie es noch einmal.",
|
||||
"setupReflectionTitle": "So verstehe ich Ihre Aufgabe",
|
||||
"setupReflectionScenario": "Worum es geht: {label}",
|
||||
"@setupReflectionScenario": {"placeholders": {"label": {"type": "String"}}},
|
||||
"setupReflectionIntent": "Erste Aufgabe: {label}",
|
||||
"@setupReflectionIntent": {"placeholders": {"label": {"type": "String"}}},
|
||||
"setupReflectionTarget": "Umgebung: {label}",
|
||||
"@setupReflectionTarget": {"placeholders": {"label": {"type": "String"}}},
|
||||
"setupReflectionApproval": "Vor jedem KI-Schritt wird ein Mensch um Freigabe gebeten.",
|
||||
"setupReflectionDataLocal": "Daten bleiben vollständig im Haus.",
|
||||
"setupReflectionEditHint": "Es wird nichts ohne Ihre Bestätigung geändert. Passen Sie die Punkte an oder gehen Sie direkt zur Vorschau.",
|
||||
"setupReflectionAdjust": "Anpassen",
|
||||
"setupReflectionToPreview": "Zur Vorschau",
|
||||
"setupProfileDev": "unkomplizierter Arbeitsplatz",
|
||||
"setupProfileEnterprise": "abgesicherter Team-Betrieb",
|
||||
"setupProfileAirgapped": "vollständig lokaler, regulierter Betrieb",
|
||||
|
|
|
|||
|
|
@ -1800,6 +1800,26 @@
|
|||
"setupAllowUnsigned": "Allow installing from the public store",
|
||||
"setupAllowUnsignedSub": "Deliberately relaxes the signature requirement. Fine for trying things out — re-enable it for regulated operation.",
|
||||
"setupStartCta": "Get started in 3 questions",
|
||||
"setupFreeTextHint": "e.g.: pre-screen incoming applications and flag incomplete ones",
|
||||
"setupFreeTextSuggest": "Suggest a setup",
|
||||
"setupFreeTextPrivacyLocal": "Your description is processed locally on this machine ({model}).",
|
||||
"@setupFreeTextPrivacyLocal": {"placeholders": {"model": {"type": "String"}}},
|
||||
"setupFreeTextPrivacyRemote": "Your description is sent to the configured system AI: {model} ({provider}).",
|
||||
"@setupFreeTextPrivacyRemote": {"placeholders": {"model": {"type": "String"}, "provider": {"type": "String"}}},
|
||||
"setupFreeTextUnavailable": "The free-text path needs a configured system AI (Settings → System AI). The choices above always work — no AI required.",
|
||||
"setupFreeTextParseError": "The system AI did not return a usable suggestion. Pick from the menu above — or try again.",
|
||||
"setupReflectionTitle": "This is how I read your task",
|
||||
"setupReflectionScenario": "What it is about: {label}",
|
||||
"@setupReflectionScenario": {"placeholders": {"label": {"type": "String"}}},
|
||||
"setupReflectionIntent": "First task: {label}",
|
||||
"@setupReflectionIntent": {"placeholders": {"label": {"type": "String"}}},
|
||||
"setupReflectionTarget": "Environment: {label}",
|
||||
"@setupReflectionTarget": {"placeholders": {"label": {"type": "String"}}},
|
||||
"setupReflectionApproval": "A human is asked for approval before every AI step.",
|
||||
"setupReflectionDataLocal": "Data never leaves the building.",
|
||||
"setupReflectionEditHint": "Nothing is changed without your confirmation. Adjust any point, or go straight to the preview.",
|
||||
"setupReflectionAdjust": "Adjust",
|
||||
"setupReflectionToPreview": "To the preview",
|
||||
"setupProfileDev": "straightforward workstation",
|
||||
"setupProfileEnterprise": "hardened team operation",
|
||||
"setupProfileAirgapped": "fully local, regulated operation",
|
||||
|
|
|
|||
|
|
@ -5395,6 +5395,96 @@ abstract class AppLocalizations {
|
|||
/// **'Get started in 3 questions'**
|
||||
String get setupStartCta;
|
||||
|
||||
/// No description provided for @setupFreeTextHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'e.g.: pre-screen incoming applications and flag incomplete ones'**
|
||||
String get setupFreeTextHint;
|
||||
|
||||
/// No description provided for @setupFreeTextSuggest.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Suggest a setup'**
|
||||
String get setupFreeTextSuggest;
|
||||
|
||||
/// No description provided for @setupFreeTextPrivacyLocal.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your description is processed locally on this machine ({model}).'**
|
||||
String setupFreeTextPrivacyLocal(String model);
|
||||
|
||||
/// No description provided for @setupFreeTextPrivacyRemote.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your description is sent to the configured system AI: {model} ({provider}).'**
|
||||
String setupFreeTextPrivacyRemote(String model, String provider);
|
||||
|
||||
/// No description provided for @setupFreeTextUnavailable.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The free-text path needs a configured system AI (Settings → System AI). The choices above always work — no AI required.'**
|
||||
String get setupFreeTextUnavailable;
|
||||
|
||||
/// No description provided for @setupFreeTextParseError.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The system AI did not return a usable suggestion. Pick from the menu above — or try again.'**
|
||||
String get setupFreeTextParseError;
|
||||
|
||||
/// No description provided for @setupReflectionTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This is how I read your task'**
|
||||
String get setupReflectionTitle;
|
||||
|
||||
/// No description provided for @setupReflectionScenario.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'What it is about: {label}'**
|
||||
String setupReflectionScenario(String label);
|
||||
|
||||
/// No description provided for @setupReflectionIntent.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'First task: {label}'**
|
||||
String setupReflectionIntent(String label);
|
||||
|
||||
/// No description provided for @setupReflectionTarget.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Environment: {label}'**
|
||||
String setupReflectionTarget(String label);
|
||||
|
||||
/// No description provided for @setupReflectionApproval.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A human is asked for approval before every AI step.'**
|
||||
String get setupReflectionApproval;
|
||||
|
||||
/// No description provided for @setupReflectionDataLocal.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Data never leaves the building.'**
|
||||
String get setupReflectionDataLocal;
|
||||
|
||||
/// No description provided for @setupReflectionEditHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Nothing is changed without your confirmation. Adjust any point, or go straight to the preview.'**
|
||||
String get setupReflectionEditHint;
|
||||
|
||||
/// No description provided for @setupReflectionAdjust.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Adjust'**
|
||||
String get setupReflectionAdjust;
|
||||
|
||||
/// No description provided for @setupReflectionToPreview.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'To the preview'**
|
||||
String get setupReflectionToPreview;
|
||||
|
||||
/// No description provided for @setupProfileDev.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
|
|
@ -3182,6 +3182,66 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
@override
|
||||
String get setupStartCta => 'In 3 Fragen loslegen';
|
||||
|
||||
@override
|
||||
String get setupFreeTextHint =>
|
||||
'z. B.: Eingehende Anträge vorprüfen und unvollständige markieren';
|
||||
|
||||
@override
|
||||
String get setupFreeTextSuggest => 'Vorschlagen lassen';
|
||||
|
||||
@override
|
||||
String setupFreeTextPrivacyLocal(String model) {
|
||||
return 'Ihre Beschreibung wird lokal auf diesem Rechner verarbeitet ($model).';
|
||||
}
|
||||
|
||||
@override
|
||||
String setupFreeTextPrivacyRemote(String model, String provider) {
|
||||
return 'Ihre Beschreibung wird an die eingerichtete System-KI gesendet: $model ($provider).';
|
||||
}
|
||||
|
||||
@override
|
||||
String get setupFreeTextUnavailable =>
|
||||
'Für den Freitext-Weg braucht Ch∆In eine eingerichtete System-KI (Einstellungen → System-KI). Die Auswahl oben funktioniert immer — ganz ohne KI.';
|
||||
|
||||
@override
|
||||
String get setupFreeTextParseError =>
|
||||
'Die System-KI hat keinen verwertbaren Vorschlag geliefert. Wählen Sie oben aus dem Menü — oder versuchen Sie es noch einmal.';
|
||||
|
||||
@override
|
||||
String get setupReflectionTitle => 'So verstehe ich Ihre Aufgabe';
|
||||
|
||||
@override
|
||||
String setupReflectionScenario(String label) {
|
||||
return 'Worum es geht: $label';
|
||||
}
|
||||
|
||||
@override
|
||||
String setupReflectionIntent(String label) {
|
||||
return 'Erste Aufgabe: $label';
|
||||
}
|
||||
|
||||
@override
|
||||
String setupReflectionTarget(String label) {
|
||||
return 'Umgebung: $label';
|
||||
}
|
||||
|
||||
@override
|
||||
String get setupReflectionApproval =>
|
||||
'Vor jedem KI-Schritt wird ein Mensch um Freigabe gebeten.';
|
||||
|
||||
@override
|
||||
String get setupReflectionDataLocal => 'Daten bleiben vollständig im Haus.';
|
||||
|
||||
@override
|
||||
String get setupReflectionEditHint =>
|
||||
'Es wird nichts ohne Ihre Bestätigung geändert. Passen Sie die Punkte an oder gehen Sie direkt zur Vorschau.';
|
||||
|
||||
@override
|
||||
String get setupReflectionAdjust => 'Anpassen';
|
||||
|
||||
@override
|
||||
String get setupReflectionToPreview => 'Zur Vorschau';
|
||||
|
||||
@override
|
||||
String get setupProfileDev => 'unkomplizierter Arbeitsplatz';
|
||||
|
||||
|
|
|
|||
|
|
@ -3179,6 +3179,66 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
@override
|
||||
String get setupStartCta => 'Get started in 3 questions';
|
||||
|
||||
@override
|
||||
String get setupFreeTextHint =>
|
||||
'e.g.: pre-screen incoming applications and flag incomplete ones';
|
||||
|
||||
@override
|
||||
String get setupFreeTextSuggest => 'Suggest a setup';
|
||||
|
||||
@override
|
||||
String setupFreeTextPrivacyLocal(String model) {
|
||||
return 'Your description is processed locally on this machine ($model).';
|
||||
}
|
||||
|
||||
@override
|
||||
String setupFreeTextPrivacyRemote(String model, String provider) {
|
||||
return 'Your description is sent to the configured system AI: $model ($provider).';
|
||||
}
|
||||
|
||||
@override
|
||||
String get setupFreeTextUnavailable =>
|
||||
'The free-text path needs a configured system AI (Settings → System AI). The choices above always work — no AI required.';
|
||||
|
||||
@override
|
||||
String get setupFreeTextParseError =>
|
||||
'The system AI did not return a usable suggestion. Pick from the menu above — or try again.';
|
||||
|
||||
@override
|
||||
String get setupReflectionTitle => 'This is how I read your task';
|
||||
|
||||
@override
|
||||
String setupReflectionScenario(String label) {
|
||||
return 'What it is about: $label';
|
||||
}
|
||||
|
||||
@override
|
||||
String setupReflectionIntent(String label) {
|
||||
return 'First task: $label';
|
||||
}
|
||||
|
||||
@override
|
||||
String setupReflectionTarget(String label) {
|
||||
return 'Environment: $label';
|
||||
}
|
||||
|
||||
@override
|
||||
String get setupReflectionApproval =>
|
||||
'A human is asked for approval before every AI step.';
|
||||
|
||||
@override
|
||||
String get setupReflectionDataLocal => 'Data never leaves the building.';
|
||||
|
||||
@override
|
||||
String get setupReflectionEditHint =>
|
||||
'Nothing is changed without your confirmation. Adjust any point, or go straight to the preview.';
|
||||
|
||||
@override
|
||||
String get setupReflectionAdjust => 'Adjust';
|
||||
|
||||
@override
|
||||
String get setupReflectionToPreview => 'To the preview';
|
||||
|
||||
@override
|
||||
String get setupProfileDev => 'straightforward workstation';
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue