feat(mission-control): column picker for the overview grid

Auto keeps the pane-count heuristic; 1-4 fixes the column count (capped at
the pane count). Persisted to ui.config.json as MissionControlColumns.
This commit is contained in:
Mika Kuns
2026-09-30 10:39:23 +02:00
parent 0d029717f8
commit a7c3d18533
8 changed files with 99 additions and 8 deletions
@@ -491,6 +491,33 @@ public class MissionControlViewModelTests : IDisposable
Assert.Equal(2, vm.ColumnCount);
}
[Fact]
public async Task SetColumns_OverridesAutoCapsAtPaneCountAndPersists()
{
var path = Path.Combine(Path.GetTempPath(), $"claudedo_mc_cfg_{Guid.NewGuid():N}.json");
try
{
var worker = new FakeWorker();
using var vm = new MissionControlViewModel(new TestDbFactory(NewContext), worker,
new UsagePillViewModel(worker), new AppSettings { ConfigPath = path });
for (var i = 1; i <= 4; i++) await vm.OpenConPtySessionAsync($"t{i}");
Assert.Equal(2, vm.ColumnCount); // auto: 4 panes -> 2x2
vm.SetColumnsCommand.Execute("3");
Assert.Equal(3, vm.ColumnCount);
vm.SetColumnsCommand.Execute("4");
vm.Panes[0].CloseCommand.Execute(null);
Assert.Equal(3, vm.ColumnCount); // never more columns than panes
Assert.Equal(4, AppSettings.Load(path).MissionControlColumns);
vm.SetColumnsCommand.Execute("0");
Assert.Equal(2, vm.ColumnCount);
}
finally { try { File.Delete(path); } catch { } }
}
[Fact]
public async Task CloseConPtySession_RemovesFromConPtySessionsAndPanes()
{