컴포저 첨부·전송 버튼 스타일 단순화
Some checks failed
Release Gate / gate (push) Has been cancelled

채팅·코워크·코드 입력창의 첨부 버튼을 과도하게 커진 상태에서 원복 수준으로 줄이고, 전송 버튼도 같은 축의 컴팩트한 크기로 다시 맞췄습니다.

ChatWindow.xaml에 ComposerIconBtn과 ComposerSendBtn 스타일을 추가해 두 버튼 모두 상하좌우 중앙 정렬된 심플한 시각 언어를 사용하도록 재구성했습니다.

README와 DEVELOPMENT 문서를 갱신했고, dotnet build 검증에서 경고 0 오류 0을 확인했습니다.
This commit is contained in:
2026-04-06 16:34:25 +09:00
parent 1ad75b5896
commit e8cd68cce7
3 changed files with 80 additions and 25 deletions

View File

@@ -1273,3 +1273,6 @@ MIT License
- 업데이트: 2026-04-06 16:20 (KST)
- single-file 배포를 켜면서 생긴 호환 경고도 함께 정리했다. [WebSearchHandler.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Handlers/WebSearchHandler.cs)는 `Assembly.Location` 대신 `AppContext.BaseDirectory`를 사용하게 바꿨고, [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs)는 버전 표시를 `AssemblyInformationalVersionAttribute` 기준으로 읽도록 수정했다.
- 이 수정까지 반영한 뒤 `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 기준 경고 0 / 오류 0을 다시 확인했다.
- 업데이트: 2026-04-06 16:28 (KST)
- 채팅/코워크/코드 입력창의 첨부/전송 버튼을 다시 심플한 컴포저 전용 스타일로 정리했다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)에 `ComposerIconBtn`, `ComposerSendBtn` 스타일을 추가해 버튼 크기를 원복 수준으로 줄이고, 첨부와 전송 모두 상하좌우 중앙 정렬된 단순한 시각 언어를 사용하도록 맞췄다.
- 첨부 버튼은 과하게 커졌던 `48x48`에서 `34x34` 기준으로 줄였고, 전송 버튼도 같은 축의 `36x36` 원형 버튼으로 재구성했다. 전송 아이콘은 과한 MDL2 느낌 대신 단순한 상승 화살표 표현으로 바꿔, 참고 이미지처럼 더 담백한 조합이 되도록 정리했다.

View File

@@ -4973,3 +4973,5 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
- Document update: 2026-04-06 16:14 (KST) - Updated `build.bat` to pass the same publish properties explicitly, so installer/distribution builds made through the batch script now run as Release self-contained single-file ReadyToRun publishes by default. There is still no external obfuscator in the repo, so protection is improved but not equivalent to full obfuscation.
- Document update: 2026-04-06 16:20 (KST) - Fixed single-file compatibility warnings introduced by the hardened publish profile. `WebSearchHandler.cs` now uses `AppContext.BaseDirectory` instead of `Assembly.Location` for bundled asset lookup, and `SettingsWindow.xaml.cs` now reads the displayed version from `AssemblyInformationalVersionAttribute` rather than `FileVersionInfo.GetVersionInfo(asm.Location)`.
- Document update: 2026-04-06 16:20 (KST) - Re-ran the standard verification build after those fixes and restored the zero-warning requirement: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` now completes with 0 warnings and 0 errors.
- Document update: 2026-04-06 16:28 (KST) - Refined the chat/composer action buttons in `ChatWindow.xaml` by introducing dedicated `ComposerIconBtn` and `ComposerSendBtn` styles. The oversized attachment/send controls were reduced back toward their earlier footprint and given a simpler, more centered visual language.
- Document update: 2026-04-06 16:28 (KST) - The attachment button now uses a compact `34x34` ghost surface and the send button uses a matching `36x36` circular emphasis surface with a centered upward arrow glyph, replacing the larger prior styling and making the footer composer closer to the requested minimal reference.

View File

@@ -271,6 +271,67 @@
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ComposerIconBtn" TargetType="Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="Bd"
Background="Transparent"
BorderBrush="Transparent"
BorderThickness="0"
CornerRadius="18">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Bd" Property="Opacity" Value="0.8"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.35"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ComposerSendBtn" TargetType="Button" BasedOn="{StaticResource ComposerIconBtn}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="Bd"
Background="#121212"
BorderBrush="#121212"
BorderThickness="1"
CornerRadius="18">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Opacity" Value="0.9"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Bd" Property="Opacity" Value="0.78"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Bd" Property="Background" Value="#8B8B8B"/>
<Setter TargetName="Bd" Property="BorderBrush" Value="#8B8B8B"/>
<Setter Property="Opacity" Value="0.45"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="SettingsNavBtn" TargetType="RadioButton">
<Setter Property="Foreground" Value="{DynamicResource SecondaryText}"/>
<Setter Property="FontSize" Value="11.5"/>
@@ -2053,13 +2114,13 @@
</Grid>
<!-- 파일 첨부 -->
<Button x:Name="BtnAttach" Style="{StaticResource GhostBtn}" Grid.Column="1"
Width="48" Height="48" Margin="0,0,6,0" VerticalAlignment="Bottom"
<Button x:Name="BtnAttach" Style="{StaticResource ComposerIconBtn}" Grid.Column="1"
Width="34" Height="34" Margin="0,0,6,0" VerticalAlignment="Bottom"
Click="BtnAttach_Click" ToolTip="파일 첨부"
WindowChrome.IsHitTestVisibleInChrome="True"
AllowDrop="True">
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="&#xE723;" FontFamily="Segoe MDL2 Assets" FontSize="18"
<TextBlock Text="&#xE723;" FontFamily="Segoe MDL2 Assets" FontSize="16"
Foreground="{DynamicResource SecondaryText}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
@@ -2107,30 +2168,19 @@
</Button.Template>
</Button>
<Button x:Name="BtnSend" Grid.Column="4"
Width="48" Height="48" Margin="6,0,2,0"
Style="{StaticResource ComposerSendBtn}"
Width="36" Height="36" Margin="6,0,2,0"
Cursor="Hand" Click="BtnSend_Click"
VerticalAlignment="Bottom">
<Button.Template>
<ControlTemplate TargetType="Button">
<Border x:Name="Bd" Background="{DynamicResource AccentColor}"
CornerRadius="14">
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="&#xE724;" FontFamily="Segoe MDL2 Assets"
FontSize="18" Foreground="White"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Opacity" Value="0.85"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Bd" Property="Opacity" Value="0.3"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="↑"
FontSize="19"
FontWeight="SemiBold"
Foreground="White"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,-2,0,0"/>
</Grid>
</Button>
</Grid>
</Grid>