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 @@
-
-