From b0b15e474ec8acf15c9dc559361bebefb5fd465b Mon Sep 17 00:00:00 2001 From: Mika Kuns Date: Wed, 22 Apr 2026 15:08:07 +0200 Subject: [PATCH] feat(ui): always-visible Steps section at top of DetailsIsland with add-step input --- .../Islands/DetailsIslandViewModel.cs | 26 ++++ .../Views/Islands/DetailsIslandView.axaml | 119 ++++++++++-------- 2 files changed, 92 insertions(+), 53 deletions(-) diff --git a/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs index ce15016..46653ef 100644 --- a/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs @@ -110,6 +110,8 @@ public sealed partial class DetailsIslandViewModel : ViewModelBase public ObservableCollection Log { get; } = new(); public ObservableCollection Subtasks { get; } = new(); + [ObservableProperty] private string _newSubtaskTitle = ""; + // Claude CLI stream-json parser + buffer for partial text deltas private readonly StreamLineFormatter _formatter = new(); private readonly StringBuilder _claudeBuf = new(); @@ -487,6 +489,30 @@ public sealed partial class DetailsIslandViewModel : ViewModelBase CloseDetail?.Invoke(); } + [RelayCommand] + private async System.Threading.Tasks.Task AddSubtaskAsync() + { + if (Task is null) return; + var title = NewSubtaskTitle?.Trim(); + if (string.IsNullOrEmpty(title)) return; + + var entity = new ClaudeDo.Data.Models.SubtaskEntity + { + Id = Guid.NewGuid().ToString(), + TaskId = Task.Id, + Title = title, + Completed = false, + OrderNum = Subtasks.Count, + CreatedAt = DateTime.UtcNow, + }; + + await using var ctx = _dbFactory.CreateDbContext(); + await new SubtaskRepository(ctx).AddAsync(entity); + + Subtasks.Add(new SubtaskRowViewModel { Id = entity.Id, Title = entity.Title, Done = entity.Completed }); + NewSubtaskTitle = ""; + } + [RelayCommand] private async System.Threading.Tasks.Task SaveNotesAsync() { diff --git a/src/ClaudeDo.Ui/Views/Islands/DetailsIslandView.axaml b/src/ClaudeDo.Ui/Views/Islands/DetailsIslandView.axaml index a2aef9d..03ca9f8 100644 --- a/src/ClaudeDo.Ui/Views/Islands/DetailsIslandView.axaml +++ b/src/ClaudeDo.Ui/Views/Islands/DetailsIslandView.axaml @@ -88,7 +88,57 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -97,59 +147,22 @@ - - + - - - - - - - - - - - - - - - - - - - - - - - - - + + +