diff --git a/src/ClaudeDo.Localization/locales/de.json b/src/ClaudeDo.Localization/locales/de.json index 3b7bc8f..b42dcf2 100644 --- a/src/ClaudeDo.Localization/locales/de.json +++ b/src/ClaudeDo.Localization/locales/de.json @@ -68,6 +68,8 @@ "enterKey": "ENTER", "notesPinnedRow": "Notizen (Tagesnotizen)", "prepareDay": "Tag vorbereiten", + "prepLog": "Vorbereitungs-Log", + "clearDay": "Tag leeren", "overdue": "ÜBERFÄLLIG", "tasks": "AUFGABEN", "clearCompletedTip": "Alle abgeschlossenen löschen", diff --git a/src/ClaudeDo.Localization/locales/en.json b/src/ClaudeDo.Localization/locales/en.json index 2d0f3aa..8c9d78d 100644 --- a/src/ClaudeDo.Localization/locales/en.json +++ b/src/ClaudeDo.Localization/locales/en.json @@ -68,6 +68,8 @@ "enterKey": "ENTER", "notesPinnedRow": "Notes (daily notes)", "prepareDay": "Prepare day", + "prepLog": "Prep log", + "clearDay": "Clear day", "overdue": "OVERDUE", "tasks": "TASKS", "clearCompletedTip": "Clear all completed", diff --git a/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs index fa65b95..e45b8b1 100644 --- a/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Islands/TasksIslandViewModel.cs @@ -27,6 +27,7 @@ public sealed partial class TasksIslandViewModel : ViewModelBase public event EventHandler? FocusAddTaskRequested; public event EventHandler? TasksChanged; public event Action? NotesRequested; + public event Action? PrepRequested; public void RequestFocusAddTask() => FocusAddTaskRequested?.Invoke(this, EventArgs.Empty); [RelayCommand] @@ -40,10 +41,22 @@ public sealed partial class TasksIslandViewModel : ViewModelBase private async Task PrepareDayAsync() { if (_worker is null) return; + PrepRequested?.Invoke(); try { await _worker.RunDailyPrepNowAsync(); } catch { /* worker offline; broadcast will reconcile on return */ } } + [RelayCommand] + private void ShowPrepLog() => PrepRequested?.Invoke(); + + [RelayCommand] + private async Task ClearDayAsync() + { + if (_worker is null) return; + try { await _worker.ClearMyDayAsync(); } + catch { /* worker offline; broadcast will reconcile on return */ } + } + public ObservableCollection Items { get; } = new(); public ObservableCollection OverdueItems { get; } = new(); public ObservableCollection OpenItems { get; } = new(); diff --git a/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs b/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs index 28a6411..9c46ccb 100644 --- a/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/IslandsShellViewModel.cs @@ -199,6 +199,7 @@ public sealed partial class IslandsShellViewModel : ViewModelBase Lists.SelectionChanged += (_, _) => Tasks.LoadForList(Lists.SelectedList); Tasks.SelectionChanged += (_, _) => Details.Bind(Tasks.SelectedTask); Tasks.NotesRequested += () => Details.ShowNotes(); + Tasks.PrepRequested += () => Details.ShowPrep(); Tasks.TasksChanged += (_, _) => _ = Lists.RefreshCountsAsync(); Tasks.OpenListSettingsRequested += (_, _) => { diff --git a/src/ClaudeDo.Ui/Views/Islands/TasksIslandView.axaml b/src/ClaudeDo.Ui/Views/Islands/TasksIslandView.axaml index 020d4fe..83bcc81 100644 --- a/src/ClaudeDo.Ui/Views/Islands/TasksIslandView.axaml +++ b/src/ClaudeDo.Ui/Views/Islands/TasksIslandView.axaml @@ -82,6 +82,22 @@ Command="{Binding PrepareDayCommand}" Content="{loc:Tr tasks.prepareDay}"/> + +