- 하단 컨텍스트 토큰 라벨이 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)
This commit is contained in:
@@ -1037,3 +1037,5 @@ MIT License
|
|||||||
- AX Agent 내부 설정에서 `호출 간격 최적화`, `의사결정 수준` 실행 방식 블록은 `코워크/코드` 공통 탭에만 남기고, `코워크`와 `코드` 개별 탭에서는 숨겼다. 함께 레거시 `실행 전 계획` 행도 UI에서 제거했다.
|
- AX Agent 내부 설정에서 `호출 간격 최적화`, `의사결정 수준` 실행 방식 블록은 `코워크/코드` 공통 탭에만 남기고, `코워크`와 `코드` 개별 탭에서는 숨겼다. 함께 레거시 `실행 전 계획` 행도 UI에서 제거했다.
|
||||||
- 업데이트: 2026-04-05 22:48 (KST)
|
- 업데이트: 2026-04-05 22:48 (KST)
|
||||||
- AX Agent 내부 설정의 `최대 컨텍스트 토큰` 프리셋에 `32K`, `128K` 중간값을 추가하고, 현재 저장값이 중간 구간에 있을 때도 가장 가까운 프리셋 카드가 자연스럽게 선택되도록 매핑을 보강했다.
|
- AX Agent 내부 설정의 `최대 컨텍스트 토큰` 프리셋에 `32K`, `128K` 중간값을 추가하고, 현재 저장값이 중간 구간에 있을 때도 가장 가까운 프리셋 카드가 자연스럽게 선택되도록 매핑을 보강했다.
|
||||||
|
- 업데이트: 2026-04-05 22:53 (KST)
|
||||||
|
- 하단 컨텍스트 토큰 라벨이 hover 후 남아 있던 문제를 수정하고, 토큰 심볼/팝업의 흐린 배경·그림자 느낌을 줄여 더 깔끔한 테두리 중심 스타일로 정리했다.
|
||||||
|
|||||||
@@ -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에서 완전히 제거했다.
|
- [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)
|
- 업데이트: 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` 구간에 있을 때도 가장 가까운 프리셋 카드가 올바르게 활성화되도록 보정했다.
|
- [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 종료 시 실제로 카드/팝업 둘 다 벗어난 경우에만 닫히게 조건을 정리했다. 또 심볼과 팝업은 흐린 배경/강한 그림자 대신 얇은 테두리와 약한 그림자 중심으로 수정했다.
|
||||||
|
|||||||
@@ -1734,9 +1734,9 @@
|
|||||||
Width="28"
|
Width="28"
|
||||||
Height="28"
|
Height="28"
|
||||||
CornerRadius="999"
|
CornerRadius="999"
|
||||||
BorderBrush="Transparent"
|
BorderBrush="{DynamicResource BorderColor}"
|
||||||
BorderThickness="0"
|
BorderThickness="1"
|
||||||
Background="Transparent"
|
Background="{DynamicResource LauncherBackground}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Visibility="Collapsed"
|
Visibility="Collapsed"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
@@ -1744,8 +1744,8 @@
|
|||||||
MouseLeave="TokenUsageCard_MouseLeave">
|
MouseLeave="TokenUsageCard_MouseLeave">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid Width="28" Height="28" VerticalAlignment="Center">
|
<Grid Width="28" Height="28" VerticalAlignment="Center">
|
||||||
<Ellipse Stroke="{DynamicResource HintBackground}"
|
<Ellipse Stroke="{DynamicResource BorderColor}"
|
||||||
StrokeThickness="3"/>
|
StrokeThickness="2.5"/>
|
||||||
<Path x:Name="TokenUsageArc"
|
<Path x:Name="TokenUsageArc"
|
||||||
Stroke="{DynamicResource AccentColor}"
|
Stroke="{DynamicResource AccentColor}"
|
||||||
StrokeThickness="3"
|
StrokeThickness="3"
|
||||||
@@ -1812,13 +1812,13 @@
|
|||||||
<Border Background="{DynamicResource LauncherBackground}"
|
<Border Background="{DynamicResource LauncherBackground}"
|
||||||
BorderBrush="{DynamicResource BorderColor}"
|
BorderBrush="{DynamicResource BorderColor}"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
CornerRadius="14"
|
CornerRadius="12"
|
||||||
Padding="12,10"
|
Padding="12,10"
|
||||||
MinWidth="186"
|
MinWidth="186"
|
||||||
MouseEnter="TokenUsagePopup_MouseEnter"
|
MouseEnter="TokenUsagePopup_MouseEnter"
|
||||||
MouseLeave="TokenUsagePopup_MouseLeave">
|
MouseLeave="TokenUsagePopup_MouseLeave">
|
||||||
<Border.Effect>
|
<Border.Effect>
|
||||||
<DropShadowEffect BlurRadius="18" ShadowDepth="0" Opacity="0.16"/>
|
<DropShadowEffect BlurRadius="10" ShadowDepth="0" Opacity="0.08"/>
|
||||||
</Border.Effect>
|
</Border.Effect>
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBlock x:Name="TokenUsagePopupTitle"
|
<TextBlock x:Name="TokenUsagePopupTitle"
|
||||||
|
|||||||
@@ -265,8 +265,7 @@ public partial class ChatWindow : Window
|
|||||||
_tokenUsagePopupCloseTimer.Tick += (_, _) =>
|
_tokenUsagePopupCloseTimer.Tick += (_, _) =>
|
||||||
{
|
{
|
||||||
_tokenUsagePopupCloseTimer.Stop();
|
_tokenUsagePopupCloseTimer.Stop();
|
||||||
if (TokenUsagePopup != null)
|
CloseTokenUsagePopupIfIdle();
|
||||||
TokenUsagePopup.IsOpen = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
KeyDown += ChatWindow_KeyDown;
|
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;
|
TokenUsageCard.Visibility = showContextUsage ? Visibility.Visible : Visibility.Collapsed;
|
||||||
if (!showContextUsage)
|
if (!showContextUsage)
|
||||||
{
|
{
|
||||||
|
if (TokenUsagePopup != null)
|
||||||
|
TokenUsagePopup.IsOpen = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18989,6 +18990,17 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
|||||||
_tokenUsagePopupCloseTimer.Start();
|
_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)
|
private static string BuildUsageModelKey(string? service, string? model)
|
||||||
{
|
{
|
||||||
var normalizedService = (service ?? "").Trim().ToLowerInvariant();
|
var normalizedService = (service ?? "").Trim().ToLowerInvariant();
|
||||||
|
|||||||
Reference in New Issue
Block a user