WorkerConnectionModalViewModel's StartWorker/RerunInstaller swallowed missing-exe and Process.Start failures behind an empty catch and closed the dialog anyway, looking like success. Now both show an inline error and keep the dialog open; only a real launch closes it. IslandsShellViewModel.RestartWorkerAsync never checked whether the relaunched worker actually stayed up, and its status property was never bound in any view. RestartWorkerService now fails if the new process exits within a short survival window, and the outcome routes through the footer error/success strip instead of the dead RestartWorkerStatus. InstallArtifactLocator.Find() is now virtual and its two subclasses unsealed so tests can fake exe resolution without touching the real filesystem/registry.
35 lines
1.9 KiB
XML
35 lines
1.9 KiB
XML
<Window xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:vm="using:ClaudeDo.Ui.ViewModels.Modals"
|
|
xmlns:ctl="using:ClaudeDo.Ui.Views.Controls"
|
|
xmlns:loc="using:ClaudeDo.Ui.Localization"
|
|
x:Class="ClaudeDo.Ui.Views.Modals.WorkerConnectionModalView"
|
|
x:DataType="vm:WorkerConnectionModalViewModel"
|
|
Title="{loc:Tr modals.workerConnection.title}"
|
|
Width="520" Height="240"
|
|
WindowDecorations="None"
|
|
ExtendClientAreaToDecorationsHint="True"
|
|
WindowStartupLocation="CenterOwner"
|
|
Background="{DynamicResource SurfaceBrush}">
|
|
<Window.KeyBindings>
|
|
<KeyBinding Gesture="Escape" Command="{Binding CloseCommand}"/>
|
|
</Window.KeyBindings>
|
|
|
|
<ctl:ModalShell Title="{loc:Tr modals.workerConnection.title}" CloseCommand="{Binding CloseCommand}">
|
|
<Grid RowDefinitions="*,Auto,Auto" Margin="20,16">
|
|
<TextBlock Grid.Row="0" Classes="meta" TextWrapping="Wrap"
|
|
Text="{loc:Tr modals.workerConnection.body}"/>
|
|
<TextBlock Grid.Row="1" TextWrapping="Wrap" Margin="0,8,0,0"
|
|
Foreground="{DynamicResource StatusErrorBrush}"
|
|
IsVisible="{Binding ErrorText, Converter={x:Static ObjectConverters.IsNotNull}}"
|
|
Text="{Binding ErrorText}"/>
|
|
<StackPanel Grid.Row="2" Orientation="Horizontal" Spacing="8"
|
|
HorizontalAlignment="Right" Margin="0,16,0,0">
|
|
<Button Classes="btn" Content="{loc:Tr modals.workerConnection.dismiss}" Command="{Binding CloseCommand}"/>
|
|
<Button Classes="btn" Content="{loc:Tr modals.workerConnection.rerunInstaller}" Command="{Binding RerunInstallerCommand}"/>
|
|
<Button Classes="btn primary" Content="{loc:Tr modals.workerConnection.startWorker}" Command="{Binding StartWorkerCommand}"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
</ctl:ModalShell>
|
|
</Window>
|