feat(ui): detach a monitor into its own window

This commit is contained in:
Mika Kuns
2026-06-25 15:30:37 +02:00
parent 4e2798b400
commit 5f6e7480f2
11 changed files with 85 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
using ClaudeDo.Data;
using ClaudeDo.Ui.Services;
using ClaudeDo.Ui.ViewModels;
using ClaudeDo.Ui.ViewModels.Islands;
using Microsoft.EntityFrameworkCore;
using Xunit;
@@ -130,4 +131,25 @@ public class MissionControlViewModelTests : IDisposable
Assert.Equal("t1", revealed);
}
[Fact]
public void Detach_RemovesFromGrid_ThenReDockRestores()
{
var worker = new FakeWorker();
using var vm = BuildVm(worker);
TaskMonitorViewModel? detached = null;
Action? reDock = null;
vm.ShowDetached = (m, rd) => { detached = m; reDock = rd; };
worker.RaiseTaskStarted("slot-1", "t1", DateTime.UtcNow);
var monitor = vm.Monitors[0];
monitor.DetachCommand.Execute(null);
Assert.Empty(vm.Monitors);
Assert.Same(monitor, detached);
reDock!.Invoke();
Assert.Single(vm.Monitors);
Assert.Same(monitor, vm.Monitors[0]);
}
}