diff --git a/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs index 2a554036..c95079ba 100644 --- a/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs @@ -808,7 +808,8 @@ public sealed partial class TasksIslandViewModel : ViewModelBase, IDisposable var running = Items.Count(i => i.Status == TaskStatus.Running); var review = Items.Count(i => i.Status == TaskStatus.Done && i.Branch != null); - Subtitle = open == 1 ? "1 open task" : $"{open} open tasks"; + // The notes list holds no tasks — an "0 open tasks" line under its header is just noise. + Subtitle = IsNotesList ? "" : open == 1 ? "1 open task" : $"{open} open tasks"; if (running > 0 || review > 0) { diff --git a/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs b/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs index dceb7389..ea21b950 100644 --- a/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs @@ -145,7 +145,14 @@ public sealed partial class IslandsShellViewModel : ViewModelBase, IDisposable [ObservableProperty] private bool _isWorkerLogVisible; - public bool ShowDetails => WindowWidth >= 1100; + /// The notes list has nothing to show a detail pane for, so the pane goes away and + /// the editor takes the space instead of leaving an empty column beside it. + public bool ShowDetails => WindowWidth >= 1100 && Tasks?.IsNotesList != true; + + /// Widens the tasks island over the splitter and the details column when that column + /// is hidden — a fixed-width ColumnDefinition keeps its space even with an invisible child. + public int TasksColumnSpan => ShowDetails ? 1 : 3; + public bool ShowLists => WindowWidth >= 780; private readonly System.Timers.Timer _clearTimer = new(30_000) { AutoReset = false }; @@ -168,10 +175,16 @@ public sealed partial class IslandsShellViewModel : ViewModelBase, IDisposable partial void OnWindowWidthChanged(double value) { - OnPropertyChanged(nameof(ShowDetails)); + NotifyDetailsVisibility(); OnPropertyChanged(nameof(ShowLists)); } + private void NotifyDetailsVisibility() + { + OnPropertyChanged(nameof(ShowDetails)); + OnPropertyChanged(nameof(TasksColumnSpan)); + } + public void OnWorkerLogReceived(WorkerLogEntry entry) { var hhmm = entry.TimestampUtc.ToLocalTime().ToString("HH:mm"); @@ -341,6 +354,10 @@ public sealed partial class IslandsShellViewModel : ViewModelBase, IDisposable Lists.SelectionChanged += (_, _) => _ = RefreshStaleWorkerCheckAsync(); Tasks.SelectionChanged += (_, _) => Details.Bind(Tasks.SelectedTask, Tasks.SelectionSource); Tasks.PrepRequested += () => Details.ShowPrep(); + Tasks.PropertyChanged += (_, e) => + { + if (e.PropertyName == nameof(TasksIslandViewModel.IsNotesList)) NotifyDetailsVisibility(); + }; Tasks.ErrorReported += FlashFooterError; Lists.ErrorReported += FlashFooterError; Lists.SuccessReported += FlashFooterSuccess; diff --git a/src/ClaudeDo.Ui/Views/Islands/NotesEditorView.axaml b/src/ClaudeDo.Ui/Views/Islands/NotesEditorView.axaml index 5f14cce7..1fa35a61 100644 --- a/src/ClaudeDo.Ui/Views/Islands/NotesEditorView.axaml +++ b/src/ClaudeDo.Ui/Views/Islands/NotesEditorView.axaml @@ -13,8 +13,6 @@ - -