diff --git a/src/ClaudeDo.Ui/ViewModels/Islands/TaskRowViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Islands/TaskRowViewModel.cs index 990c251d..dad98126 100644 --- a/src/ClaudeDo.Ui/ViewModels/Islands/TaskRowViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Islands/TaskRowViewModel.cs @@ -128,6 +128,11 @@ public sealed partial class TaskRowViewModel : ViewModelBase _ => Status.ToString(), }; + // A planning parent that is still Idle (Active planning, or Finalized-but-not-yet-queued) + // already shows its state via the PLANNING/PLANNED badge next to the title. The lifecycle + // chip would read "Idle" (or "Parked"), which is misleading, so hide it in that case. + public bool ShowStatusChip => !(PlanningPhase != PlanningPhase.None && Status == TaskStatus.Idle); + public string StatusChipClass => (Status, IsBlocked: !string.IsNullOrEmpty(BlockedByTaskId)) switch { (TaskStatus.Running, _) => "running", @@ -144,6 +149,7 @@ public sealed partial class TaskRowViewModel : ViewModelBase { OnPropertyChanged(nameof(StatusChipClass)); OnPropertyChanged(nameof(StatusLabel)); + OnPropertyChanged(nameof(ShowStatusChip)); OnPropertyChanged(nameof(IsRunning)); OnPropertyChanged(nameof(IsWaitingForReview)); OnPropertyChanged(nameof(CanPickUpInTerminal)); @@ -189,6 +195,7 @@ public sealed partial class TaskRowViewModel : ViewModelBase { OnPropertyChanged(nameof(IsPlanningParent)); OnPropertyChanged(nameof(PlanningBadge)); + OnPropertyChanged(nameof(ShowStatusChip)); OnPropertyChanged(nameof(IsPlanActive)); OnPropertyChanged(nameof(IsPlanFinalized)); OnPropertyChanged(nameof(CanOpenPlanningSession)); diff --git a/src/ClaudeDo.Ui/Views/Islands/TaskRowView.axaml b/src/ClaudeDo.Ui/Views/Islands/TaskRowView.axaml index 2dc3e8da..db880640 100644 --- a/src/ClaudeDo.Ui/Views/Islands/TaskRowView.axaml +++ b/src/ClaudeDo.Ui/Views/Islands/TaskRowView.axaml @@ -156,6 +156,7 @@