AX Agent UI를 claw-code 방향으로 골격 재정렬
Some checks failed
Release Gate / gate (push) Has been cancelled

- 좌측 패널, 축소 아이콘 바, 상태 스트립, 메시지 축, 컴포저를 더 얇고 평평한 업무형 레이아웃으로 조정

- 메시지 최대 폭 880, 컴포저 최대 폭 820 기준으로 반응형 폭 계산을 다시 맞춰 창 크기 변화에도 중심선이 자연스럽게 유지되도록 수정

- 검증: 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:
2026-04-05 14:40:44 +09:00
parent d99b46e3e2
commit 7cc2b5b9b5
4 changed files with 51 additions and 44 deletions

View File

@@ -406,7 +406,7 @@
<!-- 축소 아이콘 바 (사이드바 닫힘 시 표시) -->
<ColumnDefinition x:Name="IconBarColumn" Width="0"/>
<!-- 사이드바 (열림 시 표시) -->
<ColumnDefinition x:Name="SidebarColumn" Width="220" MinWidth="0"/>
<ColumnDefinition x:Name="SidebarColumn" Width="236" MinWidth="0"/>
<ColumnDefinition Width="*"/>
<!-- 미리보기 스플리터 -->
<ColumnDefinition x:Name="SplitterColumn" Width="0"/>
@@ -422,32 +422,32 @@
Visibility="Collapsed">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="46"/>
<RowDefinition Height="44"/>
<RowDefinition Height="*"/>
<RowDefinition Height="46"/>
<RowDefinition Height="44"/>
</Grid.RowDefinitions>
<!-- 상단 아이콘들 -->
<StackPanel Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,2,0,0">
<Button Style="{StaticResource GhostBtn}" Padding="6,5" Width="32" Height="32"
<Button Style="{StaticResource GhostBtn}" Padding="5,4" Width="30" Height="30"
Click="BtnNewChat_Click" ToolTip="새 대화"
WindowChrome.IsHitTestVisibleInChrome="True">
<TextBlock Text="&#xE710;" FontFamily="Segoe MDL2 Assets" FontSize="12"
<TextBlock Text="&#xE710;" FontFamily="Segoe MDL2 Assets" FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
</StackPanel>
<StackPanel Grid.Row="1" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,6,0,0">
<Button Style="{StaticResource GhostBtn}" Padding="6,5" Width="32" Height="32"
<Button Style="{StaticResource GhostBtn}" Padding="5,4" Width="30" Height="30"
Click="BtnToggleSidebar_Click" ToolTip="검색"
WindowChrome.IsHitTestVisibleInChrome="True">
<TextBlock Text="&#xE721;" FontFamily="Segoe MDL2 Assets" FontSize="11.5"
<TextBlock Text="&#xE721;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
<Button Style="{StaticResource GhostBtn}" Padding="6,5" Width="32" Height="32" Margin="0,2,0,0"
<Button Style="{StaticResource GhostBtn}" Padding="5,4" Width="30" Height="30" Margin="0,2,0,0"
Click="BtnCategoryDrop_Click" ToolTip="대화 필터"
WindowChrome.IsHitTestVisibleInChrome="True">
<TextBlock Text="&#xE8BD;" FontFamily="Segoe MDL2 Assets" FontSize="11.5"
<TextBlock Text="&#xE8BD;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Foreground="{DynamicResource SecondaryText}"/>
</Button>
</StackPanel>
@@ -457,11 +457,11 @@
HorizontalAlignment="Center" VerticalAlignment="Center"
ToolTip="" Padding="0"
WindowChrome.IsHitTestVisibleInChrome="True">
<Border Width="28" Height="28" CornerRadius="14"
<Border Width="26" Height="26" CornerRadius="13"
Background="{DynamicResource HintBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1">
<TextBlock x:Name="UserInitialIconBar" Text="U" FontSize="11.5" FontWeight="SemiBold"
<TextBlock x:Name="UserInitialIconBar" Text="U" FontSize="11" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Button>
@@ -477,7 +477,7 @@
BorderThickness="0,0,1,0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="48"/>
<RowDefinition Height="44"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
@@ -492,11 +492,11 @@
<Border Background="{DynamicResource HintBackground}" CornerRadius="6"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Width="22" Height="22">
<TextBlock Text="&#xE8BD;" FontFamily="Segoe MDL2 Assets" FontSize="11"
Width="20" Height="20">
<TextBlock Text="&#xE8BD;" FontFamily="Segoe MDL2 Assets" FontSize="10.5"
Foreground="{DynamicResource AccentColor}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<TextBlock Text="AX Agent" FontSize="13" FontWeight="SemiBold"
<TextBlock Text="AX Agent" FontSize="12.5" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center" Margin="8,0,0,0"/>
</StackPanel>
@@ -507,8 +507,8 @@
<StackPanel>
<Border x:Name="SidebarNewChatTrigger"
Background="Transparent"
CornerRadius="7"
Padding="8,6"
CornerRadius="6"
Padding="7,5"
Cursor="Hand"
MouseEnter="SidebarNewChatTrigger_MouseEnter"
MouseLeave="SidebarNewChatTrigger_MouseLeave"
@@ -519,25 +519,25 @@
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="&#xE710;" FontFamily="Segoe MDL2 Assets" FontSize="11"
<TextBlock Text="&#xE710;" FontFamily="Segoe MDL2 Assets" FontSize="10.5"
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="새 대화"
Foreground="{DynamicResource PrimaryText}"
FontSize="10.8" Margin="7,0,0,0" VerticalAlignment="Center"/>
FontSize="10.5" Margin="7,0,0,0" VerticalAlignment="Center"/>
<TextBlock x:Name="SidebarNewChatShortcutHint"
Grid.Column="2"
Text="Ctrl+N"
Visibility="Collapsed"
Foreground="{DynamicResource SecondaryText}"
FontSize="10.5"
FontSize="10"
VerticalAlignment="Center"/>
</Grid>
</Border>
<Border x:Name="SidebarSearchTrigger"
Background="Transparent"
CornerRadius="7"
Padding="8,6"
CornerRadius="6"
Padding="7,5"
Cursor="Hand"
MouseEnter="SidebarSearchTrigger_MouseEnter"
MouseLeave="SidebarSearchTrigger_MouseLeave"
@@ -548,25 +548,25 @@
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="&#xE721;" FontFamily="Segoe MDL2 Assets" FontSize="11"
<TextBlock Text="&#xE721;" FontFamily="Segoe MDL2 Assets" FontSize="10.5"
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="검색"
Foreground="{DynamicResource PrimaryText}"
FontSize="10.8" Margin="7,0,0,0" VerticalAlignment="Center"/>
FontSize="10.5" Margin="7,0,0,0" VerticalAlignment="Center"/>
<TextBlock x:Name="SidebarSearchShortcutHint"
Grid.Column="2"
Text="Ctrl+K"
Visibility="Collapsed"
Foreground="{DynamicResource SecondaryText}"
FontSize="10.5"
FontSize="10"
VerticalAlignment="Center"/>
</Grid>
</Border>
<Border x:Name="SidebarSearchEditor"
Background="{DynamicResource ItemBackground}"
CornerRadius="10"
Padding="9,6"
CornerRadius="8"
Padding="8,5"
Visibility="Collapsed"
Opacity="0"
RenderTransformOrigin="0,0.5">
@@ -586,7 +586,7 @@
<TextBox x:Name="SearchBox" Grid.Column="1"
Background="Transparent" BorderThickness="0"
Foreground="{DynamicResource PrimaryText}"
CaretBrush="{DynamicResource AccentColor}" FontSize="11.5"
CaretBrush="{DynamicResource AccentColor}" FontSize="11"
VerticalAlignment="Center" Margin="10,0,8,0"
TextChanged="SearchBox_TextChanged"/>
<Button x:Name="BtnConversationSort" Grid.Column="2"
@@ -872,25 +872,25 @@
KeyDown="ChatTitleEdit_KeyDown"/>
</Grid>
<Border x:Name="ConversationStatusStrip" Visibility="Collapsed"
Margin="8,0,0,0" Padding="6,1.5"
CornerRadius="7"
Margin="8,0,0,0" Padding="5,1.5"
CornerRadius="6"
Background="{DynamicResource HintBackground}"
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1">
<TextBlock x:Name="ConversationStatusStripLabel" Text=""
FontSize="9.5" FontWeight="SemiBold"
FontSize="9" FontWeight="SemiBold"
Foreground="{DynamicResource AccentColor}"
VerticalAlignment="Center"/>
</Border>
</StackPanel>
<WrapPanel x:Name="ConversationQuickStrip" Visibility="Collapsed"
Margin="0,3,0,0">
Margin="0,2,0,0">
<Button x:Name="BtnQuickRunningFilter" Style="{StaticResource GhostBtn}"
Padding="7,1.5" Margin="0,0,5,0"
Padding="6,1.5" Margin="0,0,4,0"
Click="BtnQuickRunningFilter_Click"
Visibility="Collapsed"
IsEnabled="False">
<TextBlock x:Name="QuickRunningLabel" Text="진행"
FontSize="9.5" FontWeight="SemiBold"/>
FontSize="9" FontWeight="SemiBold"/>
</Button>
<Button x:Name="BtnQuickHotSort" Style="{StaticResource GhostBtn}"
Padding="7,1.5"
@@ -1183,8 +1183,8 @@
Background="{DynamicResource LauncherBackground}"
Padding="18,10,18,6">
<StackPanel x:Name="MessagePanel"
Margin="0,0,0,14"
MaxWidth="840"
Margin="0,0,0,12"
MaxWidth="880"
HorizontalAlignment="Center">
<StackPanel.RenderTransform>
<TranslateTransform/>
@@ -1560,9 +1560,9 @@
<!-- ── 입력 바 ── -->
<Border x:Name="ComposerShell" Grid.Row="4"
Margin="18,0,18,16"
Margin="18,0,18,14"
Width="Auto"
MaxWidth="760"
MaxWidth="820"
HorizontalAlignment="Center"
VerticalAlignment="Bottom">
<StackPanel HorizontalAlignment="Stretch">
@@ -1651,7 +1651,7 @@
<!-- 실제 입력 영역 -->
<Border x:Name="InputBorder"
Background="{DynamicResource LauncherBackground}"
CornerRadius="10" Padding="5"
CornerRadius="9" Padding="4"
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1">
<Border.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="0" Opacity="0.04"/>

View File

@@ -10975,14 +10975,14 @@ public partial class ChatWindow : Window
// claw-code처럼 메시지 축과 입력축이 같은 중심선을 공유하도록,
// 본문 폭 상한을 조금 더 낮추고 창 폭 변화에 더 부드럽게 반응시킵니다.
var contentWidth = Math.Max(340, viewportWidth - 32);
var messageWidth = Math.Clamp(contentWidth * 0.86, 340, 840);
var composerWidth = Math.Clamp(contentWidth * 0.78, 340, 760);
var contentWidth = Math.Max(340, viewportWidth - 28);
var messageWidth = Math.Clamp(contentWidth * 0.88, 340, 880);
var composerWidth = Math.Clamp(contentWidth * 0.82, 340, 820);
if (contentWidth < 760)
{
messageWidth = Math.Clamp(contentWidth - 10, 332, 760);
composerWidth = Math.Clamp(contentWidth - 20, 328, 700);
messageWidth = Math.Clamp(contentWidth - 8, 332, 780);
composerWidth = Math.Clamp(contentWidth - 14, 328, 740);
}
var changed = false;