From 82390047d27e8f1cc422f52f8eabadd63d17a8c2 Mon Sep 17 00:00:00 2001 From: mika kuns Date: Thu, 4 Jun 2026 23:16:58 +0200 Subject: [PATCH] feat(ui): add RefineTask client call and refine events Co-Authored-By: Claude Sonnet 4.6 --- src/ClaudeDo.Ui/Services/Interfaces/IWorkerClient.cs | 4 ++++ src/ClaudeDo.Ui/Services/WorkerClient.cs | 10 ++++++++++ tests/ClaudeDo.Ui.Tests/StubWorkerClient.cs | 3 +++ .../UiVm/TasksIslandViewModelPlanningTests.cs | 3 +++ 4 files changed, 20 insertions(+) diff --git a/src/ClaudeDo.Ui/Services/Interfaces/IWorkerClient.cs b/src/ClaudeDo.Ui/Services/Interfaces/IWorkerClient.cs index 44ad197..ecc319e 100644 --- a/src/ClaudeDo.Ui/Services/Interfaces/IWorkerClient.cs +++ b/src/ClaudeDo.Ui/Services/Interfaces/IWorkerClient.cs @@ -57,6 +57,10 @@ public interface IWorkerClient : INotifyPropertyChanged Task GetWeekReportAsync(DateOnly start, DateOnly end); Task GenerateWeekReportAsync(DateOnly start, DateOnly end); Task RunDailyPrepNowAsync(); + Task RefineTaskAsync(string taskId); + + event Action? RefineStartedEvent; + event Action? RefineFinishedEvent; Task ClearMyDayAsync(); Task GetAppSettingsAsync(); Task> GetDailyNotesAsync(DateOnly day); diff --git a/src/ClaudeDo.Ui/Services/WorkerClient.cs b/src/ClaudeDo.Ui/Services/WorkerClient.cs index 92e5813..f9f8b7f 100644 --- a/src/ClaudeDo.Ui/Services/WorkerClient.cs +++ b/src/ClaudeDo.Ui/Services/WorkerClient.cs @@ -55,6 +55,9 @@ public partial class WorkerClient : ObservableObject, IAsyncDisposable, IWorkerC public event Action? PrepLineEvent; public event Action? PrepFinishedEvent; + public event Action? RefineStartedEvent; + public event Action? RefineFinishedEvent; + public event Action? PlanningMergeStartedEvent; public event Action? PlanningSubtaskMergedEvent; public event Action>? PlanningMergeConflictEvent; @@ -179,6 +182,11 @@ public partial class WorkerClient : ObservableObject, IAsyncDisposable, IWorkerC _hub.On("PrepStarted", () => Dispatcher.UIThread.Post(() => PrepStartedEvent?.Invoke())); _hub.On("PrepLine", line => Dispatcher.UIThread.Post(() => PrepLineEvent?.Invoke(line))); _hub.On("PrepFinished", ok => Dispatcher.UIThread.Post(() => PrepFinishedEvent?.Invoke(ok))); + + _hub.On("RefineStarted", id => + Dispatcher.UIThread.Post(() => RefineStartedEvent?.Invoke(id))); + _hub.On("RefineFinished", (id, ok, err) => + Dispatcher.UIThread.Post(() => RefineFinishedEvent?.Invoke(id, ok, err))); } public Task StartAsync() @@ -345,6 +353,8 @@ public partial class WorkerClient : ObservableObject, IAsyncDisposable, IWorkerC public Task RunDailyPrepNowAsync() => _hub.InvokeAsync("RunDailyPrepNow"); + public Task RefineTaskAsync(string taskId) => _hub.InvokeAsync("RefineTask", taskId); + public Task ClearMyDayAsync() => _hub.InvokeAsync("ClearMyDay"); diff --git a/tests/ClaudeDo.Ui.Tests/StubWorkerClient.cs b/tests/ClaudeDo.Ui.Tests/StubWorkerClient.cs index 6231ee0..6240da4 100644 --- a/tests/ClaudeDo.Ui.Tests/StubWorkerClient.cs +++ b/tests/ClaudeDo.Ui.Tests/StubWorkerClient.cs @@ -25,6 +25,8 @@ public abstract class StubWorkerClient : IWorkerClient public event Action? PrepStartedEvent; public event Action? PrepLineEvent; public event Action? PrepFinishedEvent; + public event Action? RefineStartedEvent; + public event Action? RefineFinishedEvent; public event Action? PlanningMergeStartedEvent; public event Action? PlanningSubtaskMergedEvent; public event Action>? PlanningMergeConflictEvent; @@ -81,6 +83,7 @@ public abstract class StubWorkerClient : IWorkerClient public virtual Task DeleteDailyNoteAsync(string id) => Task.CompletedTask; public string LastPrepLog = ""; public virtual Task GetLastPrepLogAsync() => Task.FromResult(LastPrepLog); + public virtual Task RefineTaskAsync(string taskId) => Task.CompletedTask; protected void RaisePropertyChanged(string name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } diff --git a/tests/ClaudeDo.Worker.Tests/UiVm/TasksIslandViewModelPlanningTests.cs b/tests/ClaudeDo.Worker.Tests/UiVm/TasksIslandViewModelPlanningTests.cs index 2bcb75a..c9cfe24 100644 --- a/tests/ClaudeDo.Worker.Tests/UiVm/TasksIslandViewModelPlanningTests.cs +++ b/tests/ClaudeDo.Worker.Tests/UiVm/TasksIslandViewModelPlanningTests.cs @@ -62,6 +62,8 @@ sealed class FakeWorkerClient : IWorkerClient public event Action? PrepStartedEvent; public event Action? PrepLineEvent; public event Action? PrepFinishedEvent; + public event Action? RefineStartedEvent; + public event Action? RefineFinishedEvent; public event Action? PlanningMergeStartedEvent; public event Action? PlanningSubtaskMergedEvent; public event Action>? PlanningMergeConflictEvent; @@ -86,6 +88,7 @@ sealed class FakeWorkerClient : IWorkerClient public Task UpdateDailyNoteAsync(string id, string text) => Task.CompletedTask; public Task DeleteDailyNoteAsync(string id) => Task.CompletedTask; public Task GetLastPrepLogAsync() => Task.FromResult(string.Empty); + public Task RefineTaskAsync(string taskId) => Task.CompletedTask; } // ── Helper to build VM with pre-seeded Items ──────────────────────────────────