AX Agent 내부 설정의 워크플로우 시각화와 자동 프리뷰를 복구한다\n\n- 개발자 탭의 워크플로우 시각화가 숨은 DevMode 의존 때문에 실제 분석기 창을 띄우지 않던 문제를 수정한다\n- 워크플로우 시각화 토글을 켜면 즉시 창을 열고 끄면 바로 숨기도록 동작을 연결한다\n- 일반 설정에만 남아 있던 문서 미리보기 자동 표시 옵션을 AX Agent 내부 설정 공통 탭에도 복원한다\n- 내부 설정의 자동 프리뷰 콤보를 Llm.AutoPreview와 동기화하고 변경 즉시 저장되도록 연결한다\n- README와 DEVELOPMENT 문서에 변경 내용과 시각을 반영한다\n\n검증 결과\n- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\\n- 경고 0 / 오류 0
Some checks failed
Release Gate / gate (push) Has been cancelled

This commit is contained in:
2026-04-07 08:58:00 +09:00
parent a686d822e7
commit fbaaf19391
4 changed files with 65 additions and 2 deletions

View File

@@ -1452,3 +1452,6 @@ MIT License
- Cowork/Code 진행 카드의 경과 시간 계산을 보정했습니다. 스트리밍 시작 시각이 준비되기 전에 진행 힌트가 먼저 그려질 때 `수천만 시간`처럼 비정상값이 표시되던 문제를 막고, 6시간을 넘는 비현실적인 경과 시간은 자동 무시하도록 정리했습니다. - Cowork/Code 진행 카드의 경과 시간 계산을 보정했습니다. 스트리밍 시작 시각이 준비되기 전에 진행 힌트가 먼저 그려질 때 `수천만 시간`처럼 비정상값이 표시되던 문제를 막고, 6시간을 넘는 비현실적인 경과 시간은 자동 무시하도록 정리했습니다.
- AX Agent 입력창 글로우를 런처와 같은 리듬의 무지개 글로우로 다시 맞췄습니다. 글로우 외곽선 두께와 블러를 부드럽게 조정하고, 라이브 진행 카드도 테마 AccentColor 기반의 은은한 톤을 써서 주황색 고정 느낌을 줄였습니다. - AX Agent 입력창 글로우를 런처와 같은 리듬의 무지개 글로우로 다시 맞췄습니다. 글로우 외곽선 두께와 블러를 부드럽게 조정하고, 라이브 진행 카드도 테마 AccentColor 기반의 은은한 톤을 써서 주황색 고정 느낌을 줄였습니다.
- 일반 설정에 있던 `런처 무지개 글로우`, `선택 아이템 글로우`, `채팅 입력창 무지개 글로우`를 AX Agent 내부 설정으로 이동해, 이제 내부 설정에서 바로 런처/입력창 글로우를 함께 조정할 수 있습니다. - 일반 설정에 있던 `런처 무지개 글로우`, `선택 아이템 글로우`, `채팅 입력창 무지개 글로우`를 AX Agent 내부 설정으로 이동해, 이제 내부 설정에서 바로 런처/입력창 글로우를 함께 조정할 수 있습니다.
- 업데이트: 2026-04-07 02:56 (KST)
- AX Agent 내부 설정 개발자 탭의 `워크플로우 시각화`가 숨은 개발자 모드 의존 때문에 실제로 창을 띄우지 않던 문제를 수정했습니다. 이제 토글을 켜면 즉시 워크플로우 분석기 창이 열리고, 끄면 창이 숨겨집니다.
- 일반 설정에만 남아 있던 `문서 미리보기 자동 표시` 옵션을 AX Agent 내부 설정 공통 탭에도 복원해, Cowork/Code에서 프리뷰 자동 열기 정책을 내부 설정에서 바로 바꿀 수 있게 했습니다.

View File

@@ -5302,3 +5302,12 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
- AX Agent 내부 설정 공통 탭에 `글로우 효과` 섹션을 추가해 런처 무지개 글로우, 런처 선택 글로우, 채팅 입력창 글로우를 내부 설정에서 바로 조정할 수 있게 했다. - AX Agent 내부 설정 공통 탭에 `글로우 효과` 섹션을 추가해 런처 무지개 글로우, 런처 선택 글로우, 채팅 입력창 글로우를 내부 설정에서 바로 조정할 수 있게 했다.
- [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml) - [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml)
- 일반 설정 테마 섹션에 있던 런처/채팅 글로우 토글 3종을 제거해 AX Agent 내부 설정으로 UI를 일원화했다. - 일반 설정 테마 섹션에 있던 런처/채팅 글로우 토글 3종을 제거해 AX Agent 내부 설정으로 UI를 일원화했다.
## 2026-04-07 02:56 (KST)
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)
- `워크플로우 시각화``DevMode`에 묶여 토글을 켜도 실제 분석기 창이 열리지 않던 의존을 제거했다.
- 설정 저장 후 `SyncWorkflowVisualizerWindow()`를 호출해, 토글을 켜면 분석기 창이 바로 열리고 끄면 즉시 숨겨지도록 연결했다.
- 내부 설정 공통 탭의 자동 프리뷰 콤보 값을 `Llm.AutoPreview`와 동기화하고, 변경 시 바로 저장되도록 `CmbOverlayAutoPreview_SelectionChanged`를 추가했다.
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)
- AX Agent 내부 설정 공통 탭에 `문서 미리보기` 콤보를 추가해 `자동 표시 / 수동 / 비활성화`를 내부 설정에서 직접 제어할 수 있게 했다.

View File

@@ -3507,6 +3507,31 @@
Style="{StaticResource OverlayComboBox}" Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayDefaultMood_SelectionChanged"/> SelectionChanged="CmbOverlayDefaultMood_SelectionChanged"/>
</Grid> </Grid>
<Grid x:Name="OverlayAutoPreviewRow" Margin="0,0,0,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="문서 미리보기"
FontSize="12.5"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="파일 생성 시 오른쪽 프리뷰 패널을 자동으로 열지 정합니다."
Margin="0,4,0,0"
FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</StackPanel>
<ComboBox x:Name="CmbOverlayAutoPreview"
Grid.Column="1"
MinWidth="160"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayAutoPreview_SelectionChanged">
<ComboBoxItem Content="자동 표시" Tag="auto"/>
<ComboBoxItem Content="수동" Tag="manual"/>
<ComboBoxItem Content="비활성화" Tag="off"/>
</ComboBox>
</Grid>
<Grid x:Name="OverlayPdfExportPathRow" Margin="0,0,0,12"> <Grid x:Name="OverlayPdfExportPathRow" Margin="0,0,0,12">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>

View File

@@ -6229,7 +6229,7 @@ public partial class ChatWindow : Window
private void OpenWorkflowAnalyzerIfEnabled() private void OpenWorkflowAnalyzerIfEnabled()
{ {
var llm = _settings.Settings.Llm; var llm = _settings.Settings.Llm;
if (!llm.DevMode || !llm.WorkflowVisualizer) return; if (!llm.WorkflowVisualizer) return;
if (_analyzerWindow == null) if (_analyzerWindow == null)
{ {
@@ -6266,10 +6266,23 @@ public partial class ChatWindow : Window
private void UpdateAnalyzerButtonVisibility() private void UpdateAnalyzerButtonVisibility()
{ {
var llm = _settings.Settings.Llm; var llm = _settings.Settings.Llm;
BtnShowAnalyzer.Visibility = (llm.DevMode && llm.WorkflowVisualizer) BtnShowAnalyzer.Visibility = llm.WorkflowVisualizer
? Visibility.Visible : Visibility.Collapsed; ? Visibility.Visible : Visibility.Collapsed;
} }
private void SyncWorkflowVisualizerWindow()
{
UpdateAnalyzerButtonVisibility();
if (_settings.Settings.Llm.WorkflowVisualizer)
{
OpenWorkflowAnalyzerIfEnabled();
}
else if (_analyzerWindow != null && _analyzerWindow.IsVisible)
{
_analyzerWindow.Hide();
}
}
/// <summary>워크플로우 분석기 창을 수동으로 열거나 포커스합니다 (하단 바 버튼).</summary> /// <summary>워크플로우 분석기 창을 수동으로 열거나 포커스합니다 (하단 바 버튼).</summary>
private void BtnShowAnalyzer_Click(object sender, MouseButtonEventArgs e) private void BtnShowAnalyzer_Click(object sender, MouseButtonEventArgs e)
{ {
@@ -10314,6 +10327,7 @@ public partial class ChatWindow : Window
ApplyAgentThemeResources(); ApplyAgentThemeResources();
UpdatePermissionUI(); UpdatePermissionUI();
UpdateDataUsageUI(); UpdateDataUsageUI();
SyncWorkflowVisualizerWindow();
SaveConversationSettings(); SaveConversationSettings();
RefreshInlineSettingsPanel(); RefreshInlineSettingsPanel();
UpdateModelLabel(); UpdateModelLabel();
@@ -11203,6 +11217,8 @@ public partial class ChatWindow : Window
OverlayDefaultOutputFormatRow.Visibility = showCowork ? Visibility.Visible : Visibility.Collapsed; OverlayDefaultOutputFormatRow.Visibility = showCowork ? Visibility.Visible : Visibility.Collapsed;
if (OverlayDefaultMoodRow != null) if (OverlayDefaultMoodRow != null)
OverlayDefaultMoodRow.Visibility = showCowork ? Visibility.Visible : Visibility.Collapsed; OverlayDefaultMoodRow.Visibility = showCowork ? Visibility.Visible : Visibility.Collapsed;
if (OverlayAutoPreviewRow != null)
OverlayAutoPreviewRow.Visibility = showShared ? Visibility.Visible : Visibility.Collapsed;
if (OverlayPdfExportPathRow != null) if (OverlayPdfExportPathRow != null)
OverlayPdfExportPathRow.Visibility = showChat ? Visibility.Visible : Visibility.Collapsed; OverlayPdfExportPathRow.Visibility = showChat ? Visibility.Visible : Visibility.Collapsed;
if (OverlayToggleImageInput != null) if (OverlayToggleImageInput != null)
@@ -12583,6 +12599,7 @@ public partial class ChatWindow : Window
SelectComboTag(CmbOverlayFastMode, llm.FreeTierMode ? "on" : "off"); SelectComboTag(CmbOverlayFastMode, llm.FreeTierMode ? "on" : "off");
SelectComboTag(CmbOverlayDefaultOutputFormat, llm.DefaultOutputFormat ?? "auto"); SelectComboTag(CmbOverlayDefaultOutputFormat, llm.DefaultOutputFormat ?? "auto");
SelectComboTag(CmbOverlayDefaultMood, _selectedMood ?? llm.DefaultMood ?? "modern"); SelectComboTag(CmbOverlayDefaultMood, _selectedMood ?? llm.DefaultMood ?? "modern");
SelectComboTag(CmbOverlayAutoPreview, llm.AutoPreview ?? "off");
SelectComboTag(CmbOverlayAgentLogLevel, llm.AgentLogLevel ?? "simple"); SelectComboTag(CmbOverlayAgentLogLevel, llm.AgentLogLevel ?? "simple");
UpdateDataUsageUI(); UpdateDataUsageUI();
} }
@@ -13090,6 +13107,15 @@ public partial class ChatWindow : Window
PersistOverlaySettingsState(refreshOverlayDeferredInputs: false); PersistOverlaySettingsState(refreshOverlayDeferredInputs: false);
} }
private void CmbOverlayAutoPreview_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (_isOverlaySettingsSyncing || CmbOverlayAutoPreview.SelectedItem is not ComboBoxItem selected || selected.Tag is not string tag)
return;
_settings.Settings.Llm.AutoPreview = tag;
PersistOverlaySettingsState(refreshOverlayDeferredInputs: false);
}
private void CmbOverlayOperationMode_SelectionChanged(object sender, SelectionChangedEventArgs e) private void CmbOverlayOperationMode_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
if (_isOverlaySettingsSyncing || CmbOverlayOperationMode.SelectedItem is not ComboBoxItem selected || selected.Tag is not string tag) if (_isOverlaySettingsSyncing || CmbOverlayOperationMode.SelectedItem is not ComboBoxItem selected || selected.Tag is not string tag)