feat(ui): ssh workspaces as quick-session targets in mission control
This commit is contained in:
@@ -103,6 +103,10 @@ public abstract class StubWorkerClient : IWorkerClient
|
||||
public virtual Task<ListConfigDto?> GetListConfigAsync(string listId) => Task.FromResult<ListConfigDto?>(null);
|
||||
public virtual Task<List<string>> GetRepoImportFoldersAsync() => Task.FromResult(new List<string>());
|
||||
public virtual Task SetRepoImportFoldersAsync(List<string> folders) => Task.CompletedTask;
|
||||
public virtual Task<List<SshWorkspace>> GetSshWorkspacesAsync() => Task.FromResult(new List<SshWorkspace>());
|
||||
public virtual Task SetSshWorkspacesAsync(List<SshWorkspace> workspaces) => Task.CompletedTask;
|
||||
public virtual Task<LaunchSpec> GetSshLaunchSpecAsync(string workspaceId, string paneId, CancellationToken ct = default)
|
||||
=> Task.FromResult(new LaunchSpec(".", "ssh", Array.Empty<string>(), new Dictionary<string, string>()));
|
||||
public virtual Task UpdateTaskAgentSettingsAsync(UpdateTaskAgentSettingsDto dto) => Task.CompletedTask;
|
||||
public virtual Task<List<SessionSkillDto>> GetSessionSkillsAsync() => Task.FromResult(new List<SessionSkillDto>());
|
||||
public virtual Task<List<string>> InstallSessionSkillAsync(string url) => Task.FromResult(new List<string>());
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Linq;
|
||||
using ClaudeDo.Data;
|
||||
using ClaudeDo.Data.Models;
|
||||
using ClaudeDo.Data.Repositories;
|
||||
using ClaudeDo.Ui.Services;
|
||||
using ClaudeDo.Ui.ViewModels;
|
||||
using ClaudeDo.Ui.ViewModels.MissionControl;
|
||||
@@ -303,6 +304,28 @@ public class MissionControlViewModelTests : IDisposable
|
||||
Assert.True(vm.Queued[4].CanOpenSession);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task RefreshSessionTargetsAsync_AppendsSshWorkspaces_AndStartsSshPane()
|
||||
{
|
||||
await using (var db = NewContext())
|
||||
{
|
||||
db.Lists.Add(new ListEntity { Id = "L1", Name = "Alpha", WorkingDir = @"C:\repos\alpha", CreatedAt = DateTime.UtcNow });
|
||||
await db.SaveChangesAsync();
|
||||
await new AppSettingsRepository(db).SetSshWorkspacesAsync([new SshWorkspace("w1", "VPS", "vps", "/srv/app")]);
|
||||
}
|
||||
|
||||
using var vm = BuildVm(new FakeWorker());
|
||||
|
||||
await vm.RefreshSessionTargetsAsync();
|
||||
|
||||
Assert.Equal(4, vm.SessionTargets.Count); // home, browse, Alpha, VPS
|
||||
Assert.Contains("VPS", vm.SessionTargets[3].Label);
|
||||
|
||||
vm.SessionTargets[3].StartCommand.Execute(null);
|
||||
var pane = Assert.Single(vm.ConPtySessions);
|
||||
Assert.Equal("VPS", pane.DisplayTitle);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task RefreshSessionTargetsAsync_ListsWithWorkingDir_PlusBrowse()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user