transcript callout이 상태별로 다른 제목과 강조선을 가지도록 정리했습니다. 권한 요청은 확인 포인트와 적용 내용, 도구 결과는 승인 필요, 오류 확인, 부분 완료 점검, 다음 권장 작업으로 구분되게 바꿨습니다. README와 DEVELOPMENT 문서를 갱신했고 dotnet build 기준 경고 0 / 오류 0을 확인했습니다.
This commit is contained in:
@@ -1222,3 +1222,5 @@ MIT License
|
||||
- [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)의 metadata 안내를 callout 구조로 바꿨다. 권한 요청은 `확인 포인트`, 도구 결과는 `다음 권장 작업` 카드형 안내로 보여줘, 같은 transcript 안에서도 요청과 결과의 UX가 더 분리되어 보이게 정리했다.
|
||||
- 업데이트: 2026-04-06 13:26 (KST)
|
||||
- 파일 경로가 있는 권한 요청/도구 결과 카드에는 [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs) 에서 `프리뷰 열기` 액션을 직접 붙였다. 이제 `미리보기 권장` 상태나 파일 기반 결과에서 transcript 카드만 보고 끝나는 것이 아니라, 바로 우측 preview panel을 열어 확인 흐름으로 이어질 수 있다.
|
||||
- 업데이트: 2026-04-06 13:31 (KST)
|
||||
- [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)의 callout을 상태별 제목/강조선 구조로 다듬었다. 권한 요청은 `확인 포인트`, 승인 완료는 `적용 내용`, 도구 결과는 `승인 필요`, `오류 확인`, `부분 완료 점검`, `다음 권장 작업`처럼 제목이 달라져 카드 의미가 더 즉시 읽히게 정리했다.
|
||||
|
||||
@@ -4950,3 +4950,4 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
|
||||
- Document update: 2026-04-06 13:14 (KST) - Added kind/category chips to permission and tool-result transcript banners so the action domain is visible at a glance. `ChatWindow.AgentEventRendering.cs` now surfaces labels such as `명령 실행`, `파일 수정`, `웹 요청`, `Git`, `문서`, `스킬`, and `MCP` alongside the status-oriented chips.
|
||||
- Document update: 2026-04-06 13:20 (KST) - Replaced the plain guidance line with typed callout boxes in `ChatWindow.AgentEventRendering.cs`. Permission requests now show an `확인 포인트` callout, while tool results show a `다음 권장 작업` callout, making the two transcript surfaces read differently even when they share the same chip language.
|
||||
- Document update: 2026-04-06 13:26 (KST) - Added an inline `프리뷰 열기` action to file-backed permission/tool-result banners in `ChatWindow.AgentEventRendering.cs`. When a permission request requires preview or a tool result carries a real file path, the transcript card can now open the preview panel directly instead of forcing the user to find the file elsewhere first.
|
||||
- Document update: 2026-04-06 13:31 (KST) - Refined the callout presentation in `ChatWindow.AgentEventRendering.cs` so the title and left accent strip vary by state. Permission requests now read as `확인 포인트` or `적용 내용`, while tool results read as `승인 필요`, `오류 확인`, `부분 완료 점검`, or `다음 권장 작업` depending on `StatusKind`.
|
||||
|
||||
@@ -85,6 +85,7 @@ public partial class ChatWindow
|
||||
|
||||
private Border CreateAgentMetaCallout(string title, string body, Brush titleBrush, Brush background, Brush borderBrush)
|
||||
{
|
||||
var accentColor = (titleBrush as SolidColorBrush)?.Color ?? Colors.SteelBlue;
|
||||
return new Border
|
||||
{
|
||||
Background = background,
|
||||
@@ -93,30 +94,60 @@ public partial class ChatWindow
|
||||
CornerRadius = new CornerRadius(8),
|
||||
Padding = new Thickness(7, 5, 7, 5),
|
||||
Margin = new Thickness(11, 2, 0, 0),
|
||||
Child = new StackPanel
|
||||
Child = new Grid
|
||||
{
|
||||
ColumnDefinitions =
|
||||
{
|
||||
new ColumnDefinition { Width = new GridLength(3) },
|
||||
new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) },
|
||||
},
|
||||
Children =
|
||||
{
|
||||
new TextBlock
|
||||
new Border
|
||||
{
|
||||
Text = title,
|
||||
FontSize = 7.75,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = titleBrush,
|
||||
Background = new SolidColorBrush(accentColor),
|
||||
CornerRadius = new CornerRadius(2),
|
||||
},
|
||||
new TextBlock
|
||||
new StackPanel
|
||||
{
|
||||
Text = body,
|
||||
FontSize = 8.1,
|
||||
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.DimGray,
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
Margin = new Thickness(0, 1, 0, 0),
|
||||
Margin = new Thickness(8, 0, 0, 0),
|
||||
Children =
|
||||
{
|
||||
new TextBlock
|
||||
{
|
||||
Text = title,
|
||||
FontSize = 7.75,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = titleBrush,
|
||||
},
|
||||
new TextBlock
|
||||
{
|
||||
Text = body,
|
||||
FontSize = 8.1,
|
||||
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.DimGray,
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
Margin = new Thickness(0, 1, 0, 0),
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static string GetToolResultCalloutTitle(string statusKind)
|
||||
{
|
||||
return statusKind switch
|
||||
{
|
||||
"error" => "오류 확인",
|
||||
"reject" => "거부됨",
|
||||
"cancel" => "중단됨",
|
||||
"approval_required" => "승인 필요",
|
||||
"partial" => "부분 완료 점검",
|
||||
_ => "다음 권장 작업",
|
||||
};
|
||||
}
|
||||
|
||||
private Border CreateAgentInlineActionButton(string text, string icon, Brush foreground, Brush borderBrush, Action onClick)
|
||||
{
|
||||
var button = new Border
|
||||
@@ -312,7 +343,8 @@ public partial class ChatWindow
|
||||
: string.Equals(permissionPresentation.Severity, "medium", StringComparison.OrdinalIgnoreCase)
|
||||
? BrushFromHex("#FDE68A")
|
||||
: BrushFromHex("#BFDBFE");
|
||||
stack.Children.Add(CreateAgentMetaCallout("확인 포인트", clipped, titleBrush, background, border));
|
||||
var title = evt.Type == AgentEventType.PermissionGranted ? "적용 내용" : "확인 포인트";
|
||||
stack.Children.Add(CreateAgentMetaCallout(title, clipped, titleBrush, background, border));
|
||||
}
|
||||
else if (toolResultPresentation != null)
|
||||
{
|
||||
@@ -334,7 +366,7 @@ public partial class ChatWindow
|
||||
: string.Equals(toolResultPresentation.StatusKind, "approval_required", StringComparison.OrdinalIgnoreCase)
|
||||
? BrushFromHex("#FED7AA")
|
||||
: BrushFromHex("#FDE68A");
|
||||
stack.Children.Add(CreateAgentMetaCallout("다음 권장 작업", clipped, titleBrush, background, border));
|
||||
stack.Children.Add(CreateAgentMetaCallout(GetToolResultCalloutTitle(toolResultPresentation.StatusKind), clipped, titleBrush, background, border));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user