From b1e11b27bc774b375b91d660bec25e217a7cae79 Mon Sep 17 00:00:00 2001 From: lacvet Date: Sun, 5 Apr 2026 20:26:59 +0900 Subject: [PATCH] =?UTF-8?q?AX=20Agent=20=EC=83=88=20=EB=8C=80=ED=99=94=20?= =?UTF-8?q?=EC=A0=84=ED=99=98=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20=EC=83=81=ED=83=9C=20=EC=B4=88=EA=B8=B0=ED=99=94=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 새 대화 시작 시 LoadOrCreateConversation 재호출로 기존 대화가 다시 복원되던 경로 제거 - ClearCurrentConversation 이후 항상 fresh conversation 생성으로 current conversation 전환 고정 - 새 대화 전환 시 대화별 설정, 압축 메트릭, 앱 상태, 프리셋 안내, 조건부 스킬 상태를 새 세션 기준으로 재동기화 - 빈 transcript를 다시 렌더하도록 정리해 첫 화면 깜빡임 후 기존 메시지가 남는 현상 수정 - README 및 DEVELOPMENT 문서에 2026-04-05 23:02 (KST) 기준 변경 이력 반영 검증: - dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ - 경고 0 / 오류 0 확인 --- README.md | 2 ++ docs/DEVELOPMENT.md | 2 ++ src/AxCopilot/Views/ChatWindow.xaml.cs | 11 ++++++++--- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b4ead08..529cfa1 100644 --- a/README.md +++ b/README.md @@ -1045,3 +1045,5 @@ MIT License - 런처의 클립보드 히스토리/클립보드 변환/순차 붙여넣기 실행 경로를 공통 포커스 복원 helper 기반으로 정리했다. 이전 활성 창 복원, 최소 대기, Ctrl+V 주입 순서를 [ForegroundPasteHelper.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/ForegroundPasteHelper.cs) 로 통일해 포커스가 원래 창으로 돌아가지 않아 붙여넣기가 누락되던 문제를 줄였다. - 업데이트: 2026-04-05 20:17 (KST) - AX Agent 메시지 transcript에서 사용자/assistant 행 여백을 더 끝단 기준으로 재정렬하고, `AX 에이전트` 라벨과 시간 표기 크기를 키워 메타 가독성을 보강했다. 반영 위치는 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 이다. +- 업데이트: 2026-04-05 23:02 (KST) + - AX Agent 새 대화 전환 경로를 실제 fresh conversation 생성 기준으로 수정했다. 기존에는 현재 대화를 저장한 뒤 LoadOrCreateConversation()을 다시 호출해 최신 저장 대화를 재로드하는 경로가 섞여 있어, 첫 화면이 잠깐 깜빡인 뒤 기존 대화가 그대로 남는 문제가 있었다. 이제 ClearCurrentConversation() 뒤에는 항상 새 대화를 생성하고, 대화별 설정/압축 메트릭/앱 상태를 새 conversation 기준으로 다시 동기화한 후 빈 transcript를 렌더한다. diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 43670e8..1909e30 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -4790,3 +4790,5 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎. - 런처 클립보드 붙여넣기 포커스 경로를 공통 helper 기반으로 재정리했다. [ForegroundPasteHelper.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/ForegroundPasteHelper.cs) 를 추가해 이전 활성 창 복원, 최소 대기, `Ctrl+V` 주입 순서를 하나로 통일했고, [ClipboardHistoryHandler.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Handlers/ClipboardHistoryHandler.cs), [ClipboardHandler.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Handlers/ClipboardHandler.cs), [PasteHandler.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Handlers/PasteHandler.cs) 가 모두 같은 포커스 복원 로직을 사용하도록 맞췄다. - 업데이트: 2026-04-05 20:17 (KST) - [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `AddMessageBubble(...)`에서 사용자/assistant wrapper 여백을 줄여 transcript 좌우 끝단 정렬감을 높였다. 또 assistant 헤더의 `AX 에이전트` 라벨, 상단 아이콘, 사용자/assistant 시간 표기 글꼴 크기와 opacity를 함께 올려 메타 정보가 지나치게 작게 보이던 문제를 보정했다. +- 업데이트: 2026-04-05 23:02 (KST) + - [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 StartNewConversation()을 수정해 새 대화 클릭 시 기존 대화를 다시 불러오지 않도록 정리했다. 기존 구현은 session.ClearCurrentConversation(_activeTab) 직후 session.LoadOrCreateConversation(...)을 호출해, 기억된 최근 대화가 다시 current conversation으로 복원되는 경로가 있었다. 이 때문에 빈 상태가 잠깐 깜빡인 뒤 기존 메시지가 다시 그려지는 현상이 발생했다. 이제는 clear 직후 session.CreateFreshConversation(...)만 사용하고, 이어서 LoadConversationSettings(), LoadCompactionMetricsFromConversation(), SyncAppStateWithCurrentConversation(), UpdateSelectedPresetGuide(), UpdateConditionalSkillActivation(reset: true), RenderMessages()를 fresh conversation 기준으로 다시 호출해 새 대화 화면이 안정적으로 유지되게 했다. diff --git a/src/AxCopilot/Views/ChatWindow.xaml.cs b/src/AxCopilot/Views/ChatWindow.xaml.cs index 8ab4a8f..025f686 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml.cs +++ b/src/AxCopilot/Views/ChatWindow.xaml.cs @@ -5369,7 +5369,7 @@ public partial class ChatWindow : Window { session.SaveCurrentConversation(_storage, _activeTab); session.ClearCurrentConversation(_activeTab); - _currentConversation = session.LoadOrCreateConversation(_activeTab, _storage, _settings); + _currentConversation = session.CreateFreshConversation(_activeTab, _settings); SyncTabConversationIdsFromSession(); } else @@ -5384,12 +5384,17 @@ public partial class ChatWindow : Window _tabConversationId[_activeTab] = null; SyncTabConversationIdsToSession(); MessagePanel.Children.Clear(); - EmptyState.Visibility = Visibility.Visible; _attachedFiles.Clear(); RefreshAttachedFilesUI(); + LoadConversationSettings(); + LoadCompactionMetricsFromConversation(); + SyncAppStateWithCurrentConversation(); UpdateChatTitle(); - RefreshConversationList(); UpdateFolderBar(); + UpdateSelectedPresetGuide(); + UpdateConditionalSkillActivation(reset: true); + RenderMessages(); + RefreshConversationList(); RefreshDraftQueueUi(); if (_activeTab == "Cowork") BuildBottomBar(); }