diff --git a/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs index a1ff6e3..f322813 100644 --- a/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs @@ -337,7 +337,12 @@ public sealed partial class DetailsIslandViewModel : ViewModelBase, IDisposable public Func? ShowErrorAsync { get; set; } // ── Review ────────────────────────────────────────────────────────────── - [ObservableProperty] private string _reviewFeedback = ""; + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(HasReviewFeedback))] + [NotifyCanExecuteChangedFor(nameof(RejectReviewCommand))] + private string _reviewFeedback = ""; + + public bool HasReviewFeedback => !string.IsNullOrWhiteSpace(ReviewFeedback); // Kept for backwards-compat surface — delegates to Merge.RequestConflictResolution public Func? RequestConflictResolution @@ -1169,7 +1174,7 @@ public sealed partial class DetailsIslandViewModel : ViewModelBase, IDisposable } } - [RelayCommand] + [RelayCommand(CanExecute = nameof(HasReviewFeedback))] private async System.Threading.Tasks.Task RejectReviewAsync() { if (Task is null || !_worker.IsConnected) return; @@ -1180,6 +1185,15 @@ public sealed partial class DetailsIslandViewModel : ViewModelBase, IDisposable ReviewFeedback = ""; } + // Park: set the task aside (back to Idle), keeping its worktree intact. + [RelayCommand] + private async System.Threading.Tasks.Task ParkReviewAsync() + { + if (Task is null || !_worker.IsConnected) return; + try { await _worker.RejectReviewToIdleAsync(Task.Id); } + catch { /* stale review action; broadcast reconciles */ } + } + [RelayCommand] private async System.Threading.Tasks.Task ResetReviewAsync() { diff --git a/src/ClaudeDo.Ui/Views/Islands/Detail/WorkConsole.axaml b/src/ClaudeDo.Ui/Views/Islands/Detail/WorkConsole.axaml index b00bb97..1674575 100644 --- a/src/ClaudeDo.Ui/Views/Islands/Detail/WorkConsole.axaml +++ b/src/ClaudeDo.Ui/Views/Islands/Detail/WorkConsole.axaml @@ -167,9 +167,16 @@ CommandParameter="output" /> + -