From 82f2d526a076d1fa7beff8abb1212bd9ef9dd3fd Mon Sep 17 00:00:00 2001 From: mika kuns Date: Mon, 20 Apr 2026 11:31:45 +0200 Subject: [PATCH] style(ui): task section dividers overdue/tasks/completed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expose OverdueItems / OpenItems / CompletedItems as separate observable collections recomputed in LoadForList (and after add / toggle-done). - OverdueItems: ScheduledFor.Date < Today && !Done - OpenItems: remaining !Done - CompletedItems: Done View renders three sections with eyebrow-style headers: - OVERDUE (blood accent, only when non-empty) - TASKS (shown only when overdue is also visible, matching the mock) - COMPLETED · N (hidden when IsShowingCompleted is false) Co-Authored-By: Claude Opus 4.7 (1M context) --- .../ViewModels/Islands/TasksIslandViewModel.cs | 14 ++++++++++---- .../Views/Islands/TasksIslandView.axaml | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs index b096970..d96ca9c 100644 --- a/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs @@ -33,7 +33,9 @@ public sealed partial class TasksIslandViewModel : ViewModelBase [ObservableProperty] private bool _hasStatusPill; [ObservableProperty] private bool _isShowingCompleted = true; [ObservableProperty] private bool _hasOverdue; + [ObservableProperty] private bool _hasOpen; [ObservableProperty] private bool _hasCompleted; + [ObservableProperty] private bool _showOpenLabel; [ObservableProperty] private string _completedHeader = "COMPLETED"; public TasksIslandViewModel(IDbContextFactory dbFactory) @@ -53,8 +55,10 @@ public sealed partial class TasksIslandViewModel : ViewModelBase OverdueItems.Clear(); OpenItems.Clear(); CompletedItems.Clear(); - HasOverdue = false; - HasCompleted = false; + HasOverdue = false; + HasOpen = false; + HasCompleted = false; + ShowOpenLabel = false; if (list is null) return; HeaderTitle = list.Name; @@ -112,8 +116,10 @@ public sealed partial class TasksIslandViewModel : ViewModelBase OpenItems.Add(r); } - HasOverdue = OverdueItems.Count > 0; - HasCompleted = CompletedItems.Count > 0; + HasOverdue = OverdueItems.Count > 0; + HasOpen = OpenItems.Count > 0; + HasCompleted = CompletedItems.Count > 0; + ShowOpenLabel = HasOpen && HasOverdue; CompletedHeader = $"COMPLETED · {CompletedItems.Count}"; } diff --git a/src/ClaudeDo.Ui/Views/Islands/TasksIslandView.axaml b/src/ClaudeDo.Ui/Views/Islands/TasksIslandView.axaml index a60afbd..4ba0510 100644 --- a/src/ClaudeDo.Ui/Views/Islands/TasksIslandView.axaml +++ b/src/ClaudeDo.Ui/Views/Islands/TasksIslandView.axaml @@ -89,10 +89,10 @@ - + + IsVisible="{Binding ShowOpenLabel}"/>