AX Agent 메시지 축 UI 밀도 정리 및 로그 표시 단순화
Some checks failed
Release Gate / gate (push) Has been cancelled
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:
@@ -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)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1174,7 +1174,7 @@
|
||||
Background="{DynamicResource LauncherBackground}"
|
||||
Padding="24,14,24,8">
|
||||
<StackPanel x:Name="MessagePanel"
|
||||
Margin="0,2,0,24"
|
||||
Margin="0,0,0,20"
|
||||
MaxWidth="880"
|
||||
HorizontalAlignment="Center">
|
||||
<StackPanel.RenderTransform>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user