feat(studio): first-run UX, recovery affordances, l10n, bundled fonts
- Connection-aware Welcome: when the hub is down, show a hero with a primary "Start hub" CTA + install fallback instead of a dead, all-unchecked onboarding checklist (the first-run cliff). - Actionable binary-not-found (file picker + install link, not a "set FAI_BIN" dead end) and a connect-failure banner after repeated failed health polls. - Localize six hardcoded English error/toast clusters (DE+EN ARB). - Bundle Inter + JetBrains Mono as assets; drop the runtime google_fonts fetch (air-gap / KRITIS safe, no font-swap flash). Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
7511867774
commit
5313266cc4
25 changed files with 1231 additions and 234 deletions
|
|
@ -293,11 +293,12 @@ class _FaiSettingsDialogState extends State<FaiSettingsDialog> {
|
|||
});
|
||||
final r = await SystemActions.faiChannelSwitch(name);
|
||||
if (!mounted) return;
|
||||
final l = AppLocalizations.of(context)!;
|
||||
setState(() {
|
||||
_saving = false;
|
||||
_channelToast = r.ok
|
||||
? 'Switched active channel to "$name". Daemon restarted.\n${r.stdout.trim()}'
|
||||
: 'Channel switch failed: ${r.stderr.isEmpty ? r.stdout : r.stderr}';
|
||||
? '${l.channelSwitchOk(name)}\n${r.stdout.trim()}'
|
||||
: l.channelSwitchFailed(r.stderr.isEmpty ? r.stdout : r.stderr);
|
||||
});
|
||||
if (r.ok) await _loadChannels();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue