refactor(ui): remove pick-up-in-terminal, keep ConPTY as the single session entry

Two context-menu entries opened a Claude session for the same task via different
mechanisms (embedded ConPTY vs. an external wt terminal). Drop the external-terminal
path entirely, including its worker hub method, launcher plumbing, and localization
keys, since the embedded ConPTY session already covers every case it did.
This commit is contained in:
mika kuns
2026-08-05 09:05:46 +02:00
parent 63d8b5c28d
commit 87de53e052
21 changed files with 27 additions and 278 deletions
@@ -69,9 +69,6 @@ sealed class FakeWorkerClient : IWorkerClient
public Task CancelReviewAsync(string taskId) => Task.CompletedTask;
public Task WakeQueueAsync() { WakeQueueCalls++; return Task.CompletedTask; }
public Task StartPlanningSessionAsync(string taskId, CancellationToken ct = default) { StartPlanningCalls++; return Task.CompletedTask; }
public int PickUpInTerminalCalls { get; private set; }
public string? LastPickUpTaskId { get; private set; }
public Task ResumeTaskInTerminalAsync(string taskId, CancellationToken ct = default) { PickUpInTerminalCalls++; LastPickUpTaskId = taskId; return Task.CompletedTask; }
public Task SubmitTaskForReviewAsync(string taskId, CancellationToken ct = default) => Task.CompletedTask;
public Task<LaunchSpec> GetInteractiveLaunchSpecAsync(string taskId, CancellationToken ct = default)
=> Task.FromResult(new LaunchSpec(".", "claude", Array.Empty<string>(), new Dictionary<string, string>()));
@@ -188,28 +185,6 @@ public class TasksIslandViewModelPlanningTests
PlanningPhase phase = PlanningPhase.None)
=> new TaskRowViewModel { Id = id, Status = status, ParentTaskId = parentId, PlanningPhase = phase };
[Fact]
public async Task PickUpInTerminal_InvokesWorkerWithTaskId()
{
var row = MakeRow("t1", TaskStatus.WaitingForReview);
var (vm, worker) = VmFactory.Create([row]);
await vm.PickUpInTerminalCommand.ExecuteAsync(row);
Assert.Equal(1, worker.PickUpInTerminalCalls);
Assert.Equal("t1", worker.LastPickUpTaskId);
}
[Fact]
public void CanPickUpInTerminal_OnlyForReviewOrFailed()
{
Assert.True(MakeRow("a", TaskStatus.WaitingForReview).CanPickUpInTerminal);
Assert.True(MakeRow("b", TaskStatus.Failed).CanPickUpInTerminal);
Assert.False(MakeRow("c", TaskStatus.Idle).CanPickUpInTerminal);
Assert.False(MakeRow("d", TaskStatus.Running).CanPickUpInTerminal);
Assert.False(MakeRow("e", TaskStatus.Done).CanPickUpInTerminal);
}
[Fact]
public void PlanningParentWithChildren_CollapsedByDefault_ToggleExpands()
{