Compare commits

...

2 Commits

Author SHA1 Message Date
bfa1e342c0 AX Agent 토큰 라벨 닫힘 보강 및 전송 버튼 정렬 개선
Some checks failed
Release Gate / gate (push) Has been cancelled
- 토큰 hover popup 닫힘 경로를 창 전체 마우스 이동, 클릭, 비활성화 기준까지 확장해 라벨이 남는 현상 완화
- 컨텍스트 라벨은 카드 밖으로 벗어났을 때 더 빠르게 닫히도록 idle 검사 경로 보강
- 전송 버튼 크기를 키우고 내부 send glyph 크기와 오프셋을 조정해 작고 치우쳐 보이던 인상 보정
- README 및 DEVELOPMENT 문서에 2026-04-06 00:01 (KST) 기준 변경 이력 반영

검증
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\
- 경고 0 / 오류 0 확인
2026-04-05 21:11:39 +09:00
8331c0eedc AX Agent 컨텍스트 토큰 심볼 잘림 및 hover 라벨 닫힘 개선
- 하단 컨텍스트 토큰 카드 외곽 크기와 내부 원형 그리드 여백을 조정해 파이 심볼 왼쪽 잘림 인상 보정
- usage arc 및 threshold marker 계산 중심점을 실제 심볼 크기에 맞게 재설정
- hover popup을 비상호작용 툴팁 형태로 바꿔 카드 밖으로 벗어나면 더 자연스럽게 닫히도록 정리
- README 및 DEVELOPMENT 문서에 2026-04-05 23:55 (KST) 기준 변경 이력 반영

검증
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\
- 경고 0 / 오류 0 확인
2026-04-05 21:04:08 +09:00
4 changed files with 37 additions and 14 deletions

View File

@@ -1063,3 +1063,7 @@ MIT License
- 권한 모드 팝업에서 불필요한 `상세 정보` 섹션을 제거하고, 선택 가능한 모드 행만 남기는 단순 리스트형 UI로 정리했다. `계획 모드`는 제외하고 실제 사용하는 권한 요청/편집 자동 승인/권한 건너뛰기 중심으로 재정렬했다. - 권한 모드 팝업에서 불필요한 `상세 정보` 섹션을 제거하고, 선택 가능한 모드 행만 남기는 단순 리스트형 UI로 정리했다. `계획 모드`는 제외하고 실제 사용하는 권한 요청/편집 자동 승인/권한 건너뛰기 중심으로 재정렬했다.
- 업데이트: 2026-04-05 23:49 (KST) - 업데이트: 2026-04-05 23:49 (KST)
- AX Agent 상단 중앙 탭의 글자가 잘리지 않도록 탭 버튼 폰트/패딩/최소 크기와 헤더 래퍼 크기를 소폭 줄였다. 함께 빈 상태의 상단 아이콘과 제목/설명은 한 단계 키워 프리셋 카드 한 장과 시각 비율이 더 자연스럽게 맞도록 조정했다. - AX Agent 상단 중앙 탭의 글자가 잘리지 않도록 탭 버튼 폰트/패딩/최소 크기와 헤더 래퍼 크기를 소폭 줄였다. 함께 빈 상태의 상단 아이콘과 제목/설명은 한 단계 키워 프리셋 카드 한 장과 시각 비율이 더 자연스럽게 맞도록 조정했다.
- 업데이트: 2026-04-05 23:55 (KST)
- 하단 컨텍스트 토큰 심볼의 파이 아크가 왼쪽에서 잘려 보이던 문제를 수정했다. 원형 아크 계산 기준을 실제 카드 크기에 맞게 조정하고, hover 라벨은 비상호작용 툴팁처럼 바꿔 카드에서 마우스를 벗어나면 더 깔끔하게 사라지도록 정리했다.
- 업데이트: 2026-04-06 00:01 (KST)
- 하단 컨텍스트 토큰 hover 라벨이 남아 있던 문제를 창 전체 마우스 이동/클릭/비활성화 기준으로 한 번 더 보강해 줄였다. 함께 전송 버튼은 크기와 아이콘 정렬을 다시 맞춰 작고 치우쳐 보이던 인상을 보정했다.

View File

@@ -4816,3 +4816,9 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
- 업데이트: 2026-04-05 23:49 (KST) - 업데이트: 2026-04-05 23:49 (KST)
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 상단 중앙 탭 버튼 폰트, padding, 최소 크기와 탭 래퍼 크기를 소폭 줄여 글자가 잘리던 문제를 보정했다. - [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 상단 중앙 탭 버튼 폰트, padding, 최소 크기와 탭 래퍼 크기를 소폭 줄여 글자가 잘리던 문제를 보정했다.
- 같은 파일의 빈 상태 상단 아이콘과 제목/설명은 반대로 한 단계 키워, 작업 유형/대화 주제 프리셋 카드 한 장과 상단 안내 블록 사이 시각 비율이 더 자연스럽게 맞도록 조정했다. - 같은 파일의 빈 상태 상단 아이콘과 제목/설명은 반대로 한 단계 키워, 작업 유형/대화 주제 프리셋 카드 한 장과 상단 안내 블록 사이 시각 비율이 더 자연스럽게 맞도록 조정했다.
- 업데이트: 2026-04-05 23:55 (KST)
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 하단 컨텍스트 토큰 카드 외곽 크기를 30 기준으로 조정하고 내부 원형 그리드에 여백을 확보해 파이 심볼이 왼쪽에서 잘려 보이지 않도록 보정했다.
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 원형 usage arc와 threshold marker 계산 중심점을 실제 카드 크기에 맞게 다시 잡았다. 함께 hover popup은 비상호작용 툴팁처럼 바꿔 카드 밖으로 벗어나면 더 자연스럽게 닫히도록 정리했다.
- 업데이트: 2026-04-06 00:01 (KST)
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 토큰 hover popup 닫힘 경로를 추가 보강했다. 카드 hover 종료 외에도 창 전체 마우스 이동, 마우스 클릭, 창 비활성화 시 popup 닫힘을 다시 검사하도록 해 라벨이 남는 경우를 줄였다.
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 전송 버튼은 42 기준으로 키우고 내부 send glyph 크기와 오프셋을 다시 조정해 아이콘이 작고 아래로 치우쳐 보이던 문제를 보정했다.

View File

@@ -1744,9 +1744,9 @@
<Border x:Name="TokenUsageCard" <Border x:Name="TokenUsageCard"
Grid.Column="2" Grid.Column="2"
Margin="6,0,0,0" Margin="6,0,0,0"
Padding="0" Padding="1"
Width="28" Width="30"
Height="28" Height="30"
CornerRadius="999" CornerRadius="999"
BorderBrush="{DynamicResource BorderColor}" BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1" BorderThickness="1"
@@ -1757,7 +1757,7 @@
MouseEnter="TokenUsageCard_MouseEnter" MouseEnter="TokenUsageCard_MouseEnter"
MouseLeave="TokenUsageCard_MouseLeave"> MouseLeave="TokenUsageCard_MouseLeave">
<Grid> <Grid>
<Grid Width="28" Height="28" VerticalAlignment="Center"> <Grid Width="28" Height="28" VerticalAlignment="Center" HorizontalAlignment="Center">
<Ellipse Stroke="{DynamicResource BorderColor}" <Ellipse Stroke="{DynamicResource BorderColor}"
StrokeThickness="2.5"/> StrokeThickness="2.5"/>
<Path x:Name="TokenUsageArc" <Path x:Name="TokenUsageArc"
@@ -1829,8 +1829,7 @@
CornerRadius="12" CornerRadius="12"
Padding="12,10" Padding="12,10"
MinWidth="186" MinWidth="186"
MouseEnter="TokenUsagePopup_MouseEnter" IsHitTestVisible="False">
MouseLeave="TokenUsagePopup_MouseLeave">
<Border.Effect> <Border.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="0" Opacity="0.08"/> <DropShadowEffect BlurRadius="10" ShadowDepth="0" Opacity="0.08"/>
</Border.Effect> </Border.Effect>
@@ -2123,16 +2122,17 @@
</Button.Template> </Button.Template>
</Button> </Button>
<Button x:Name="BtnSend" Grid.Column="4" <Button x:Name="BtnSend" Grid.Column="4"
Width="38" Height="38" Margin="6,0,2,0" Width="42" Height="42" Margin="6,0,2,0"
Cursor="Hand" Click="BtnSend_Click" Cursor="Hand" Click="BtnSend_Click"
VerticalAlignment="Bottom"> VerticalAlignment="Bottom">
<Button.Template> <Button.Template>
<ControlTemplate TargetType="Button"> <ControlTemplate TargetType="Button">
<Border x:Name="Bd" Background="{DynamicResource AccentColor}" <Border x:Name="Bd" Background="{DynamicResource AccentColor}"
CornerRadius="12"> CornerRadius="13">
<TextBlock Text="&#xE724;" FontFamily="Segoe MDL2 Assets" <TextBlock Text="&#xE724;" FontFamily="Segoe MDL2 Assets"
FontSize="13" Foreground="White" FontSize="16" Foreground="White"
HorizontalAlignment="Center" VerticalAlignment="Center"/> HorizontalAlignment="Center" VerticalAlignment="Center"
Margin="1,-1,0,0"/>
</Border> </Border>
<ControlTemplate.Triggers> <ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True"> <Trigger Property="IsMouseOver" Value="True">

View File

@@ -270,6 +270,21 @@ public partial class ChatWindow : Window
}; };
KeyDown += ChatWindow_KeyDown; KeyDown += ChatWindow_KeyDown;
MouseMove += (_, _) =>
{
if (TokenUsagePopup?.IsOpen == true)
CloseTokenUsagePopupIfIdle();
};
PreviewMouseDown += (_, _) =>
{
if (TokenUsagePopup != null)
TokenUsagePopup.IsOpen = false;
};
Deactivated += (_, _) =>
{
if (TokenUsagePopup != null)
TokenUsagePopup.IsOpen = false;
};
UpdateConversationFailureFilterUi(); UpdateConversationFailureFilterUi();
UpdateConversationSortUi(); UpdateConversationSortUi();
UpdateConversationRunningFilterUi(); UpdateConversationRunningFilterUi();
@@ -18691,8 +18706,8 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
} }
TokenUsageCard.ToolTip = null; TokenUsageCard.ToolTip = null;
UpdateCircularUsageArc(TokenUsageArc, usageRatio, 18, 18, 14); UpdateCircularUsageArc(TokenUsageArc, usageRatio, 14, 14, 11);
PositionThresholdMarker(TokenUsageThresholdMarker, triggerRatio, 18, 18, 14, 3); PositionThresholdMarker(TokenUsageThresholdMarker, triggerRatio, 14, 14, 11, 2.5);
} }
private void TokenUsageCard_MouseEnter(object sender, MouseEventArgs e) private void TokenUsageCard_MouseEnter(object sender, MouseEventArgs e)
@@ -18711,8 +18726,6 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
private void TokenUsagePopup_MouseEnter(object sender, MouseEventArgs e) private void TokenUsagePopup_MouseEnter(object sender, MouseEventArgs e)
{ {
_tokenUsagePopupCloseTimer.Stop(); _tokenUsagePopupCloseTimer.Stop();
if (TokenUsagePopup != null)
TokenUsagePopup.IsOpen = true;
} }
private void TokenUsagePopup_MouseLeave(object sender, MouseEventArgs e) private void TokenUsagePopup_MouseLeave(object sender, MouseEventArgs e)