diff --git a/src/ClaudeDo.Ui/ViewModels/Islands/TaskRowViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Islands/TaskRowViewModel.cs
index f147261..3d4a5bc 100644
--- a/src/ClaudeDo.Ui/ViewModels/Islands/TaskRowViewModel.cs
+++ b/src/ClaudeDo.Ui/ViewModels/Islands/TaskRowViewModel.cs
@@ -37,6 +37,9 @@ public sealed partial class TaskRowViewModel : ViewModelBase
public bool IsPlanningParent => Status == TaskStatus.Planning || Status == TaskStatus.Planned;
public bool IsDraft => Status == TaskStatus.Draft;
+ public bool CanOpenPlanningSession => Status == TaskStatus.Manual && !IsChild;
+ public bool CanResumeOrDiscardPlanning => Status == TaskStatus.Planning;
+
public string? PlanningBadge => Status switch
{
TaskStatus.Planning => "PLANNING",
@@ -76,9 +79,15 @@ public sealed partial class TaskRowViewModel : ViewModelBase
OnPropertyChanged(nameof(IsPlanningParent));
OnPropertyChanged(nameof(PlanningBadge));
OnPropertyChanged(nameof(IsDraft));
+ OnPropertyChanged(nameof(CanOpenPlanningSession));
+ OnPropertyChanged(nameof(CanResumeOrDiscardPlanning));
}
- partial void OnParentTaskIdChanged(string? value) => OnPropertyChanged(nameof(IsChild));
+ partial void OnParentTaskIdChanged(string? value)
+ {
+ OnPropertyChanged(nameof(IsChild));
+ OnPropertyChanged(nameof(CanOpenPlanningSession));
+ }
partial void OnBranchChanged(string? value) => OnPropertyChanged(nameof(HasBranch));
partial void OnLiveTailChanged(string? value) => OnPropertyChanged(nameof(HasLiveTail));
diff --git a/src/ClaudeDo.Ui/Views/Islands/TaskRowView.axaml b/src/ClaudeDo.Ui/Views/Islands/TaskRowView.axaml
index c823226..1e4bdb1 100644
--- a/src/ClaudeDo.Ui/Views/Islands/TaskRowView.axaml
+++ b/src/ClaudeDo.Ui/Views/Islands/TaskRowView.axaml
@@ -38,6 +38,19 @@
IsVisible="{Binding IsQueued}"
Click="OnRemoveFromQueueClick"/>
+
+
+
+