fix(setup): wizard errors copyable above the dialog, CLI skew explained, exec transparency
Some checks failed
Security / Security check (push) Failing after 2s
Some checks failed
Security / Security check (push) Failing after 2s
Field test of the setup wizard surfaced three trust breaks in one run: an unexplained macOS Documents permission prompt, a perceived crash, and an error message whose copy button could not be reached. Root causes and fixes: - chain init failures were shown as a SnackBar, which lands BEHIND the wizard's modal barrier: dimmed, clipped, copy unreachable — and the click aimed at it hit the barrier, dismissing the whole wizard with all answers (the perceived crash). Errors now open a modal dialog ABOVE the wizard via showChainErrorDialog with a copyable detail block, and the wizard is no longer barrier-dismissible. - When the resolved chain binary is older than Studio and rejects --plan-json, the wizard now explains the version skew in plain language (binary path + update path) instead of leaking a raw clap usage error. A missing binary gets its own localized story. - Step 3 announces which chain binary the preview will execute; when that binary physically lives (symlinks resolved) in a TCC-protected folder, the wizard pre-explains the macOS folder prompt. Supporting changes: FriendlyError passes through friendlyError() unchanged so call sites can ship precise localized stories through the shared presentation; SystemActions gains resolvedChainBinary() plus run/resolve test seams; ChainErrorBox hugs its content instead of filling an unbounded dialog; the wizard's answers file is written synchronously (the async dart:io variants never complete under the widget-test fake-async zone). Verified: flutter analyze clean, 53 tests green (6 new wizard error- path tests incl. clipboard round-trip), plus a live GUI walk on macOS in dark + light with a stale binary (skew dialog, copy verified via clipboard) and with the real binary (TCC pre-explanation with the resolved path, full plan preview). Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
4ceb5bb567
commit
c6da5025ce
11 changed files with 524 additions and 10 deletions
|
|
@ -5479,6 +5479,66 @@ abstract class AppLocalizations {
|
|||
/// **'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 @setupExecHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'For the preview and setup, Studio runs the “chain” program: {path}'**
|
||||
String setupExecHint(String path);
|
||||
|
||||
/// No description provided for @setupExecHintTcc.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The program lives at {path} — macOS may ask once for access to that folder (e.g. “Documents”). That is expected and fine.'**
|
||||
String setupExecHintTcc(String path);
|
||||
|
||||
/// No description provided for @setupNoBinaryStepHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The “chain” program could not be found on this machine — the preview in the next step will fail. You can pick it under “Doctor”, or install Ch∆In.'**
|
||||
String get setupNoBinaryStepHint;
|
||||
|
||||
/// No description provided for @setupNoBinary.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The “chain” program could not be found on this machine.'**
|
||||
String get setupNoBinary;
|
||||
|
||||
/// No description provided for @setupNoBinaryHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Without it the assistant cannot apply the setup. Pick it under “Doctor”, or reinstall Ch∆In.'**
|
||||
String get setupNoBinaryHint;
|
||||
|
||||
/// No description provided for @setupCliTooOld.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The installed “chain” program is older than Studio and does not know this assistant yet.'**
|
||||
String get setupCliTooOld;
|
||||
|
||||
/// No description provided for @setupCliTooOldHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Found: {path}. Please update Ch∆In (“Doctor” page → update, or in a terminal: chain update apply) and reopen the assistant afterwards.'**
|
||||
String setupCliTooOldHint(String path);
|
||||
|
||||
/// No description provided for @setupPreviewFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The plan preview could not be created — the “chain” program reported an error.'**
|
||||
String get setupPreviewFailed;
|
||||
|
||||
/// No description provided for @setupApplyFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The setup could not be applied — the “chain” program reported an error.'**
|
||||
String get setupApplyFailed;
|
||||
|
||||
/// No description provided for @setupCliUsedBinary.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Executed: {path}'**
|
||||
String setupCliUsedBinary(String path);
|
||||
|
||||
/// No description provided for @setupFreeTextParseError.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue