- ChatWindow 입력 바의 InputBorder, DraftPreviewCard, DraftQueuePanel 패딩과 그림자를 줄여 claw-code 방향의 얇은 작업 바 인상으로 정리함 - 모델 선택, 토큰 사용 카드, 프리셋 버튼의 높이·패딩·폰트·아이콘 크기를 함께 낮춰 옵션 바가 메시지 축보다 튀지 않도록 조정함 - README와 DEVELOPMENT 문서에 2026-04-05 14:23 (KST) 기준 작업 이력을 반영하고 Release 빌드 경고 0 오류 0을 확인함
This commit is contained in:
@@ -775,8 +775,10 @@ ow + toggle 시각 언어로 통일했습니다.
|
||||
- assistant 헤더는 아이콘과 이름을 더 작고 옅게 줄였고, 액션 바 버튼도 패딩과 간격을 축소해 메시지 본문보다 덜 튀게 만들었습니다. 같은 방향으로 실행 로그 배너(`AddAgentEventBanner`)도 좌우 마진, 아이콘/라벨 크기, 토큰 배지와 요약 텍스트 밀도를 낮춰, Cowork/Code에서 로그가 메시지보다 먼저 보이던 느낌을 줄였습니다.
|
||||
- 폭 계산도 `claw-code`처럼 반응형으로 다시 맞췄습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)의 `ComposerShell` 고정폭을 걷어내고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `UpdateResponsiveChatLayout()`가 실제 본문 폭 기준으로 `MessagePanel`, `EmptyState`, `ComposerShell` 폭을 함께 다시 계산하도록 연결했습니다.
|
||||
- 이제 창이 작아질 때 메시지 축과 입력창이 따로 놀지 않고 같은 축으로 같이 줄어들며, 창이 넓을 때는 적당한 상한을 유지한 채 자연스럽게 넓어집니다. 초기 로드와 `SizeChanged` 모두 같은 반응형 계산을 타도록 붙였습니다.
|
||||
- 이어서 컴포저 상단 구조도 `claw-code` 방향으로 더 눌렀습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 `InputBorder`, `DraftPreviewCard`, `DraftQueuePanel` 간격과 그림자를 줄였고, `BtnModelSelector`, `TokenUsageCard`, `BtnTemplateSelector`의 높이, 패딩, 아이콘/폰트 크기를 함께 낮춰 입력축보다 옵션 카드가 먼저 튀지 않게 정리했습니다.
|
||||
- 토큰 카드도 원형 게이지와 텍스트, `압축` 버튼을 전반적으로 소형화해 상단 바가 두꺼운 툴 패널처럼 보이던 인상을 줄였습니다. 결과적으로 입력부는 더 얇은 하단 작업 바처럼 보이고, 메시지 본문 축과 시각적 우선순위가 덜 충돌하게 됐습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 14:16 (KST)
|
||||
- 업데이트: 2026-04-05 14:23 (KST)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -4538,5 +4538,7 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
|
||||
- assistant 헤더는 아이콘/이름을 더 작고 옅게 조정해 메시지 본문이 먼저 읽히도록 바꿨고, 액션 바 버튼도 패딩과 간격을 줄여 hover 시에도 과하게 튀지 않게 맞췄습니다. `AddAgentEventBanner(...)` 역시 좌우 마진, 아이콘/라벨, 토큰 배지, 요약 텍스트 밀도를 함께 낮춰 실행 로그가 본문보다 먼저 보이던 시각적 압박을 줄였습니다.
|
||||
- 폭 계산도 `claw-code`식 반응형 축으로 다시 맞췄습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)의 `ComposerShell` 고정폭을 제거하고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)에 `UpdateResponsiveChatLayout()`를 추가해 `MessageScroll.ActualWidth` 기준으로 `MessagePanel`, `EmptyState`, `ComposerShell` 폭을 함께 다시 계산합니다.
|
||||
- 이 변경으로 창이 줄어들 때 메시지 축과 컴포저가 함께 자연스럽게 줄고, 넓어질 때는 적절한 상한만 유지한 채 부드럽게 넓어집니다. 초기 `Loaded`와 창 `SizeChanged` 둘 다 같은 계산 경로를 타게 연결했습니다.
|
||||
- 컴포저 상단 바도 1차 재구성했습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 `InputBorder`, `DraftPreviewCard`, `DraftQueuePanel`의 패딩/마진/그림자를 줄여 큰 카드 느낌을 낮췄고, `BtnModelSelector`, `TokenUsageCard`, `BtnTemplateSelector`의 높이, 패딩, 아이콘·폰트 크기를 함께 축소했습니다.
|
||||
- 토큰 사용 카드의 원형 게이지 크기, 보조 텍스트 크기, `압축` 버튼도 같이 줄여 상단 옵션 바가 입력축보다 과하게 두꺼워 보이던 문제를 완화했습니다. 이 단계는 `claw-code`처럼 입력부를 “크게 장식된 카드”보다 “얇은 하단 작업 바”에 가깝게 만드는 1차 조정입니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 14:16 (KST)
|
||||
- 업데이트: 2026-04-05 14:23 (KST)
|
||||
|
||||
@@ -1562,11 +1562,11 @@
|
||||
Background="{DynamicResource LauncherBackground}"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="1"
|
||||
CornerRadius="16"
|
||||
Padding="12,10,12,10"
|
||||
Margin="0,0,0,8">
|
||||
CornerRadius="14"
|
||||
Padding="10,8,10,8"
|
||||
Margin="0,0,0,6">
|
||||
<Border.Effect>
|
||||
<DropShadowEffect BlurRadius="14" ShadowDepth="0" Opacity="0.06"/>
|
||||
<DropShadowEffect BlurRadius="10" ShadowDepth="0" Opacity="0.05"/>
|
||||
</Border.Effect>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
@@ -1618,7 +1618,7 @@
|
||||
<!-- 무지개 글로우 외부 테두리 (메시지 전송 시 애니메이션) -->
|
||||
<StackPanel x:Name="DraftQueuePanel"
|
||||
Visibility="Collapsed"
|
||||
Margin="0,0,0,10"/>
|
||||
Margin="0,0,0,8"/>
|
||||
<Border x:Name="InputGlowBorder" CornerRadius="16" Opacity="0"
|
||||
Margin="-3" IsHitTestVisible="False">
|
||||
<Border.BorderBrush>
|
||||
@@ -1642,10 +1642,10 @@
|
||||
<!-- 실제 입력 영역 -->
|
||||
<Border x:Name="InputBorder"
|
||||
Background="{DynamicResource LauncherBackground}"
|
||||
CornerRadius="14" Padding="8"
|
||||
CornerRadius="12" Padding="6"
|
||||
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1">
|
||||
<Border.Effect>
|
||||
<DropShadowEffect BlurRadius="20" ShadowDepth="0" Opacity="0.08"/>
|
||||
<DropShadowEffect BlurRadius="14" ShadowDepth="0" Opacity="0.06"/>
|
||||
</Border.Effect>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
@@ -1656,7 +1656,7 @@
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Row 0: 모델 셀렉터 + 템플릿 버튼 -->
|
||||
<Grid Grid.Row="0" Margin="4,1,4,2">
|
||||
<Grid Grid.Row="0" Margin="2,0,2,2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
@@ -1668,30 +1668,30 @@
|
||||
Grid.Column="0"
|
||||
HorizontalAlignment="Left"
|
||||
Margin="0"
|
||||
MinHeight="26"
|
||||
Padding="8,3"
|
||||
MinHeight="24"
|
||||
Padding="7,2"
|
||||
Click="BtnModelSelector_Click"
|
||||
ToolTip="모델/추론 빠른 설정"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="11"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
VerticalAlignment="Center" Margin="0,0,5,0"/>
|
||||
<TextBlock x:Name="ModelLabel" FontSize="12"
|
||||
VerticalAlignment="Center" Margin="0,0,4,0"/>
|
||||
<TextBlock x:Name="ModelLabel" FontSize="11.5"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
MaxWidth="400"
|
||||
MaxWidth="360"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
VerticalAlignment="Center"/>
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="9"
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="8"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
VerticalAlignment="Center" Margin="4,1,0,0"/>
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Border x:Name="TokenUsageCard"
|
||||
Grid.Column="2"
|
||||
Margin="6,0,6,0"
|
||||
Padding="6,3"
|
||||
CornerRadius="8"
|
||||
Margin="5,0,5,0"
|
||||
Padding="5,2"
|
||||
CornerRadius="7"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="1"
|
||||
Background="{DynamicResource ItemBackground}"
|
||||
@@ -1702,45 +1702,45 @@
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid Width="30" Height="30" VerticalAlignment="Center">
|
||||
<Grid Width="26" Height="26" VerticalAlignment="Center">
|
||||
<Ellipse Stroke="{DynamicResource HintBackground}"
|
||||
StrokeThickness="4"/>
|
||||
StrokeThickness="3.5"/>
|
||||
<Path x:Name="TokenUsageArc"
|
||||
Stroke="{DynamicResource AccentColor}"
|
||||
StrokeThickness="4"
|
||||
StrokeThickness="3.5"
|
||||
StrokeStartLineCap="Round"
|
||||
StrokeEndLineCap="Round"/>
|
||||
<Canvas IsHitTestVisible="False">
|
||||
<Ellipse x:Name="TokenUsageThresholdMarker"
|
||||
Width="6"
|
||||
Height="6"
|
||||
Width="5"
|
||||
Height="5"
|
||||
Fill="{DynamicResource AccentColor}"/>
|
||||
</Canvas>
|
||||
<TextBlock x:Name="TokenUsagePercentText"
|
||||
Text="0%"
|
||||
FontSize="9.5"
|
||||
FontSize="8.5"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource PrimaryText}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<StackPanel Grid.Column="1"
|
||||
Margin="7,0,5,0"
|
||||
Margin="6,0,4,0"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock x:Name="TokenUsageSummaryText"
|
||||
Text="컨텍스트"
|
||||
FontSize="10.5"
|
||||
FontSize="9.5"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource PrimaryText}"/>
|
||||
<TextBlock x:Name="TokenUsageHintText"
|
||||
Text="0 / 0"
|
||||
FontSize="9.5"
|
||||
FontSize="8.5"
|
||||
Foreground="{DynamicResource SecondaryText}"/>
|
||||
</StackPanel>
|
||||
<Button x:Name="BtnCompactNow"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource GhostBtn}"
|
||||
Padding="6,3"
|
||||
Padding="5,2"
|
||||
Margin="0"
|
||||
VerticalAlignment="Center"
|
||||
Click="BtnCompactNow_Click"
|
||||
@@ -1748,13 +1748,13 @@
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text=""
|
||||
FontFamily="Segoe MDL2 Assets"
|
||||
FontSize="9.5"
|
||||
FontSize="8.5"
|
||||
Foreground="{DynamicResource AccentColor}"
|
||||
VerticalAlignment="Center"
|
||||
Margin="0,0,4,0"/>
|
||||
<TextBlock x:Name="CompactNowLabel"
|
||||
Text="압축"
|
||||
FontSize="9.5"
|
||||
FontSize="8.5"
|
||||
Foreground="{DynamicResource AccentColor}"
|
||||
VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
@@ -1766,17 +1766,17 @@
|
||||
Grid.Column="3"
|
||||
HorizontalAlignment="Right"
|
||||
Margin="0"
|
||||
MinHeight="26"
|
||||
MinWidth="64"
|
||||
Padding="8,3"
|
||||
MinHeight="24"
|
||||
MinWidth="58"
|
||||
Padding="7,2"
|
||||
Click="BtnTemplateSelector_Click"
|
||||
ToolTip="프롬프트 템플릿"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="11"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
VerticalAlignment="Center" Margin="0,0,5,0"/>
|
||||
<TextBlock Text="프리셋" FontSize="11"
|
||||
VerticalAlignment="Center" Margin="0,0,4,0"/>
|
||||
<TextBlock Text="프리셋" FontSize="10.5"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
VerticalAlignment="Center"/>
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="8"
|
||||
|
||||
Reference in New Issue
Block a user