From cd1db562b1f2e776a3b6c3d9bc74570eaee72b52 Mon Sep 17 00:00:00 2001 From: lacvet Date: Sun, 5 Apr 2026 15:01:05 +0900 Subject: [PATCH] =?UTF-8?q?AX=20Agent=20=EB=A9=94=EC=8B=9C=EC=A7=80=20?= =?UTF-8?q?=EB=A9=94=ED=83=80=EC=99=80=20=EC=99=84=EB=A3=8C=20=EC=B9=B4?= =?UTF-8?q?=EB=93=9C=20=EB=AC=B8=EA=B5=AC=20=EC=B6=94=EA=B0=80=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 메시지 버블 패딩, 코너, 폰트, 타임스탬프와 assistant 헤더 메타를 더 축소해 본문 중심 흐름 강화 - 작업 요약 팝업의 완료 카드 라벨과 run/step 메타를 더 짧고 가볍게 정리 - README와 DEVELOPMENT 문서에 2026-04-05 17:33 (KST) 기준 이력 반영 - 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0) --- README.md | 3 + docs/DEVELOPMENT.md | 4 ++ src/AxCopilot/Views/ChatWindow.xaml.cs | 77 +++++++++++++------------- 3 files changed, 47 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index f2b6e2f..997cac4 100644 --- a/README.md +++ b/README.md @@ -818,6 +818,9 @@ ow + toggle 시각 언어로 통일했습니다. - 같은 축으로 Cowork/Code 보조 상태 레이어를 한 번 더 눌렀습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `ConversationStatusStrip`, `ConversationQuickStrip`, `AgentProgressBar`, `RuntimeActivityBadge`, `LastCompletedLabel`, `ExecutionLog`, `SubAgentIndicator`, `StatusElapsed`, `StatusTokens`는 패딩·폰트·간격을 추가로 줄여 상시 노출돼도 본문보다 덜 튀도록 정리했습니다. - [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `ShowTaskSummaryPopup()`, `CreateTaskSummaryActionButton(...)`, `BuildHookSummaryCard(...)`, `BuildActiveBackgroundSummaryCard(...)`, `BuildRecentBackgroundJobCard(...)` 도 같은 시각 언어로 다시 줄였습니다. 팝업 헤더/필터/최근 실행 카드/백그라운드 카드/훅 카드의 라운드, 패딩, 마진, 텍스트 크기를 전반적으로 낮춰 작업 요약이 진단용 보조 패널에 더 가깝게 보이게 했습니다. - 업데이트: 2026-04-05 17:27 (KST) +- 메시지 자체 메타와 완료 카드 문구도 더 `claw-code` 쪽으로 눌렀습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddMessageBubble(...)` 에서 사용자/assistant 버블 패딩, 코너, 폰트, 타임스탬프, assistant 헤더 아이콘/이름 크기를 한 단계 더 낮춰 본문 텍스트가 더 먼저 읽히도록 조정했습니다. +- 작업 요약 팝업의 완료 카드도 `실행 run`, `최근 실패`, `최근 실행`, `로그`, `파일`, `후속 큐`, `다시 시도`, `타임라인`처럼 더 짧은 문구로 정리했고, run/step 메타와 요약 텍스트 폰트도 함께 낮춰 정보 밀도를 더 가볍게 맞췄습니다. +- 업데이트: 2026-04-05 17:33 (KST) - 좌측 패널과 하단 바도 `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`는 일반 로그에서는 빠른 액션이 붙은 카드형 대신 파일명 한 줄만 약하게 표시하도록 바꿨습니다. diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index e9372fc..7a17c2e 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -4592,3 +4592,7 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎. - [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `ShowTaskSummaryPopup()`, `CreateTaskSummaryActionButton(...)`, `BuildHookSummaryCard(...)`, `BuildActiveBackgroundSummaryCard(...)`, `BuildRecentBackgroundJobCard(...)`는 팝업 헤더, 필터 칩, 최근 실행 카드, 훅/백그라운드 카드의 라운드·패딩·마진·글자 크기를 다시 줄여 작업 요약이 상태 대시보드보다 진단용 팝업에 가깝게 보이도록 맞췄습니다. - 검증 예정: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` - 업데이트: 2026-04-05 17:27 (KST) +- 메시지 행 메타와 완료 카드 라벨도 한 단계 더 줄였습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddMessageBubble(...)` 에서 사용자/assistant 버블 패딩, 코너, 폰트, 타임스탬프, assistant 헤더 아이콘/이름 크기를 추가로 낮춰 본문 텍스트가 더 먼저 읽히도록 조정했습니다. +- 작업 요약 팝업의 완료 카드도 `실행 run`, `최근 실패`, `최근 실행`, `로그`, `파일`, `후속 큐`, `다시 시도`, `타임라인`처럼 더 짧은 라벨로 바꾸고, run/step 메타와 요약 텍스트 폰트도 함께 낮춰 전체 밀도를 더 가볍게 정리했습니다. +- 검증 예정: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` +- 업데이트: 2026-04-05 17:33 (KST) diff --git a/src/AxCopilot/Views/ChatWindow.xaml.cs b/src/AxCopilot/Views/ChatWindow.xaml.cs index a96c9d0..3c27921 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml.cs +++ b/src/AxCopilot/Views/ChatWindow.xaml.cs @@ -4386,7 +4386,7 @@ public partial class ChatWindow : Window { HorizontalAlignment = HorizontalAlignment.Right, MaxWidth = GetMessageMaxWidth(), - Margin = new Thickness(196, 2, 12, 2), + Margin = new Thickness(208, 2, 12, 2), }; var bubble = new Border @@ -4394,16 +4394,16 @@ public partial class ChatWindow : Window Background = userBubbleBg, BorderBrush = borderBrush, BorderThickness = new Thickness(1), - CornerRadius = new CornerRadius(12), - Padding = new Thickness(11, 7, 11, 7), + CornerRadius = new CornerRadius(11), + Padding = new Thickness(10, 6.5, 10, 6.5), Child = new TextBlock { Text = content, TextAlignment = TextAlignment.Left, - FontSize = 11.5, + FontSize = 11.25, Foreground = primaryText, TextWrapping = TextWrapping.Wrap, - LineHeight = 18, + LineHeight = 17.5, } }; wrapper.Children.Add(bubble); @@ -4431,11 +4431,11 @@ public partial class ChatWindow : Window userBottomBar.Children.Add(new TextBlock { Text = timestamp.ToString("HH:mm"), - FontSize = 8, Opacity = 0.42, + FontSize = 7.5, Opacity = 0.36, Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray, HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Center, - Margin = new Thickness(0, 0, 3, 0), + Margin = new Thickness(0, 0, 2, 0), }); userBottomBar.Children.Add(userActionBar); wrapper.Children.Add(userBottomBar); @@ -4469,19 +4469,19 @@ public partial class ChatWindow : Window { HorizontalAlignment = HorizontalAlignment.Left, MaxWidth = GetMessageMaxWidth(), - Margin = new Thickness(4, 2, 164, 2) + Margin = new Thickness(4, 2, 178, 2) }; if (animate) ApplyMessageEntryAnimation(container); // AI 에이전트 이름 + 아이콘 var (agentName, _, _) = GetAgentIdentity(); - var headerSp = new StackPanel { Orientation = Orientation.Horizontal, Margin = new Thickness(2, 0, 0, 1) }; + var headerSp = new StackPanel { Orientation = Orientation.Horizontal, Margin = new Thickness(2, 0, 0, 0.5) }; var iconBlock = new TextBlock { Text = "\uE945", FontFamily = new FontFamily("Segoe MDL2 Assets"), - FontSize = 7, + FontSize = 6.5, Foreground = secondaryText, VerticalAlignment = VerticalAlignment.Center, }; @@ -4490,10 +4490,10 @@ public partial class ChatWindow : Window headerSp.Children.Add(new TextBlock { Text = agentName, - FontSize = 8, + FontSize = 7.5, FontWeight = FontWeights.Normal, Foreground = secondaryText, - Margin = new Thickness(3, 0, 0, 0), + Margin = new Thickness(2.5, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, }); container.Children.Add(headerSp); @@ -4503,8 +4503,8 @@ public partial class ChatWindow : Window Background = assistantBubbleBg, BorderBrush = borderBrush, BorderThickness = new Thickness(1), - CornerRadius = new CornerRadius(12), - Padding = new Thickness(11, 7, 11, 7), + CornerRadius = new CornerRadius(11), + Padding = new Thickness(10, 6.5, 10, 6.5), }; var contentStack = new StackPanel(); @@ -4633,7 +4633,7 @@ public partial class ChatWindow : Window { Orientation = Orientation.Horizontal, HorizontalAlignment = HorizontalAlignment.Left, - Margin = new Thickness(2, 1, 0, 0), + Margin = new Thickness(2, 0.5, 0, 0), Opacity = 0 }; @@ -4653,10 +4653,10 @@ public partial class ChatWindow : Window actionBar.Children.Add(new TextBlock { Text = aiTimestamp.ToString("HH:mm"), - FontSize = 8.5, Opacity = 0.46, + FontSize = 7.75, Opacity = 0.38, Foreground = btnColor, VerticalAlignment = VerticalAlignment.Center, - Margin = new Thickness(4, 0, 0, 0), + Margin = new Thickness(3, 0, 0, 0), }); container.Children.Add(actionBar); @@ -20150,16 +20150,17 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi { new TextBlock { - Text = $"현재 실행 run {ShortRunId(_appState.AgentRun.RunId)}", + Text = $"실행 run {ShortRunId(_appState.AgentRun.RunId)}", FontWeight = FontWeights.SemiBold, Foreground = primaryText, + FontSize = 9.75, }, new TextBlock { - Text = $"{GetRunStatusLabel(_appState.AgentRun.Status)} · iteration {_appState.AgentRun.LastIteration}", + Text = $"{GetRunStatusLabel(_appState.AgentRun.Status)} · step {_appState.AgentRun.LastIteration}", Margin = new Thickness(0, 2, 0, 0), Foreground = GetRunStatusBrush(_appState.AgentRun.Status), - FontSize = 9.5, + FontSize = 9, }, new TextBlock { @@ -20167,7 +20168,7 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi Margin = new Thickness(0, 3, 0, 0), TextWrapping = TextWrapping.Wrap, Foreground = Brushes.DimGray, - FontSize = 9.5, + FontSize = 9, } } } @@ -20195,16 +20196,17 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi { new TextBlock { - Text = $"최근 실패 원인 · run {ShortRunId(latestFailedRun.RunId)}", + Text = $"최근 실패 · run {ShortRunId(latestFailedRun.RunId)}", FontWeight = FontWeights.SemiBold, Foreground = BrushFromHex("#991B1B"), + FontSize = 9.75, }, new TextBlock { - Text = $"{latestFailedRun.UpdatedAt:HH:mm:ss} · iteration {latestFailedRun.LastIteration}", + Text = $"{latestFailedRun.UpdatedAt:HH:mm:ss} · step {latestFailedRun.LastIteration}", Margin = new Thickness(0, 2, 0, 0), Foreground = BrushFromHex("#B45309"), - FontSize = 9.25, + FontSize = 8.75, }, new TextBlock { @@ -20212,7 +20214,7 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi Margin = new Thickness(0, 3, 0, 0), TextWrapping = TextWrapping.Wrap, Foreground = secondaryText, - FontSize = 9.25, + FontSize = 8.9, } } } @@ -20221,8 +20223,8 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi panel.Children.Add(new TextBlock { - Text = "최근 에이전트 실행", - FontSize = 10, + Text = "최근 실행", + FontSize = 9.5, FontWeight = FontWeights.SemiBold, Foreground = Brushes.DimGray, Margin = new Thickness(8, 0, 8, 2), @@ -20242,13 +20244,14 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi Text = runDisplay.HeaderText, FontWeight = FontWeights.SemiBold, Foreground = GetRunStatusBrush(run.Status), + FontSize = 9.75, }, new TextBlock { Text = runDisplay.MetaText, Margin = new Thickness(0, 2, 0, 0), Foreground = secondaryText, - FontSize = 9.25, + FontSize = 8.75, }, new TextBlock { @@ -20256,7 +20259,7 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi Margin = new Thickness(0, 2, 0, 0), TextWrapping = TextWrapping.Wrap, Foreground = secondaryText, - FontSize = 9.25, + FontSize = 8.9, } } }; @@ -20266,8 +20269,8 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi var activitySummary = new StackPanel(); activitySummary.Children.Add(new TextBlock { - Text = $"실행 로그 {runEvents.Count} · 관련 파일 {runFilePaths.Count}", - FontSize = 8.75, + Text = $"로그 {runEvents.Count} · 파일 {runFilePaths.Count}", + FontSize = 8.4, Foreground = secondaryText, }); @@ -20275,13 +20278,13 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi { var capturedRunId = run.RunId; var timelineButton = CreateTaskSummaryActionButton( - "타임라인 보기", + "타임라인", "#F8FAFC", "#CBD5E1", "#334155", (_, _) => ScrollToRunInTimeline(capturedRunId), trailingMargin: false); - timelineButton.Margin = new Thickness(0, 6, 0, 0); + timelineButton.Margin = new Thickness(0, 5, 0, 0); activitySummary.Children.Add(timelineButton); } @@ -20301,20 +20304,20 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi { var capturedRun = run; var followUpButton = CreateTaskSummaryActionButton( - "후속 작업 큐에 넣기", + "후속 큐", "#ECFDF5", "#BBF7D0", "#166534", (_, _) => EnqueueFollowUpFromRun(capturedRun), trailingMargin: false); - followUpButton.Margin = new Thickness(0, 8, 0, 0); + followUpButton.Margin = new Thickness(0, 6, 0, 0); runCardStack.Children.Add(followUpButton); } if (string.Equals(run.Status, "failed", StringComparison.OrdinalIgnoreCase) && CanRetryCurrentConversation()) { var retryButton = CreateTaskSummaryActionButton( - "이 실행 다시 시도", + "다시 시도", "#FEF2F2", "#FCA5A5", "#991B1B", @@ -20324,7 +20327,7 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi RetryLastUserMessageFromConversation(); }, trailingMargin: false); - retryButton.Margin = new Thickness(0, 8, 0, 0); + retryButton.Margin = new Thickness(0, 6, 0, 0); runCardStack.Children.Add(retryButton); }