diff --git a/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs b/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs index 53146e6..d6ec46a 100644 --- a/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs @@ -61,6 +61,9 @@ public sealed partial class IslandsShellViewModel : ViewModelBase private readonly System.Timers.Timer _clearTimer = new(30_000) { AutoReset = false }; + [ObservableProperty] private string? _primeStatus; + private readonly System.Timers.Timer _primeStatusTimer = new(5_000) { AutoReset = false }; + [RelayCommand] private void FocusSearch() => Lists?.RequestFocusSearch(); @@ -95,6 +98,16 @@ public sealed partial class IslandsShellViewModel : ViewModelBase WorkerLogText = null; } + private void OnPrimeFired(PrimeFiredEvent evt) + { + var when = evt.FiredAt.LocalDateTime.ToString("HH:mm"); + PrimeStatus = evt.Success + ? $"✓ Primed Claude at {when}" + : $"⚠ Prime failed: {evt.Message}"; + _primeStatusTimer.Stop(); + _primeStatusTimer.Start(); + } + private void OnPlanningMergeConflict(string planningTaskId, string subtaskId, IReadOnlyList conflictedFiles) { // Already on UI thread (WorkerClient dispatches via Dispatcher.UIThread.Post). @@ -177,6 +190,7 @@ public sealed partial class IslandsShellViewModel : ViewModelBase }; Worker.WorkerLogReceivedEvent += OnWorkerLogReceived; Worker.PlanningMergeConflictEvent += OnPlanningMergeConflict; + Worker.PrimeFired += OnPrimeFired; _clearTimer.Elapsed += (_, _) => { if (Dispatcher.UIThread.CheckAccess()) @@ -184,6 +198,8 @@ public sealed partial class IslandsShellViewModel : ViewModelBase else Dispatcher.UIThread.Post(ClearWorkerLog); }; + _primeStatusTimer.Elapsed += (_, _) => + Avalonia.Threading.Dispatcher.UIThread.Post(() => PrimeStatus = null); _ = Lists.LoadAsync(); _updateCheck.PropertyChanged += (_, e) => { diff --git a/src/ClaudeDo.Ui/Views/MainWindow.axaml b/src/ClaudeDo.Ui/Views/MainWindow.axaml index 58bde2d..1784682 100644 --- a/src/ClaudeDo.Ui/Views/MainWindow.axaml +++ b/src/ClaudeDo.Ui/Views/MainWindow.axaml @@ -217,6 +217,15 @@ TextTrimming="CharacterEllipsis" VerticalAlignment="Center"/> + + +