From 792dea2dc2991a9ed0b64aca2c7e3a3cb58f7f95 Mon Sep 17 00:00:00 2001 From: lacvet Date: Sun, 5 Apr 2026 13:30:42 +0900 Subject: [PATCH] =?UTF-8?q?AX=20Agent=20=EC=8B=A4=ED=96=89=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=EB=B0=B0=EB=84=88=EC=9D=98=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EA=B2=BD=EB=A1=9C=EC=99=80=20=EB=94=94=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EB=85=B8=EC=B6=9C=20=EC=B6=95=EC=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AddAgentEventBanner에서 debug용 ToolInput 카드 길이와 패딩을 줄이고 일반 로그에서는 파일 경로를 카드형이 아닌 파일명 한 줄로만 표시하도록 분기함 - 파일 빠른 액션과 상세 경로 카드는 debug에서만 크게 보이게 바꿔 Cowork/Code 본문 아래 실행 로그가 메시지 축을 덜 밀어내도록 조정함 - README와 DEVELOPMENT 문서에 2026-04-05 14:49 (KST) 기준 작업 이력을 반영하고 Release 빌드 경고 0 오류 0을 확인함 --- README.md | 4 +- docs/DEVELOPMENT.md | 4 +- src/AxCopilot/Views/ChatWindow.xaml.cs | 137 +++++++++++++++---------- 3 files changed, 90 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index ab0c88b..b6f6119 100644 --- a/README.md +++ b/README.md @@ -783,8 +783,10 @@ ow + toggle 시각 언어로 통일했습니다. - 최근 권한 이력은 2개, 최근 훅은 3개, 최근 백그라운드 작업은 2개까지만 보여 주도록 줄여, 작업 요약 팝업이 긴 상태 대시보드처럼 커지지 않게 정리했습니다. - 좌측 패널과 하단 바도 `claw-code` 쪽 밀도로 다시 맞췄습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 사이드바 폭을 줄이고, 헤더 앱 배지를 강조색 채운 정사각형 대신 `HintBackground + BorderColor` 기반의 작은 배지형으로 바꿨습니다. - `새 대화`, `검색`, `작업 유형/워크스페이스`, 하단 사용자 영역, 삭제 영역까지 패딩과 폰트, 아이콘 크기를 함께 낮췄고, 하단 상태바는 다이아몬드 아이콘을 작은 원형 점으로 바꿔 더 단순한 상태선처럼 보이게 정리했습니다. +- 실행 로그 배너도 본문 침범을 더 줄였습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddAgentEventBanner(...)` 에서 debug 전용 `ToolInput` 카드 길이를 더 짧게 줄였고, `FilePath`는 일반 로그에서는 빠른 액션이 붙은 카드형 대신 파일명 한 줄만 약하게 표시하도록 바꿨습니다. +- 이제 파일 경로 카드와 빠른 액션은 `debug`일 때만 크게 보이고, 일반 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:43 (KST) +- 업데이트: 2026-04-05 14:49 (KST) --- diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 06a5099..543ec41 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -4546,5 +4546,7 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎. - 최근 권한 이력은 2개, 최근 훅은 3개, 최근 백그라운드 작업은 2개까지만 보여 주도록 줄여, 작업 요약 팝업이 상태 정보는 유지하되 세로 길이와 시각 압박이 커지지 않도록 정리했습니다. - 좌측 패널과 하단 바도 `claw-code` 시각 언어 쪽으로 다시 묶었습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 사이드바 폭을 `256`으로 줄이고, 헤더 앱 아이콘을 작은 배지형으로 바꿨으며, `새 대화`, `검색`, 카테고리 드롭다운, 탭별 메뉴 행의 패딩/폰트/아이콘 크기를 함께 낮췄습니다. - 아이콘 바의 사용자 원형 배지와 사이드바 하단 계정 영역도 강조색 단색 원 대신 `HintBackground + BorderColor` 기반의 중립 배지형으로 바꿨고, 설정 버튼 크기도 줄였습니다. 하단 상태바는 높이와 패딩을 더 낮추고, `StatusDiamond`를 작은 원형 점으로 바꿔 `claw-code`처럼 얇은 상태선에 더 가깝게 정리했습니다. +- 실행 로그 배너도 본문 침범을 더 줄였습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddAgentEventBanner(...)` 에서 debug 전용 `ToolInput` 카드는 길이와 패딩을 더 줄였고, `FilePath`는 일반 로그에서는 액션이 붙은 카드형 대신 파일명 한 줄만 보여 주도록 분기했습니다. +- 이 변경으로 빠른 액션이 붙은 파일 경로 카드와 디버그 상세는 `debug` 로그에서만 크게 보이고, 일반 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:43 (KST) +- 업데이트: 2026-04-05 14:49 (KST) diff --git a/src/AxCopilot/Views/ChatWindow.xaml.cs b/src/AxCopilot/Views/ChatWindow.xaml.cs index 42f2e67..aa97139 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml.cs +++ b/src/AxCopilot/Views/ChatWindow.xaml.cs @@ -10635,12 +10635,12 @@ public partial class ChatWindow : Window BorderBrush = borderColor, BorderThickness = new Thickness(1), CornerRadius = new CornerRadius(8), - Padding = new Thickness(8, 4, 8, 4), - Margin = new Thickness(16, 4, 0, 0), + Padding = new Thickness(7, 3, 7, 3), + Margin = new Thickness(15, 3, 0, 0), Child = new TextBlock { - Text = evt.ToolInput.Length > 500 ? evt.ToolInput[..500] + "…" : evt.ToolInput, - FontSize = 10, + Text = evt.ToolInput.Length > 240 ? evt.ToolInput[..240] + "…" : evt.ToolInput, + FontSize = 9.5, Foreground = secondaryText, FontFamily = new FontFamily("Consolas"), TextWrapping = TextWrapping.Wrap, @@ -10648,69 +10648,100 @@ public partial class ChatWindow : Window }); } - // 파일 경로 배너 (AX Agent 스타일) + // 파일 경로 표시는 debug에서만 카드형으로 노출하고, + // 일반 로그에서는 파일명 한 줄만 보여 본문 침범을 줄입니다. if (!string.IsNullOrEmpty(evt.FilePath)) { - var pathBorder = new Border - { - Background = hintBg, - BorderBrush = borderColor, - BorderThickness = new Thickness(1), - CornerRadius = new CornerRadius(8), - Padding = new Thickness(8, 5, 8, 5), - Margin = new Thickness(16, 4, 0, 0), - }; - - var pathGrid = new Grid(); - pathGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); - pathGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); - - var left = new StackPanel { Orientation = Orientation.Vertical }; var fileName = System.IO.Path.GetFileName(evt.FilePath); var dirName = System.IO.Path.GetDirectoryName(evt.FilePath) ?? ""; - var topRow = new StackPanel { Orientation = Orientation.Horizontal }; - topRow.Children.Add(new TextBlock + if (!string.Equals(logLevel, "debug", StringComparison.OrdinalIgnoreCase)) { - Text = "\uE8B7", // folder icon - FontFamily = new FontFamily("Segoe MDL2 Assets"), - FontSize = 10, - Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#9CA3AF")), - VerticalAlignment = VerticalAlignment.Center, - Margin = new Thickness(0, 0, 4, 0), - }); - topRow.Children.Add(new TextBlock - { - Text = string.IsNullOrWhiteSpace(fileName) ? evt.FilePath : fileName, - FontSize = 10.5, - FontWeight = FontWeights.SemiBold, - Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#374151")), - VerticalAlignment = VerticalAlignment.Center, - TextTrimming = TextTrimming.CharacterEllipsis, - }); - left.Children.Add(topRow); - if (!string.IsNullOrWhiteSpace(dirName)) - { - left.Children.Add(new TextBlock + var compactPathRow = new StackPanel { - Text = dirName, + Orientation = Orientation.Horizontal, + Margin = new Thickness(15, 2, 0, 0), + ToolTip = evt.FilePath, + }; + compactPathRow.Children.Add(new TextBlock + { + Text = "\uE8B7", + FontFamily = new FontFamily("Segoe MDL2 Assets"), + FontSize = 9, + Foreground = secondaryText, + VerticalAlignment = VerticalAlignment.Center, + Margin = new Thickness(0, 0, 4, 0), + }); + compactPathRow.Children.Add(new TextBlock + { + Text = string.IsNullOrWhiteSpace(fileName) ? evt.FilePath : fileName, FontSize = 9.5, - Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#9CA3AF")), - FontFamily = new FontFamily("Consolas"), + Foreground = secondaryText, VerticalAlignment = VerticalAlignment.Center, TextTrimming = TextTrimming.CharacterEllipsis, }); + sp.Children.Add(compactPathRow); } - Grid.SetColumn(left, 0); - pathGrid.Children.Add(left); + else + { + var pathBorder = new Border + { + Background = hintBg, + BorderBrush = borderColor, + BorderThickness = new Thickness(1), + CornerRadius = new CornerRadius(8), + Padding = new Thickness(8, 5, 8, 5), + Margin = new Thickness(15, 3, 0, 0), + }; - // 빠른 작업 버튼들 - var quickActions = BuildFileQuickActions(evt.FilePath); - Grid.SetColumn(quickActions, 1); - pathGrid.Children.Add(quickActions); + var pathGrid = new Grid(); + pathGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); + pathGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); - pathBorder.Child = pathGrid; - sp.Children.Add(pathBorder); + var left = new StackPanel { Orientation = Orientation.Vertical }; + + var topRow = new StackPanel { Orientation = Orientation.Horizontal }; + topRow.Children.Add(new TextBlock + { + Text = "\uE8B7", + FontFamily = new FontFamily("Segoe MDL2 Assets"), + FontSize = 10, + Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#9CA3AF")), + VerticalAlignment = VerticalAlignment.Center, + Margin = new Thickness(0, 0, 4, 0), + }); + topRow.Children.Add(new TextBlock + { + Text = string.IsNullOrWhiteSpace(fileName) ? evt.FilePath : fileName, + FontSize = 10, + FontWeight = FontWeights.SemiBold, + Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#374151")), + VerticalAlignment = VerticalAlignment.Center, + TextTrimming = TextTrimming.CharacterEllipsis, + }); + left.Children.Add(topRow); + if (!string.IsNullOrWhiteSpace(dirName)) + { + left.Children.Add(new TextBlock + { + Text = dirName, + FontSize = 9, + Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#9CA3AF")), + FontFamily = new FontFamily("Consolas"), + VerticalAlignment = VerticalAlignment.Center, + TextTrimming = TextTrimming.CharacterEllipsis, + }); + } + Grid.SetColumn(left, 0); + pathGrid.Children.Add(left); + + var quickActions = BuildFileQuickActions(evt.FilePath); + Grid.SetColumn(quickActions, 1); + pathGrid.Children.Add(quickActions); + + pathBorder.Child = pathGrid; + sp.Children.Add(pathBorder); + } } banner.Child = sp;