From 61f82bdd10fc29dcfa94479ab79897376347f20b Mon Sep 17 00:00:00 2001 From: lacvet Date: Sun, 5 Apr 2026 22:33:39 +0900 Subject: [PATCH] =?UTF-8?q?=EB=82=B4=EB=B6=80=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EA=B0=9C=EB=B0=9C=EC=9E=90=20=ED=86=A0=EA=B8=80=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=20=EA=B2=BD=EB=A1=9C=20=EB=B3=B5=EA=B5=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AX Agent 내부 설정 개발자 탭의 워크플로우 시각화, 전체 호출·토큰 합계 표시, 감사 로그 토글에 변경 이벤트를 연결했습니다. 오버레이 재동기화 시 기본값으로 되돌아가던 문제를 막고 즉시 저장되도록 보정했으며 문서 이력과 빌드 검증도 함께 반영했습니다. --- README.md | 2 ++ docs/DEVELOPMENT.md | 3 +++ src/AxCopilot/Views/ChatWindow.xaml | 12 +++++++++--- src/AxCopilot/Views/ChatWindow.xaml.cs | 27 ++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6ae0beb..19b08fc 100644 --- a/README.md +++ b/README.md @@ -1106,3 +1106,5 @@ MIT License - 코워크/코드 탭의 사용자 메시지도 assistant 메시지와 같은 파일 경로 강조 렌더러를 쓰도록 바꿔, 폴더 하위 파일명이나 경로를 입력하면 채팅 본문에서 파란색으로 인식되게 맞췄다. - 업데이트: 2026-04-05 22:29 (KST) - AX Agent 채팅/코워크 프리셋을 선택할 때, 메시지도 입력도 없는 fresh conversation인데도 `새 대화`가 반복 생성되던 흐름을 보정했다. 이제 현재 대화가 이미 있으면 그 빈 대화에 프리셋만 적용하고, 실제 대화가 아예 없는 경우에만 새 대화를 만든다. +- 업데이트: 2026-04-05 22:32 (KST) + - AX Agent 내부 설정 개발자 탭의 `워크플로우 시각화`, `전체 호출·토큰 합계 표시`, `감사 로그` 토글이 누르자마자 꺼지는 문제를 수정했다. 각 토글의 변경 이벤트를 연결해 즉시 저장되도록 보정했다. diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 20a7204..0710b3b 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -4865,3 +4865,6 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎. - 업데이트: 2026-04-05 22:29 (KST) - [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `SelectTopic(...)`에서 fresh conversation이 이미 있는 경우에는 `StartNewConversation()`를 다시 호출하지 않도록 보정했다. 기존에는 메시지도 입력도 없는 빈 대화에서 프리셋만 눌러도 새 conversation이 계속 생성되어 좌측 목록에 `새 대화`가 누적될 수 있었다. - 현재는 `_currentConversation` 존재 여부를 기준으로 빈 대화 재사용과 실제 신규 생성 경로를 분리해, 프리셋 클릭은 같은 새 대화 안에서 메타데이터만 갱신하도록 맞췄다. +- 업데이트: 2026-04-05 22:32 (KST) + - [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `ChkOverlayWorkflowVisualizer`, `ChkOverlayShowTotalCallStats`, `ChkOverlayEnableAuditLog`에 `Checked/Unchecked` 이벤트를 연결했다. + - [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)에 각 토글 전용 저장 handler를 추가해, 개발자 탭 옵션이 눌린 직후 오버레이 재동기화로 기본값으로 되돌아가던 문제를 해결했다. diff --git a/src/AxCopilot/Views/ChatWindow.xaml b/src/AxCopilot/Views/ChatWindow.xaml index 20ff680..907ae20 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml +++ b/src/AxCopilot/Views/ChatWindow.xaml @@ -4134,7 +4134,9 @@ + Style="{StaticResource ToggleSwitch}" + Checked="ChkOverlayWorkflowVisualizer_Changed" + Unchecked="ChkOverlayWorkflowVisualizer_Changed"/> @@ -4154,7 +4156,9 @@ + Style="{StaticResource ToggleSwitch}" + Checked="ChkOverlayShowTotalCallStats_Changed" + Unchecked="ChkOverlayShowTotalCallStats_Changed"/> @@ -4174,7 +4178,9 @@ + Style="{StaticResource ToggleSwitch}" + Checked="ChkOverlayEnableAuditLog_Changed" + Unchecked="ChkOverlayEnableAuditLog_Changed"/> diff --git a/src/AxCopilot/Views/ChatWindow.xaml.cs b/src/AxCopilot/Views/ChatWindow.xaml.cs index f3e3d56..2476770 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml.cs +++ b/src/AxCopilot/Views/ChatWindow.xaml.cs @@ -15164,6 +15164,33 @@ public partial class ChatWindow : Window PersistOverlaySettingsState(refreshOverlayDeferredInputs: false); } + private void ChkOverlayWorkflowVisualizer_Changed(object sender, RoutedEventArgs e) + { + if (_isOverlaySettingsSyncing || ChkOverlayWorkflowVisualizer == null) + return; + + _settings.Settings.Llm.WorkflowVisualizer = ChkOverlayWorkflowVisualizer.IsChecked == true; + PersistOverlaySettingsState(refreshOverlayDeferredInputs: false); + } + + private void ChkOverlayShowTotalCallStats_Changed(object sender, RoutedEventArgs e) + { + if (_isOverlaySettingsSyncing || ChkOverlayShowTotalCallStats == null) + return; + + _settings.Settings.Llm.ShowTotalCallStats = ChkOverlayShowTotalCallStats.IsChecked == true; + PersistOverlaySettingsState(refreshOverlayDeferredInputs: false); + } + + private void ChkOverlayEnableAuditLog_Changed(object sender, RoutedEventArgs e) + { + if (_isOverlaySettingsSyncing || ChkOverlayEnableAuditLog == null) + return; + + _settings.Settings.Llm.EnableAuditLog = ChkOverlayEnableAuditLog.IsChecked == true; + PersistOverlaySettingsState(refreshOverlayDeferredInputs: false); + } + private void OverlayNav_Checked(object sender, RoutedEventArgs e) { if (sender is not RadioButton rb || rb.Tag is not string tag)