From 78905d16c092a4153a858bcf19af74decf8da012 Mon Sep 17 00:00:00 2001 From: lacvet Date: Sun, 5 Apr 2026 20:08:15 +0900 Subject: [PATCH] =?UTF-8?q?AX=20Agent=20=ED=86=A0=ED=81=B0=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=20=EB=9D=BC=EB=B2=A8=20hover=20=EC=A2=85=EB=A3=8C?= =?UTF-8?q?=EC=99=80=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 하단 컨텍스트 토큰 라벨이 hover 후 남아 있던 문제를 카드와 팝업의 실제 hover 상태 기준으로 닫히도록 수정 - 토큰 카드가 숨겨질 때 popup도 함께 닫히도록 보강 - 토큰 심볼과 popup 스타일을 얇은 테두리와 약한 그림자 중심으로 정리 - README와 DEVELOPMENT 문서에 2026-04-05 22:53 (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 | 14 +++++++------- src/AxCopilot/Views/ChatWindow.xaml.cs | 16 ++++++++++++++-- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index bb6ec10..1ede0a9 100644 --- a/README.md +++ b/README.md @@ -1037,3 +1037,5 @@ MIT License - AX Agent 내부 설정에서 `호출 간격 최적화`, `의사결정 수준` 실행 방식 블록은 `코워크/코드` 공통 탭에만 남기고, `코워크`와 `코드` 개별 탭에서는 숨겼다. 함께 레거시 `실행 전 계획` 행도 UI에서 제거했다. - 업데이트: 2026-04-05 22:48 (KST) - AX Agent 내부 설정의 `최대 컨텍스트 토큰` 프리셋에 `32K`, `128K` 중간값을 추가하고, 현재 저장값이 중간 구간에 있을 때도 가장 가까운 프리셋 카드가 자연스럽게 선택되도록 매핑을 보강했다. +- 업데이트: 2026-04-05 22:53 (KST) + - 하단 컨텍스트 토큰 라벨이 hover 후 남아 있던 문제를 수정하고, 토큰 심볼/팝업의 흐린 배경·그림자 느낌을 줄여 더 깔끔한 테두리 중심 스타일로 정리했다. diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index b15233e..b930df1 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -4782,3 +4782,5 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎. - [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 AX Agent 내부 설정의 `실행 방식` 블록을 `코워크/코드` 공통 탭 전용으로 제한했다. 이제 `호출 간격 최적화`, `의사결정 수준`은 `코워크/코드` 탭에만 보이고, `코워크`와 `코드` 개별 탭에서는 중복 노출되지 않는다. 레거시 `실행 전 계획` 행도 XAML에서 완전히 제거했다. - 업데이트: 2026-04-05 22:48 (KST) - [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `최대 컨텍스트 토큰` 프리셋 카드에 `32K`, `128K`를 추가했다. 함께 선택 매핑도 확장해서 현재 `MaxContextTokens` 값이 `16K~32K`, `64K~128K` 구간에 있을 때도 가장 가까운 프리셋 카드가 올바르게 활성화되도록 보정했다. +- 업데이트: 2026-04-05 22:53 (KST) + - [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 하단 컨텍스트 토큰 심볼과 hover 팝업을 다듬었다. 토큰 카드가 숨겨질 때 팝업도 함께 강제 종료되도록 보강했고, hover 종료 시 실제로 카드/팝업 둘 다 벗어난 경우에만 닫히게 조건을 정리했다. 또 심볼과 팝업은 흐린 배경/강한 그림자 대신 얇은 테두리와 약한 그림자 중심으로 수정했다. diff --git a/src/AxCopilot/Views/ChatWindow.xaml b/src/AxCopilot/Views/ChatWindow.xaml index 2b1517b..ff03eb6 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml +++ b/src/AxCopilot/Views/ChatWindow.xaml @@ -1734,9 +1734,9 @@ Width="28" Height="28" CornerRadius="999" - BorderBrush="Transparent" - BorderThickness="0" - Background="Transparent" + BorderBrush="{DynamicResource BorderColor}" + BorderThickness="1" + Background="{DynamicResource LauncherBackground}" VerticalAlignment="Center" Visibility="Collapsed" Cursor="Hand" @@ -1744,8 +1744,8 @@ MouseLeave="TokenUsageCard_MouseLeave"> - + - + { _tokenUsagePopupCloseTimer.Stop(); - if (TokenUsagePopup != null) - TokenUsagePopup.IsOpen = false; + CloseTokenUsagePopupIfIdle(); }; KeyDown += ChatWindow_KeyDown; @@ -18866,6 +18865,8 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi TokenUsageCard.Visibility = showContextUsage ? Visibility.Visible : Visibility.Collapsed; if (!showContextUsage) { + if (TokenUsagePopup != null) + TokenUsagePopup.IsOpen = false; return; } @@ -18989,6 +18990,17 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi _tokenUsagePopupCloseTimer.Start(); } + private void CloseTokenUsagePopupIfIdle() + { + if (TokenUsagePopup == null) + return; + + var cardHovered = TokenUsageCard?.IsMouseOver ?? false; + var popupHovered = TokenUsagePopup.Child is FrameworkElement popupChild && popupChild.IsMouseOver; + if (!cardHovered && !popupHovered) + TokenUsagePopup.IsOpen = false; + } + private static string BuildUsageModelKey(string? service, string? model) { var normalizedService = (service ?? "").Trim().ToLowerInvariant();