feat(studio): channel switcher, autostart toggle, Store redesign (v0.18.0)
UI parity for operators who never touch a CLI, plus a Store that reads more like an app store. Settings dialog: - Channel rows gain a popup menu: Connect / Make active / Enable autostart / Disable autostart. "Connect" still re-points Studio's wire; "Make active" actually writes ~/.fai/current-channel via `fai channel switch`. - Inline output panel surfaces the spawned binary's stdout on success or stderr on failure, so operators see what happened without opening a terminal. Store page rewrite: - Big top search bar with a clear button. Live filter on every keystroke. - Horizontal category strip auto-populated from the index; segmented status row (All / Published / Alpha / Planned), Installed-only chip, result count. - Grid of cards that reflows to fit the viewport — replaces the previous single-column list. Each card shows category-aware icon, version, status, tagline preview, and a one-click Install (or Details for installed / planned). - Per-module detail sheet renders the full bilingual description with a DE/EN toggle, separate Required- capabilities + Required-host-services sections, repo link, Read-docs button. Install + Uninstall live at the bottom. - StoreItem and HubService.searchStore now carry the German tagline + description so the locale toggle has something to switch to. SystemActions extended with `faiChannelSwitch`, `faiDaemonEnable`, `faiDaemonDisable` so Settings can spawn the right CLI without each call site reimplementing the `fai` resolution rules. Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
73e394b39f
commit
93926741b1
6 changed files with 1053 additions and 270 deletions
|
|
@ -55,6 +55,32 @@ class SystemActions {
|
|||
return _runFai(['update', 'apply', '--channel', channel]);
|
||||
}
|
||||
|
||||
/// Switch the active channel pointer at `~/.fai/current-channel`.
|
||||
/// The CLI also restarts the daemon for the new channel, so the
|
||||
/// caller does not need a follow-up restart.
|
||||
static Future<({bool ok, String stdout, String stderr})> faiChannelSwitch(
|
||||
String channel,
|
||||
) async {
|
||||
return _runFai(['channel', 'switch', channel]);
|
||||
}
|
||||
|
||||
/// Install the platform-native autostart unit for [channel]
|
||||
/// (launchd plist on macOS, systemd-user unit on Linux). On
|
||||
/// Windows the platform CLI returns a "not supported" exit
|
||||
/// status that the caller surfaces as an error message.
|
||||
static Future<({bool ok, String stdout, String stderr})> faiDaemonEnable(
|
||||
String channel,
|
||||
) async {
|
||||
return _runFai(['daemon', 'enable', '--channel', channel]);
|
||||
}
|
||||
|
||||
/// Remove the autostart unit installed by [faiDaemonEnable].
|
||||
static Future<({bool ok, String stdout, String stderr})> faiDaemonDisable(
|
||||
String channel,
|
||||
) async {
|
||||
return _runFai(['daemon', 'disable', '--channel', channel]);
|
||||
}
|
||||
|
||||
static Future<({bool ok, String stdout, String stderr})> _runFai(
|
||||
List<String> args,
|
||||
) async {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue