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: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)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user