AX Agent 타임라인 기본 노출 축소 및 계획/작업 카드 경량화
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
- non-debug 기본 로그에서 ToolCall 중간 이벤트를 숨겨 Cowork/Code 타임라인을 결과 중심으로 재정리함 - 계획 카드와 작업 요약 카드, 액션 버튼의 패딩/폰트/폭을 낮춰 transcript 중심 흐름을 강화함 - 권한 작업 카드에서 계획 모드 버튼을 제거해 현재 엔진 정책과 UI를 일치시킴 - README 및 DEVELOPMENT 문서에 2026-04-05 18:49 (KST) 기준 변경 이력과 parity 진척율을 반영함 검증: - dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ - 경고 0 / 오류 0
This commit is contained in:
@@ -9411,7 +9411,6 @@ public partial class ChatWindow : Window
|
||||
var steps = evt.Steps!;
|
||||
var primaryText = TryFindResource("PrimaryText") as Brush ?? Brushes.Black;
|
||||
var secondaryText = TryFindResource("SecondaryText") as Brush ?? Brushes.DimGray;
|
||||
var itemBg = TryFindResource("ItemBackground") as Brush ?? BrushFromHex("#FFFFFF");
|
||||
var hintBg = TryFindResource("HintBackground") as Brush ?? BrushFromHex("#F8FAFC");
|
||||
var borderBrush = TryFindResource("BorderColor") as Brush ?? BrushFromHex("#E2E8F0");
|
||||
var accentBrush = TryFindResource("AccentColor") as Brush ?? BrushFromHex("#4B5EFC");
|
||||
@@ -9421,9 +9420,9 @@ public partial class ChatWindow : Window
|
||||
Background = hintBg,
|
||||
BorderBrush = borderBrush,
|
||||
BorderThickness = new Thickness(1),
|
||||
CornerRadius = new CornerRadius(10),
|
||||
Padding = new Thickness(10, 8, 10, 8),
|
||||
Margin = new Thickness(8, 3, 228, 6),
|
||||
CornerRadius = new CornerRadius(8),
|
||||
Padding = new Thickness(8, 6, 8, 6),
|
||||
Margin = new Thickness(8, 2, 248, 5),
|
||||
HorizontalAlignment = HorizontalAlignment.Left,
|
||||
MaxWidth = GetMessageMaxWidth(),
|
||||
};
|
||||
@@ -9436,17 +9435,17 @@ public partial class ChatWindow : Window
|
||||
{
|
||||
Text = "\uE9D5", // plan icon
|
||||
FontFamily = new FontFamily("Segoe MDL2 Assets"),
|
||||
FontSize = 9,
|
||||
FontSize = 8,
|
||||
Foreground = accentBrush,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
Margin = new Thickness(0, 0, 4, 0),
|
||||
VerticalAlignment = VerticalAlignment.Center
|
||||
});
|
||||
header.Children.Add(new TextBlock
|
||||
{
|
||||
Text = $"작업 {steps.Count}개 · 0 완료",
|
||||
FontSize = 9.5, FontWeight = FontWeights.SemiBold,
|
||||
Text = $"계획 {steps.Count}단계",
|
||||
FontSize = 9, FontWeight = FontWeights.SemiBold,
|
||||
Foreground = secondaryText,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
Margin = new Thickness(4, 0, 0, 0),
|
||||
});
|
||||
sp.Children.Add(header);
|
||||
|
||||
@@ -9473,7 +9472,7 @@ public partial class ChatWindow : Window
|
||||
_planProgressText = new TextBlock
|
||||
{
|
||||
Text = "0%",
|
||||
FontSize = 8.5, FontWeight = FontWeights.SemiBold,
|
||||
FontSize = 8, FontWeight = FontWeights.SemiBold,
|
||||
Foreground = secondaryText,
|
||||
Margin = new Thickness(5, 0, 0, 0),
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
@@ -9496,7 +9495,7 @@ public partial class ChatWindow : Window
|
||||
stepRow.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "○", // 빈 원 (미완료)
|
||||
FontSize = 9,
|
||||
FontSize = 8.5,
|
||||
Foreground = secondaryText,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
Margin = new Thickness(0, 0, 4, 0),
|
||||
@@ -9505,10 +9504,10 @@ public partial class ChatWindow : Window
|
||||
stepRow.Children.Add(new TextBlock
|
||||
{
|
||||
Text = $"{i + 1}. {steps[i]}",
|
||||
FontSize = 9.5,
|
||||
FontSize = 8.75,
|
||||
Foreground = primaryText,
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
MaxWidth = Math.Max(320, GetMessageMaxWidth() - 52),
|
||||
MaxWidth = Math.Max(280, GetMessageMaxWidth() - 68),
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
});
|
||||
|
||||
@@ -10397,8 +10396,9 @@ public partial class ChatWindow : Window
|
||||
&& evt.Type is AgentEventType.Paused or AgentEventType.Resumed)
|
||||
return;
|
||||
|
||||
// simple 모드: ToolCall은 건너뜀 (ToolResult만 한 줄로 표시)
|
||||
if (logLevel == "simple" && evt.Type == AgentEventType.ToolCall)
|
||||
// 기본 로그에서는 중간 ToolCall을 숨겨 결과/오류 중심으로 정리합니다.
|
||||
if (!string.Equals(logLevel, "debug", StringComparison.OrdinalIgnoreCase)
|
||||
&& evt.Type == AgentEventType.ToolCall)
|
||||
return;
|
||||
|
||||
// 전체 통계 이벤트는 별도 색상 (보라색 계열)
|
||||
@@ -10437,7 +10437,7 @@ public partial class ChatWindow : Window
|
||||
BorderThickness = new Thickness(0),
|
||||
CornerRadius = new CornerRadius(0),
|
||||
Padding = new Thickness(0),
|
||||
Margin = new Thickness(12, 1, 12, 1),
|
||||
Margin = new Thickness(12, 0, 12, 1),
|
||||
HorizontalAlignment = HorizontalAlignment.Stretch,
|
||||
};
|
||||
if (!string.IsNullOrWhiteSpace(evt.RunId))
|
||||
@@ -10456,7 +10456,7 @@ public partial class ChatWindow : Window
|
||||
{
|
||||
Text = icon,
|
||||
FontFamily = new FontFamily("Segoe MDL2 Assets"),
|
||||
FontSize = 8.75,
|
||||
FontSize = 8.25,
|
||||
Foreground = accentBrush,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
Margin = new Thickness(0, 0, 3, 0),
|
||||
@@ -10464,7 +10464,7 @@ public partial class ChatWindow : Window
|
||||
headerLeft.Children.Add(new TextBlock
|
||||
{
|
||||
Text = label,
|
||||
FontSize = 8.75,
|
||||
FontSize = 8.25,
|
||||
FontWeight = FontWeights.Medium,
|
||||
Foreground = secondaryText,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
@@ -10478,7 +10478,7 @@ public partial class ChatWindow : Window
|
||||
headerRight.Children.Add(new TextBlock
|
||||
{
|
||||
Text = evt.ElapsedMs < 1000 ? $"{evt.ElapsedMs}ms" : $"{evt.ElapsedMs / 1000.0:F1}s",
|
||||
FontSize = 8,
|
||||
FontSize = 7.5,
|
||||
Foreground = secondaryText,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
Margin = new Thickness(3, 0, 0, 0),
|
||||
@@ -10501,7 +10501,7 @@ public partial class ChatWindow : Window
|
||||
Child = new TextBlock
|
||||
{
|
||||
Text = tokenText,
|
||||
FontSize = 7.5,
|
||||
FontSize = 7.25,
|
||||
Foreground = secondaryText,
|
||||
FontFamily = new FontFamily("Consolas"),
|
||||
},
|
||||
@@ -10528,25 +10528,25 @@ public partial class ChatWindow : Window
|
||||
sp.Children.Add(new TextBlock
|
||||
{
|
||||
Text = shortSummary,
|
||||
FontSize = 8.9,
|
||||
FontSize = 8.4,
|
||||
Foreground = secondaryText,
|
||||
TextWrapping = TextWrapping.NoWrap,
|
||||
TextTrimming = TextTrimming.CharacterEllipsis,
|
||||
Margin = new Thickness(12, 1, 0, 0),
|
||||
Margin = new Thickness(11, 1, 0, 0),
|
||||
});
|
||||
}
|
||||
}
|
||||
// detailed/debug 모드: 실행 줄 아래에 얕은 설명만 표시
|
||||
else if (!string.IsNullOrEmpty(evt.Summary))
|
||||
{
|
||||
var summaryText = evt.Summary.Length > 120 ? evt.Summary[..120] + "…" : evt.Summary;
|
||||
var summaryText = evt.Summary.Length > 92 ? evt.Summary[..92] + "…" : evt.Summary;
|
||||
sp.Children.Add(new TextBlock
|
||||
{
|
||||
Text = summaryText,
|
||||
FontSize = 8.9,
|
||||
FontSize = 8.4,
|
||||
Foreground = secondaryText,
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
Margin = new Thickness(12, 1, 0, 0),
|
||||
Margin = new Thickness(11, 1, 0, 0),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -21154,9 +21154,9 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
||||
{
|
||||
Text = kindIcon,
|
||||
FontFamily = new FontFamily("Segoe MDL2 Assets"),
|
||||
FontSize = 11,
|
||||
FontSize = 9.5,
|
||||
Foreground = kindColor,
|
||||
Margin = new Thickness(0, 0, 6, 0),
|
||||
Margin = new Thickness(0, 0, 4, 0),
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
});
|
||||
headerRow.Children.Add(new TextBlock
|
||||
@@ -21164,7 +21164,7 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
||||
Text = active
|
||||
? $"진행 중 · {task.Title}"
|
||||
: $"{GetTaskStatusLabel(task.Status)} · {task.Title}",
|
||||
FontSize = 11,
|
||||
FontSize = 9.5,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = active ? primaryText : secondaryText,
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
@@ -21175,8 +21175,8 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
||||
{
|
||||
taskStack.Children.Add(new TextBlock
|
||||
{
|
||||
Text = task.Summary,
|
||||
FontSize = 10.5,
|
||||
Text = TruncateForStatus(task.Summary, 96),
|
||||
FontSize = 8.75,
|
||||
Foreground = secondaryText,
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
});
|
||||
@@ -21196,12 +21196,12 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
||||
|
||||
return new Border
|
||||
{
|
||||
Background = active ? BrushFromHex("#F8FAFC") : Brushes.White,
|
||||
Background = active ? BrushFromHex("#F8FAFC") : (TryFindResource("LauncherBackground") as Brush ?? Brushes.White),
|
||||
BorderBrush = BrushFromHex("#E5E7EB"),
|
||||
BorderThickness = new Thickness(1),
|
||||
CornerRadius = new CornerRadius(8),
|
||||
Padding = new Thickness(10, 7, 10, 7),
|
||||
Margin = new Thickness(8, 0, 8, 6),
|
||||
CornerRadius = new CornerRadius(7),
|
||||
Padding = new Thickness(8, 5, 8, 5),
|
||||
Margin = new Thickness(8, 0, 8, 4),
|
||||
Child = taskStack
|
||||
};
|
||||
}
|
||||
@@ -21217,10 +21217,10 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
||||
var button = new Button
|
||||
{
|
||||
Content = label,
|
||||
FontSize = 8.75,
|
||||
MinHeight = 22,
|
||||
Padding = new Thickness(7, 2.5, 7, 2.5),
|
||||
Margin = trailingMargin ? new Thickness(0, 0, 4, 0) : new Thickness(0),
|
||||
FontSize = 8.25,
|
||||
MinHeight = 20,
|
||||
Padding = new Thickness(6, 2, 6, 2),
|
||||
Margin = trailingMargin ? new Thickness(0, 0, 3, 0) : new Thickness(0),
|
||||
Background = BrushFromHex(bg),
|
||||
BorderBrush = BrushFromHex(border),
|
||||
BorderThickness = new Thickness(1),
|
||||
@@ -21277,7 +21277,6 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
||||
|
||||
actions.Children.Add(BuildPermissionButton("권한 요청", "#EFF6FF", "#BFDBFE", "#1D4ED8", PermissionModeCatalog.Default));
|
||||
actions.Children.Add(BuildPermissionButton("편집 자동 승인", "#ECFDF5", "#BBF7D0", "#166534", PermissionModeCatalog.AcceptEdits));
|
||||
actions.Children.Add(BuildPermissionButton("계획 모드", "#EEF2FF", "#C7D2FE", "#3730A3", PermissionModeCatalog.Plan));
|
||||
actions.Children.Add(BuildPermissionButton("권한 건너뛰기", "#FFF7ED", "#FDBA74", "#C2410C", PermissionModeCatalog.BypassPermissions));
|
||||
actions.Children.Add(BuildPermissionButton("해제", "#F3F4F6", "#D1D5DB", "#374151", null, margin: false));
|
||||
return actions;
|
||||
|
||||
Reference in New Issue
Block a user