diff --git a/src/ClaudeDo.Ui/ViewModels/MissionControlViewModel.cs b/src/ClaudeDo.Ui/ViewModels/MissionControlViewModel.cs index c931d38d..167da9d9 100644 --- a/src/ClaudeDo.Ui/ViewModels/MissionControlViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/MissionControlViewModel.cs @@ -151,7 +151,7 @@ public sealed partial class MissionControlViewModel : ViewModelBase, IDisposable : t.Status == ClaudeDo.Data.Models.TaskStatus.WaitingForReview ? 1 : t.Status == ClaudeDo.Data.Models.TaskStatus.Running ? 2 : 3) .ThenBy(t => t.SortOrder).ThenBy(t => t.CreatedAt) - .Select(t => new { t.Id, t.Title, t.BlockedByTaskId, t.Status, t.RoadblockCount }) + .Select(t => new { t.Id, t.Number, t.Title, t.BlockedByTaskId, t.Status, t.RoadblockCount }) .ToListAsync(); Queued.Clear(); @@ -163,6 +163,7 @@ public sealed partial class MissionControlViewModel : ViewModelBase, IDisposable Queued.Add(new QueuedTaskViewModel { Id = id, + Number = r.Number, Title = r.Title ?? string.Empty, IsRunning = running, TintKey = tint, @@ -802,6 +803,9 @@ public sealed partial class MissionControlViewModel : ViewModelBase, IDisposable public sealed class QueuedTaskViewModel { public required string Id { get; init; } + /// Task number (#N); 0 for rows created outside TaskNumberAllocator. + public int Number { get; init; } + public bool ShowNumber => Number > 0; public required string Title { get; init; } public bool IsRunning { get; init; } /// Brush key of the row tint (e.g. "RunningTint"); null = untinted. diff --git a/src/ClaudeDo.Ui/Views/MissionControl/MissionControlView.axaml b/src/ClaudeDo.Ui/Views/MissionControl/MissionControlView.axaml index 1258bcbb..462f0807 100644 --- a/src/ClaudeDo.Ui/Views/MissionControl/MissionControlView.axaml +++ b/src/ClaudeDo.Ui/Views/MissionControl/MissionControlView.axaml @@ -229,10 +229,16 @@ BorderThickness="1" CornerRadius="6" IsVisible="{Binding TintKey, Converter={x:Static ObjectConverters.IsNotNull}}" /> - + + + +