워크스페이스 복원에 탐색기·메모장 상태와 적응형 실행 간격을 추가한다

- 파일 탐색기 현재 폴더 경로와 메모장 열린 파일 경로를 워크스페이스 스냅샷에 저장하고 복원 경로에 연결
- 브라우저/앱 공용 프로세스 명령줄 파서를 추가하고 패키지형 메모장 실행 fallback을 보강
- 복원 중 새 창 실행 사이에 CPU·메모리 부하 기반 적응형 지연과 설정 UI를 추가
- README와 DEVELOPMENT 개발 이력을 2026-04-15 17:41 (KST) 기준으로 갱신
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_workspace_app_restore\\ -p:IntermediateOutputPath=obj\\verify_workspace_app_restore\\ 경고 0 오류 0, dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter WorkspaceHandlerTests|ContextManagerTests|SettingsServiceTests -p:OutputPath=bin\\verify_workspace_app_restore_tests\\ -p:IntermediateOutputPath=obj\\verify_workspace_app_restore_tests\\ 54개 통과
This commit is contained in:
2026-04-15 17:45:07 +09:00
parent e823ff83e3
commit 232d5457d5
11 changed files with 2018 additions and 1179 deletions

View File

@@ -40,6 +40,21 @@ public class SettingsServiceTests
new LauncherSettings().EnableBrowserSessionRestore.Should().BeTrue();
}
[Fact]
public void LauncherSettings_DefaultAdaptiveWorkspaceRestoreThrottle_IsEnabled()
{
new LauncherSettings().EnableAdaptiveWorkspaceRestoreThrottle.Should().BeTrue();
}
[Fact]
public void LauncherSettings_DefaultWorkspaceRestoreDelayRange_IsValid()
{
var settings = new LauncherSettings();
settings.WorkspaceRestoreBaseDelayMs.Should().Be(250);
settings.WorkspaceRestoreMaxDelayMs.Should().BeGreaterOrEqualTo(settings.WorkspaceRestoreBaseDelayMs);
}
[Fact]
public void AppSettings_DefaultMonitorMismatch_IsWarn()
{
@@ -244,6 +259,39 @@ public class SettingsServiceTests
"https://portal.example.com");
}
[Fact]
public void WorkspaceProfile_Serialization_PreservesAppState()
{
var profile = new WorkspaceProfile
{
Name = "앱 상태 프로필",
Windows =
[
new()
{
Exe = "explorer.exe",
Title = "문서 - 파일 탐색기",
AppState = new AppWindowState
{
Kind = "explorer",
PrimaryPath = @"C:\Docs",
ActivePathIndex = 0,
Paths = [@"C:\Docs", @"C:\Docs\Archive"]
}
}
]
};
var json = JsonSerializer.Serialize(profile, JsonOptions);
var restored = JsonSerializer.Deserialize<WorkspaceProfile>(json, JsonOptions)!;
restored.Windows.Should().HaveCount(1);
restored.Windows[0].AppState.Should().NotBeNull();
restored.Windows[0].AppState!.Kind.Should().Be("explorer");
restored.Windows[0].AppState!.PrimaryPath.Should().Be(@"C:\Docs");
restored.Windows[0].AppState!.Paths.Should().ContainInOrder(@"C:\Docs", @"C:\Docs\Archive");
}
// ─── ClipboardTransformer ────────────────────────────────────────────────
[Fact]