AX Agent 메시지 메타와 완료 카드 문구 추가 정리
Some checks failed
Release Gate / gate (push) Has been cancelled

- 메시지 버블 패딩, 코너, 폰트, 타임스탬프와 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)
This commit is contained in:
2026-04-05 15:01:05 +09:00
parent d575139a6f
commit cd1db562b1
3 changed files with 47 additions and 37 deletions

View File

@@ -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);
}