From 013960700867891f06388dc0ef3fd63eb473a887 Mon Sep 17 00:00:00 2001 From: mika kuns Date: Mon, 1 Jun 2026 12:14:36 +0200 Subject: [PATCH] feat(ui): add worker connection help modal Co-Authored-By: Claude Sonnet 4.6 --- .../Modals/WorkerConnectionModalViewModel.cs | 45 +++++++++++++++++++ .../Modals/WorkerConnectionModalView.axaml | 29 ++++++++++++ .../Modals/WorkerConnectionModalView.axaml.cs | 10 +++++ 3 files changed, 84 insertions(+) create mode 100644 src/ClaudeDo.Ui/ViewModels/Modals/WorkerConnectionModalViewModel.cs create mode 100644 src/ClaudeDo.Ui/Views/Modals/WorkerConnectionModalView.axaml create mode 100644 src/ClaudeDo.Ui/Views/Modals/WorkerConnectionModalView.axaml.cs diff --git a/src/ClaudeDo.Ui/ViewModels/Modals/WorkerConnectionModalViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Modals/WorkerConnectionModalViewModel.cs new file mode 100644 index 0000000..dcc9b5a --- /dev/null +++ b/src/ClaudeDo.Ui/ViewModels/Modals/WorkerConnectionModalViewModel.cs @@ -0,0 +1,45 @@ +using System; +using System.Diagnostics; +using ClaudeDo.Ui.Services; +using CommunityToolkit.Mvvm.Input; + +namespace ClaudeDo.Ui.ViewModels.Modals; + +public sealed partial class WorkerConnectionModalViewModel : ViewModelBase +{ + private readonly WorkerLocator _workerLocator; + private readonly InstallerLocator _installerLocator; + + public WorkerConnectionModalViewModel(WorkerLocator workerLocator, InstallerLocator installerLocator) + { + _workerLocator = workerLocator; + _installerLocator = installerLocator; + } + + public Action? CloseAction { get; set; } + + [RelayCommand] private void Close() => CloseAction?.Invoke(); + + [RelayCommand] + private void StartWorker() + { + var exe = _workerLocator.Find(); + if (exe is null) return; + try { Process.Start(new ProcessStartInfo(exe) { UseShellExecute = true }); } + catch { /* nothing useful to show */ } + CloseAction?.Invoke(); + } + + [RelayCommand] + private void RerunInstaller() + { + var path = _installerLocator.Find(); + if (path is null) return; + try + { + Process.Start(new ProcessStartInfo(path) { UseShellExecute = true }); + Environment.Exit(0); + } + catch { /* nothing useful to show */ } + } +} diff --git a/src/ClaudeDo.Ui/Views/Modals/WorkerConnectionModalView.axaml b/src/ClaudeDo.Ui/Views/Modals/WorkerConnectionModalView.axaml new file mode 100644 index 0000000..fd0424b --- /dev/null +++ b/src/ClaudeDo.Ui/Views/Modals/WorkerConnectionModalView.axaml @@ -0,0 +1,29 @@ + + + + + + + + + +