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}}" />
-
+
+
+
+