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

- 파일 탐색기 현재 폴더 경로와 메모장 열린 파일 경로를 워크스페이스 스냅샷에 저장하고 복원 경로에 연결
- 브라우저/앱 공용 프로세스 명령줄 파서를 추가하고 패키지형 메모장 실행 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

@@ -3076,6 +3076,75 @@
</Grid>
</Border>
<Border Style="{StaticResource SettingsRow}">
<Grid>
<StackPanel HorizontalAlignment="Left">
<TextBlock Style="{StaticResource RowLabel}" Text="복원 속도 자동 조절"/>
<TextBlock Style="{StaticResource RowHint}"
Text="워크스페이스 복원 시 CPU·메모리 상태를 보고 다음 창 실행 간격을 늘리거나 줄입니다. 느린 PC에서 한꺼번에 창이 뜨며 버벅이는 상황을 줄이는 용도입니다."/>
</StackPanel>
<CheckBox Style="{StaticResource ToggleSwitch}"
HorizontalAlignment="Right" VerticalAlignment="Center"
IsChecked="{Binding EnableAdaptiveWorkspaceRestoreThrottle, Mode=TwoWay}"/>
</Grid>
</Border>
<Border Style="{StaticResource SettingsRow}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="140"/>
<ColumnDefinition Width="54"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" HorizontalAlignment="Left" Margin="0,0,18,0">
<TextBlock Style="{StaticResource RowLabel}" Text="복원 기본 간격"/>
<TextBlock Style="{StaticResource RowHint}"
Text="새 창을 하나 띄운 뒤 다음 창을 실행하기 전 최소 대기 시간입니다."/>
</StackPanel>
<Slider Grid.Column="1"
Minimum="0" Maximum="1000"
TickFrequency="50" IsSnapToTickEnabled="True"
VerticalAlignment="Center"
Value="{Binding WorkspaceRestoreBaseDelayMs, Mode=TwoWay}"/>
<Border Grid.Column="2" Width="64" Height="28" CornerRadius="6"
Background="{DynamicResource ItemHoverBackground}"
VerticalAlignment="Center" HorizontalAlignment="Right">
<TextBlock Text="{Binding WorkspaceRestoreBaseDelayMs, StringFormat={}{0}ms}"
FontSize="12" FontWeight="SemiBold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Grid>
</Border>
<Border Style="{StaticResource SettingsRow}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="140"/>
<ColumnDefinition Width="54"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" HorizontalAlignment="Left" Margin="0,0,18,0">
<TextBlock Style="{StaticResource RowLabel}" Text="복원 최대 간격"/>
<TextBlock Style="{StaticResource RowHint}"
Text="시스템 부하가 높을 때 늘어날 수 있는 최대 대기 시간입니다."/>
</StackPanel>
<Slider Grid.Column="1"
Minimum="200" Maximum="3000"
TickFrequency="100" IsSnapToTickEnabled="True"
VerticalAlignment="Center"
Value="{Binding WorkspaceRestoreMaxDelayMs, Mode=TwoWay}"/>
<Border Grid.Column="2" Width="64" Height="28" CornerRadius="6"
Background="{DynamicResource ItemHoverBackground}"
VerticalAlignment="Center" HorizontalAlignment="Right">
<TextBlock Text="{Binding WorkspaceRestoreMaxDelayMs, StringFormat={}{0}ms}"
FontSize="12" FontWeight="SemiBold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Grid>
</Border>
<!-- ── 기록 기능 ── -->
<TextBlock Style="{StaticResource SectionHeader}" Text="기록 기능"/>