AX Agent 메시지 축 UI 밀도 정리 및 로그 표시 단순화
Some checks failed
Release Gate / gate (push) Has been cancelled

- ChatWindow 메시지 카드의 여백, 패딩, 라운드, 타임스탬프 크기를 줄여 claw-code 기준의 본문 중심 읽기 흐름으로 정리함

- assistant 헤더와 액션 바, 실행 로그 배너의 아이콘/텍스트/배지 밀도를 낮춰 Cowork/Code에서 로그가 메시지보다 튀지 않도록 조정함

- README와 DEVELOPMENT 문서에 2026-04-05 14:09 (KST) 기준 작업 이력을 반영하고 Release 빌드 경고 0 오류 0을 확인함
This commit is contained in:
2026-04-05 13:10:14 +09:00
parent 28869caa32
commit 382c78e32f
4 changed files with 44 additions and 36 deletions

View File

@@ -771,6 +771,10 @@ ow + toggle 시각 언어로 통일했습니다.
- 업데이트: 2026-04-05 13:44 (KST) - 업데이트: 2026-04-05 13:44 (KST)
- 업데이트: 2026-04-05 13:52 (KST) - 업데이트: 2026-04-05 13:52 (KST)
- 업데이트: 2026-04-05 14:00 (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)
--- ---

View File

@@ -4534,3 +4534,7 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
- 업데이트: 2026-04-05 14:00 (KST) - 업데이트: 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`으로 낮추고, 메시지 스크롤 여백을 줄여 메시지 축이 더 밀도 있게 보이도록 조정했습니다. - UI도 `claw-code` 레퍼런스 방향으로 1차 단순화를 반영했습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 `MessagePanel` / `EmptyState`의 폭을 `880`으로 낮추고, 메시지 스크롤 여백을 줄여 메시지 축이 더 밀도 있게 보이도록 조정했습니다.
- 빈 상태는 부유 애니메이션이 있는 그라디언트 아이콘을 제거하고, 작은 정적 카드형 아이콘 + 짧은 문구로 바꿨습니다. 상단 `AgentProgressBar`는 패딩과 프로그레스 바 높이를 줄였고, 컴포저는 `800px` 축으로 넓히면서 `DraftPreviewCard`, `InputGlowBorder`, `InputBorder`의 라운드/그림자 강도를 낮춰 장식량을 줄였습니다. - 빈 상태는 부유 애니메이션이 있는 그라디언트 아이콘을 제거하고, 작은 정적 카드형 아이콘 + 짧은 문구로 바꿨습니다. 상단 `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)

View File

@@ -1174,7 +1174,7 @@
Background="{DynamicResource LauncherBackground}" Background="{DynamicResource LauncherBackground}"
Padding="24,14,24,8"> Padding="24,14,24,8">
<StackPanel x:Name="MessagePanel" <StackPanel x:Name="MessagePanel"
Margin="0,2,0,24" Margin="0,0,0,20"
MaxWidth="880" MaxWidth="880"
HorizontalAlignment="Center"> HorizontalAlignment="Center">
<StackPanel.RenderTransform> <StackPanel.RenderTransform>

View File

@@ -4440,7 +4440,7 @@ public partial class ChatWindow : Window
{ {
HorizontalAlignment = HorizontalAlignment.Right, HorizontalAlignment = HorizontalAlignment.Right,
MaxWidth = GetMessageMaxWidth(), MaxWidth = GetMessageMaxWidth(),
Margin = new Thickness(150, 3, 16, 3), Margin = new Thickness(172, 2, 16, 2),
}; };
var bubble = new Border var bubble = new Border
@@ -4448,16 +4448,16 @@ public partial class ChatWindow : Window
Background = userBubbleBg, Background = userBubbleBg,
BorderBrush = borderBrush, BorderBrush = borderBrush,
BorderThickness = new Thickness(1), BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(14), CornerRadius = new CornerRadius(13),
Padding = new Thickness(13, 9, 13, 9), Padding = new Thickness(12, 8, 12, 8),
Child = new TextBlock Child = new TextBlock
{ {
Text = content, Text = content,
TextAlignment = TextAlignment.Left, TextAlignment = TextAlignment.Left,
FontSize = 12.5, FontSize = 12,
Foreground = primaryText, Foreground = primaryText,
TextWrapping = TextWrapping.Wrap, TextWrapping = TextWrapping.Wrap,
LineHeight = 20, LineHeight = 19,
} }
}; };
wrapper.Children.Add(bubble); wrapper.Children.Add(bubble);
@@ -4485,11 +4485,11 @@ public partial class ChatWindow : Window
userBottomBar.Children.Add(new TextBlock userBottomBar.Children.Add(new TextBlock
{ {
Text = timestamp.ToString("HH:mm"), Text = timestamp.ToString("HH:mm"),
FontSize = 9, Opacity = 0.52, FontSize = 8.5, Opacity = 0.46,
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray, Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray,
HorizontalAlignment = HorizontalAlignment.Right, HorizontalAlignment = HorizontalAlignment.Right,
VerticalAlignment = VerticalAlignment.Center, VerticalAlignment = VerticalAlignment.Center,
Margin = new Thickness(0, 0, 4, 0), Margin = new Thickness(0, 0, 3, 0),
}); });
userBottomBar.Children.Add(userActionBar); userBottomBar.Children.Add(userActionBar);
wrapper.Children.Add(userBottomBar); wrapper.Children.Add(userBottomBar);
@@ -4523,19 +4523,19 @@ public partial class ChatWindow : Window
{ {
HorizontalAlignment = HorizontalAlignment.Left, HorizontalAlignment = HorizontalAlignment.Left,
MaxWidth = GetMessageMaxWidth(), MaxWidth = GetMessageMaxWidth(),
Margin = new Thickness(10, 3, 150, 3) Margin = new Thickness(6, 2, 180, 2)
}; };
if (animate) ApplyMessageEntryAnimation(container); if (animate) ApplyMessageEntryAnimation(container);
// AI 에이전트 이름 + 아이콘 // AI 에이전트 이름 + 아이콘
var (agentName, _, _) = GetAgentIdentity(); 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 var iconBlock = new TextBlock
{ {
Text = "\uE945", Text = "\uE945",
FontFamily = new FontFamily("Segoe MDL2 Assets"), FontFamily = new FontFamily("Segoe MDL2 Assets"),
FontSize = 8, FontSize = 7.5,
Foreground = secondaryText, Foreground = secondaryText,
VerticalAlignment = VerticalAlignment.Center, VerticalAlignment = VerticalAlignment.Center,
}; };
@@ -4544,10 +4544,10 @@ public partial class ChatWindow : Window
headerSp.Children.Add(new TextBlock headerSp.Children.Add(new TextBlock
{ {
Text = agentName, Text = agentName,
FontSize = 9, FontSize = 8.5,
FontWeight = FontWeights.Medium, FontWeight = FontWeights.Normal,
Foreground = secondaryText, Foreground = secondaryText,
Margin = new Thickness(4, 0, 0, 0), Margin = new Thickness(3, 0, 0, 0),
VerticalAlignment = VerticalAlignment.Center, VerticalAlignment = VerticalAlignment.Center,
}); });
container.Children.Add(headerSp); container.Children.Add(headerSp);
@@ -4557,8 +4557,8 @@ public partial class ChatWindow : Window
Background = assistantBubbleBg, Background = assistantBubbleBg,
BorderBrush = borderBrush, BorderBrush = borderBrush,
BorderThickness = new Thickness(1), BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(14), CornerRadius = new CornerRadius(13),
Padding = new Thickness(13, 10, 13, 10), Padding = new Thickness(12, 8, 12, 8),
}; };
var contentStack = new StackPanel(); var contentStack = new StackPanel();
@@ -4687,7 +4687,7 @@ public partial class ChatWindow : Window
{ {
Orientation = Orientation.Horizontal, Orientation = Orientation.Horizontal,
HorizontalAlignment = HorizontalAlignment.Left, HorizontalAlignment = HorizontalAlignment.Left,
Margin = new Thickness(2, 2, 0, 0), Margin = new Thickness(2, 1, 0, 0),
Opacity = 0 Opacity = 0
}; };
@@ -4707,10 +4707,10 @@ public partial class ChatWindow : Window
actionBar.Children.Add(new TextBlock actionBar.Children.Add(new TextBlock
{ {
Text = aiTimestamp.ToString("HH:mm"), Text = aiTimestamp.ToString("HH:mm"),
FontSize = 9, Opacity = 0.52, FontSize = 8.5, Opacity = 0.46,
Foreground = btnColor, Foreground = btnColor,
VerticalAlignment = VerticalAlignment.Center, VerticalAlignment = VerticalAlignment.Center,
Margin = new Thickness(6, 0, 0, 0), Margin = new Thickness(4, 0, 0, 0),
}); });
container.Children.Add(actionBar); container.Children.Add(actionBar);
@@ -4944,8 +4944,8 @@ public partial class ChatWindow : Window
BorderBrush = borderBrush, BorderBrush = borderBrush,
BorderThickness = new Thickness(1), BorderThickness = new Thickness(1),
Cursor = Cursors.Hand, Cursor = Cursors.Hand,
Padding = new Thickness(8, 4, 8, 4), Padding = new Thickness(7, 3, 7, 3),
Margin = new Thickness(0, 0, 4, 0), Margin = new Thickness(0, 0, 3, 0),
ToolTip = tooltip ToolTip = tooltip
}; };
btn.Template = BuildMinimalIconButtonTemplate(); btn.Template = BuildMinimalIconButtonTemplate();
@@ -10493,7 +10493,7 @@ public partial class ChatWindow : Window
BorderThickness = new Thickness(0), BorderThickness = new Thickness(0),
CornerRadius = new CornerRadius(0), CornerRadius = new CornerRadius(0),
Padding = new Thickness(0), Padding = new Thickness(0),
Margin = new Thickness(24, 2, 24, 2), Margin = new Thickness(18, 1, 18, 1),
HorizontalAlignment = HorizontalAlignment.Stretch, HorizontalAlignment = HorizontalAlignment.Stretch,
}; };
if (!string.IsNullOrWhiteSpace(evt.RunId)) if (!string.IsNullOrWhiteSpace(evt.RunId))
@@ -10512,16 +10512,16 @@ public partial class ChatWindow : Window
{ {
Text = icon, Text = icon,
FontFamily = new FontFamily("Segoe MDL2 Assets"), FontFamily = new FontFamily("Segoe MDL2 Assets"),
FontSize = 10.5, FontSize = 10,
Foreground = accentBrush, Foreground = accentBrush,
VerticalAlignment = VerticalAlignment.Center, VerticalAlignment = VerticalAlignment.Center,
Margin = new Thickness(0, 0, 6, 0), Margin = new Thickness(0, 0, 5, 0),
}); });
headerLeft.Children.Add(new TextBlock headerLeft.Children.Add(new TextBlock
{ {
Text = label, Text = label,
FontSize = 10.5, FontSize = 10,
FontWeight = FontWeights.SemiBold, FontWeight = FontWeights.Medium,
Foreground = secondaryText, Foreground = secondaryText,
VerticalAlignment = VerticalAlignment.Center, VerticalAlignment = VerticalAlignment.Center,
}); });
@@ -10534,10 +10534,10 @@ public partial class ChatWindow : Window
headerRight.Children.Add(new TextBlock headerRight.Children.Add(new TextBlock
{ {
Text = evt.ElapsedMs < 1000 ? $"{evt.ElapsedMs}ms" : $"{evt.ElapsedMs / 1000.0:F1}s", Text = evt.ElapsedMs < 1000 ? $"{evt.ElapsedMs}ms" : $"{evt.ElapsedMs / 1000.0:F1}s",
FontSize = 10, FontSize = 9.5,
Foreground = secondaryText, Foreground = secondaryText,
VerticalAlignment = VerticalAlignment.Center, 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)) if (logLevel != "simple" && (evt.InputTokens > 0 || evt.OutputTokens > 0))
@@ -10552,12 +10552,12 @@ public partial class ChatWindow : Window
BorderThickness = new Thickness(1), BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(999), CornerRadius = new CornerRadius(999),
Padding = new Thickness(5, 1, 5, 1), Padding = new Thickness(5, 1, 5, 1),
Margin = new Thickness(6, 0, 0, 0), Margin = new Thickness(5, 0, 0, 0),
VerticalAlignment = VerticalAlignment.Center, VerticalAlignment = VerticalAlignment.Center,
Child = new TextBlock Child = new TextBlock
{ {
Text = tokenText, Text = tokenText,
FontSize = 9.5, FontSize = 9,
Foreground = secondaryText, Foreground = secondaryText,
FontFamily = new FontFamily("Consolas"), FontFamily = new FontFamily("Consolas"),
}, },
@@ -10584,11 +10584,11 @@ public partial class ChatWindow : Window
sp.Children.Add(new TextBlock sp.Children.Add(new TextBlock
{ {
Text = shortSummary, Text = shortSummary,
FontSize = 10.5, FontSize = 10,
Foreground = secondaryText, Foreground = secondaryText,
TextWrapping = TextWrapping.NoWrap, TextWrapping = TextWrapping.NoWrap,
TextTrimming = TextTrimming.CharacterEllipsis, 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 sp.Children.Add(new TextBlock
{ {
Text = summaryText, Text = summaryText,
FontSize = 10.5, FontSize = 10,
Foreground = primaryText, Foreground = secondaryText,
TextWrapping = TextWrapping.Wrap, 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); summary: evt.Summary);
if (reviewChipRow != null) if (reviewChipRow != null)
{ {
reviewChipRow.Margin = new Thickness(16, 4, 0, 0); reviewChipRow.Margin = new Thickness(15, 3, 0, 0);
sp.Children.Add(reviewChipRow); sp.Children.Add(reviewChipRow);
} }