From 382c78e32fadc109d42081bd00e21674235f5642 Mon Sep 17 00:00:00 2001 From: lacvet Date: Sun, 5 Apr 2026 13:10:14 +0900 Subject: [PATCH] =?UTF-8?q?AX=20Agent=20=EB=A9=94=EC=8B=9C=EC=A7=80=20?= =?UTF-8?q?=EC=B6=95=20UI=20=EB=B0=80=EB=8F=84=20=EC=A0=95=EB=A6=AC=20?= =?UTF-8?q?=EB=B0=8F=20=EB=A1=9C=EA=B7=B8=20=ED=91=9C=EC=8B=9C=20=EB=8B=A8?= =?UTF-8?q?=EC=88=9C=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ChatWindow 메시지 카드의 여백, 패딩, 라운드, 타임스탬프 크기를 줄여 claw-code 기준의 본문 중심 읽기 흐름으로 정리함 - assistant 헤더와 액션 바, 실행 로그 배너의 아이콘/텍스트/배지 밀도를 낮춰 Cowork/Code에서 로그가 메시지보다 튀지 않도록 조정함 - README와 DEVELOPMENT 문서에 2026-04-05 14:09 (KST) 기준 작업 이력을 반영하고 Release 빌드 경고 0 오류 0을 확인함 --- README.md | 4 ++ docs/DEVELOPMENT.md | 4 ++ src/AxCopilot/Views/ChatWindow.xaml | 2 +- src/AxCopilot/Views/ChatWindow.xaml.cs | 70 +++++++++++++------------- 4 files changed, 44 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 1a0cbd9..a94cfb9 100644 --- a/README.md +++ b/README.md @@ -771,6 +771,10 @@ ow + toggle 시각 언어로 통일했습니다. - 업데이트: 2026-04-05 13:44 (KST) - 업데이트: 2026-04-05 13:52 (KST) - 업데이트: 2026-04-05 14:00 (KST) +- 메시지 행 UI도 `claw-code` 기준으로 한 단계 더 눌렀습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `MessagePanel` 하단 여백을 더 줄여 본문 축이 컴포저와 가깝게 이어지도록 했고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 사용자/assistant 메시지 카드의 좌우 마진, 코너 라운드, 패딩, 폰트 크기, 타임스탬프 크기를 전반적으로 낮췄습니다. +- assistant 헤더는 아이콘과 이름을 더 작고 옅게 줄였고, 액션 바 버튼도 패딩과 간격을 축소해 메시지 본문보다 덜 튀게 만들었습니다. 같은 방향으로 실행 로그 배너(`AddAgentEventBanner`)도 좌우 마진, 아이콘/라벨 크기, 토큰 배지와 요약 텍스트 밀도를 낮춰, Cowork/Code에서 로그가 메시지보다 먼저 보이던 느낌을 줄였습니다. +- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0 +- 업데이트: 2026-04-05 14:09 (KST) --- diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index cb4df60..2caa48e 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -4534,3 +4534,7 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎. - 업데이트: 2026-04-05 14:00 (KST) - UI도 `claw-code` 레퍼런스 방향으로 1차 단순화를 반영했습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 `MessagePanel` / `EmptyState`의 폭을 `880`으로 낮추고, 메시지 스크롤 여백을 줄여 메시지 축이 더 밀도 있게 보이도록 조정했습니다. - 빈 상태는 부유 애니메이션이 있는 그라디언트 아이콘을 제거하고, 작은 정적 카드형 아이콘 + 짧은 문구로 바꿨습니다. 상단 `AgentProgressBar`는 패딩과 프로그레스 바 높이를 줄였고, 컴포저는 `800px` 축으로 넓히면서 `DraftPreviewCard`, `InputGlowBorder`, `InputBorder`의 라운드/그림자 강도를 낮춰 장식량을 줄였습니다. +- 메시지 행 자체도 `claw-code` 방향으로 더 눌렀습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)의 `MessagePanel` 하단 여백을 줄였고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddMessageBubble(...)`에서 사용자/assistant 카드의 좌우 마진, 코너 라운드, 패딩, 폰트 크기, 타임스탬프 크기를 전반적으로 축소했습니다. +- assistant 헤더는 아이콘/이름을 더 작고 옅게 조정해 메시지 본문이 먼저 읽히도록 바꿨고, 액션 바 버튼도 패딩과 간격을 줄여 hover 시에도 과하게 튀지 않게 맞췄습니다. `AddAgentEventBanner(...)` 역시 좌우 마진, 아이콘/라벨, 토큰 배지, 요약 텍스트 밀도를 함께 낮춰 실행 로그가 본문보다 먼저 보이던 시각적 압박을 줄였습니다. +- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0 +- 업데이트: 2026-04-05 14:09 (KST) diff --git a/src/AxCopilot/Views/ChatWindow.xaml b/src/AxCopilot/Views/ChatWindow.xaml index 5cd1585..8febb16 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml +++ b/src/AxCopilot/Views/ChatWindow.xaml @@ -1174,7 +1174,7 @@ Background="{DynamicResource LauncherBackground}" Padding="24,14,24,8"> diff --git a/src/AxCopilot/Views/ChatWindow.xaml.cs b/src/AxCopilot/Views/ChatWindow.xaml.cs index 23bde2c..a996b8e 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml.cs +++ b/src/AxCopilot/Views/ChatWindow.xaml.cs @@ -4440,7 +4440,7 @@ public partial class ChatWindow : Window { HorizontalAlignment = HorizontalAlignment.Right, MaxWidth = GetMessageMaxWidth(), - Margin = new Thickness(150, 3, 16, 3), + Margin = new Thickness(172, 2, 16, 2), }; var bubble = new Border @@ -4448,16 +4448,16 @@ public partial class ChatWindow : Window Background = userBubbleBg, BorderBrush = borderBrush, BorderThickness = new Thickness(1), - CornerRadius = new CornerRadius(14), - Padding = new Thickness(13, 9, 13, 9), + CornerRadius = new CornerRadius(13), + Padding = new Thickness(12, 8, 12, 8), Child = new TextBlock { Text = content, TextAlignment = TextAlignment.Left, - FontSize = 12.5, + FontSize = 12, Foreground = primaryText, TextWrapping = TextWrapping.Wrap, - LineHeight = 20, + LineHeight = 19, } }; wrapper.Children.Add(bubble); @@ -4485,11 +4485,11 @@ public partial class ChatWindow : Window userBottomBar.Children.Add(new TextBlock { Text = timestamp.ToString("HH:mm"), - FontSize = 9, Opacity = 0.52, + FontSize = 8.5, Opacity = 0.46, Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray, HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Center, - Margin = new Thickness(0, 0, 4, 0), + Margin = new Thickness(0, 0, 3, 0), }); userBottomBar.Children.Add(userActionBar); wrapper.Children.Add(userBottomBar); @@ -4523,19 +4523,19 @@ public partial class ChatWindow : Window { HorizontalAlignment = HorizontalAlignment.Left, MaxWidth = GetMessageMaxWidth(), - Margin = new Thickness(10, 3, 150, 3) + Margin = new Thickness(6, 2, 180, 2) }; if (animate) ApplyMessageEntryAnimation(container); // AI 에이전트 이름 + 아이콘 var (agentName, _, _) = GetAgentIdentity(); - var headerSp = new StackPanel { Orientation = Orientation.Horizontal, Margin = new Thickness(2, 0, 0, 2) }; + var headerSp = new StackPanel { Orientation = Orientation.Horizontal, Margin = new Thickness(3, 0, 0, 1) }; var iconBlock = new TextBlock { Text = "\uE945", FontFamily = new FontFamily("Segoe MDL2 Assets"), - FontSize = 8, + FontSize = 7.5, Foreground = secondaryText, VerticalAlignment = VerticalAlignment.Center, }; @@ -4544,10 +4544,10 @@ public partial class ChatWindow : Window headerSp.Children.Add(new TextBlock { Text = agentName, - FontSize = 9, - FontWeight = FontWeights.Medium, + FontSize = 8.5, + FontWeight = FontWeights.Normal, Foreground = secondaryText, - Margin = new Thickness(4, 0, 0, 0), + Margin = new Thickness(3, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, }); container.Children.Add(headerSp); @@ -4557,8 +4557,8 @@ public partial class ChatWindow : Window Background = assistantBubbleBg, BorderBrush = borderBrush, BorderThickness = new Thickness(1), - CornerRadius = new CornerRadius(14), - Padding = new Thickness(13, 10, 13, 10), + CornerRadius = new CornerRadius(13), + Padding = new Thickness(12, 8, 12, 8), }; var contentStack = new StackPanel(); @@ -4687,7 +4687,7 @@ public partial class ChatWindow : Window { Orientation = Orientation.Horizontal, HorizontalAlignment = HorizontalAlignment.Left, - Margin = new Thickness(2, 2, 0, 0), + Margin = new Thickness(2, 1, 0, 0), Opacity = 0 }; @@ -4707,10 +4707,10 @@ public partial class ChatWindow : Window actionBar.Children.Add(new TextBlock { Text = aiTimestamp.ToString("HH:mm"), - FontSize = 9, Opacity = 0.52, + FontSize = 8.5, Opacity = 0.46, Foreground = btnColor, VerticalAlignment = VerticalAlignment.Center, - Margin = new Thickness(6, 0, 0, 0), + Margin = new Thickness(4, 0, 0, 0), }); container.Children.Add(actionBar); @@ -4944,8 +4944,8 @@ public partial class ChatWindow : Window BorderBrush = borderBrush, BorderThickness = new Thickness(1), Cursor = Cursors.Hand, - Padding = new Thickness(8, 4, 8, 4), - Margin = new Thickness(0, 0, 4, 0), + Padding = new Thickness(7, 3, 7, 3), + Margin = new Thickness(0, 0, 3, 0), ToolTip = tooltip }; btn.Template = BuildMinimalIconButtonTemplate(); @@ -10493,7 +10493,7 @@ public partial class ChatWindow : Window BorderThickness = new Thickness(0), CornerRadius = new CornerRadius(0), Padding = new Thickness(0), - Margin = new Thickness(24, 2, 24, 2), + Margin = new Thickness(18, 1, 18, 1), HorizontalAlignment = HorizontalAlignment.Stretch, }; if (!string.IsNullOrWhiteSpace(evt.RunId)) @@ -10512,16 +10512,16 @@ public partial class ChatWindow : Window { Text = icon, FontFamily = new FontFamily("Segoe MDL2 Assets"), - FontSize = 10.5, + FontSize = 10, Foreground = accentBrush, VerticalAlignment = VerticalAlignment.Center, - Margin = new Thickness(0, 0, 6, 0), + Margin = new Thickness(0, 0, 5, 0), }); headerLeft.Children.Add(new TextBlock { Text = label, - FontSize = 10.5, - FontWeight = FontWeights.SemiBold, + FontSize = 10, + FontWeight = FontWeights.Medium, Foreground = secondaryText, VerticalAlignment = VerticalAlignment.Center, }); @@ -10534,10 +10534,10 @@ public partial class ChatWindow : Window headerRight.Children.Add(new TextBlock { Text = evt.ElapsedMs < 1000 ? $"{evt.ElapsedMs}ms" : $"{evt.ElapsedMs / 1000.0:F1}s", - FontSize = 10, + FontSize = 9.5, Foreground = secondaryText, VerticalAlignment = VerticalAlignment.Center, - Margin = new Thickness(8, 0, 0, 0), + Margin = new Thickness(6, 0, 0, 0), }); } if (logLevel != "simple" && (evt.InputTokens > 0 || evt.OutputTokens > 0)) @@ -10552,12 +10552,12 @@ public partial class ChatWindow : Window BorderThickness = new Thickness(1), CornerRadius = new CornerRadius(999), Padding = new Thickness(5, 1, 5, 1), - Margin = new Thickness(6, 0, 0, 0), + Margin = new Thickness(5, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, Child = new TextBlock { Text = tokenText, - FontSize = 9.5, + FontSize = 9, Foreground = secondaryText, FontFamily = new FontFamily("Consolas"), }, @@ -10584,11 +10584,11 @@ public partial class ChatWindow : Window sp.Children.Add(new TextBlock { Text = shortSummary, - FontSize = 10.5, + FontSize = 10, Foreground = secondaryText, TextWrapping = TextWrapping.NoWrap, TextTrimming = TextTrimming.CharacterEllipsis, - Margin = new Thickness(16, 2, 0, 0), + Margin = new Thickness(15, 1, 0, 0), }); } } @@ -10599,10 +10599,10 @@ public partial class ChatWindow : Window sp.Children.Add(new TextBlock { Text = summaryText, - FontSize = 10.5, - Foreground = primaryText, + FontSize = 10, + Foreground = secondaryText, TextWrapping = TextWrapping.Wrap, - Margin = new Thickness(16, 2, 0, 0), + Margin = new Thickness(15, 1, 0, 0), }); } @@ -10613,7 +10613,7 @@ public partial class ChatWindow : Window summary: evt.Summary); if (reviewChipRow != null) { - reviewChipRow.Margin = new Thickness(16, 4, 0, 0); + reviewChipRow.Margin = new Thickness(15, 3, 0, 0); sp.Children.Add(reviewChipRow); }