From 549aee097b4c57a087ceac1e8b1507c18769d091 Mon Sep 17 00:00:00 2001 From: mika kuns Date: Fri, 7 Aug 2026 14:01:26 +0200 Subject: [PATCH] feat(ui): default to the Git tab for manual and interactive tasks A hand-driven task produces no streamed agent output, so the Output tab opened empty. Bind now selects git for manual/interactive rows and resets to output for autonomous ones. --- .../Islands/DetailsIslandViewModel.cs | 4 +++ .../ViewModels/DetailsIslandTabsTests.cs | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs index 44524839..71b86dbe 100644 --- a/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs @@ -601,6 +601,10 @@ public sealed partial class DetailsIslandViewModel : ViewModelBase, IDisposable return; } + // A hand-driven task (manual reminder or a live ConPTY session) produces no streamed + // agent output, so the Output tab would open empty -- its work shows up as git changes. + SelectedTab = row.IsManual || row.HasInteractiveSession ? "git" : "output"; + _ = BindAsync(row, ct); } diff --git a/tests/ClaudeDo.Ui.Tests/ViewModels/DetailsIslandTabsTests.cs b/tests/ClaudeDo.Ui.Tests/ViewModels/DetailsIslandTabsTests.cs index 6648b548..09f43902 100644 --- a/tests/ClaudeDo.Ui.Tests/ViewModels/DetailsIslandTabsTests.cs +++ b/tests/ClaudeDo.Ui.Tests/ViewModels/DetailsIslandTabsTests.cs @@ -80,4 +80,37 @@ public class DetailsIslandTabsTests : IDisposable Assert.True(vm.IsOutputTab); Assert.False(vm.IsGitTab); } + + [Fact] + public void Bind_manual_task_defaults_to_git_tab() + { + var vm = NewVm(); + + vm.Bind(new TaskRowViewModel { Id = Guid.NewGuid().ToString("N"), IsManual = true }); + + Assert.True(vm.IsGitTab); + Assert.False(vm.IsOutputTab); + } + + [Fact] + public void Bind_interactive_task_defaults_to_git_tab() + { + var vm = NewVm(); + + vm.Bind(new TaskRowViewModel { Id = Guid.NewGuid().ToString("N"), HasInteractiveSession = true }); + + Assert.True(vm.IsGitTab); + } + + [Fact] + public void Bind_autonomous_task_defaults_to_output_tab() + { + var vm = NewVm(); + vm.SelectTabCommand.Execute("git"); + + vm.Bind(new TaskRowViewModel { Id = Guid.NewGuid().ToString("N") }); + + Assert.True(vm.IsOutputTab); + Assert.False(vm.IsGitTab); + } }