From 3feb1f0be48a873d55865a8e446c72bb0b8c43d0 Mon Sep 17 00:00:00 2001 From: lacvet Date: Mon, 6 Apr 2026 14:29:05 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B6=8C=ED=95=9C=C2=B7=EB=8F=84=EA=B5=AC=20?= =?UTF-8?q?=EA=B2=B0=EA=B3=BC=20=EC=B9=B4=EB=93=9C=20=EC=95=A1=EC=85=98=20?= =?UTF-8?q?=EB=AC=B8=EA=B5=AC=20=EA=B3=A0=EB=8F=84=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 파일 기반 transcript 카드의 액션 버튼 라벨을 상태와 종류에 맞게 세분화했습니다. 변경 확인, 작성 내용 보기, 부분 결과 보기, 오류 파일 보기, 승인 전 미리보기 등 맥락별 문구를 적용했습니다. README와 DEVELOPMENT 문서를 갱신했고 dotnet build 기준 경고 0 / 오류 0을 확인했습니다. --- README.md | 2 ++ docs/DEVELOPMENT.md | 1 + .../Views/ChatWindow.AgentEventRendering.cs | 33 +++++++++++++++++-- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 32430b9..00c2e82 100644 --- a/README.md +++ b/README.md @@ -1224,3 +1224,5 @@ MIT License - 파일 경로가 있는 권한 요청/도구 결과 카드에는 [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을 상태별 제목/강조선 구조로 다듬었다. 권한 요청은 `확인 포인트`, 승인 완료는 `적용 내용`, 도구 결과는 `승인 필요`, `오류 확인`, `부분 완료 점검`, `다음 권장 작업`처럼 제목이 달라져 카드 의미가 더 즉시 읽히게 정리했다. +- 업데이트: 2026-04-06 13:36 (KST) + - 파일 기반 transcript 카드의 액션 라벨도 상태별로 다르게 정리했다. [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs) 에서 권한 요청은 `변경 확인`, `작성 내용 보기`, 도구 결과는 `결과 보기`, `부분 결과 보기`, `오류 파일 보기`, `승인 전 미리보기`처럼 더 맥락에 맞는 버튼 라벨을 사용한다. diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 6f1348f..d11596e 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -4951,3 +4951,4 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎. - 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`. +- Document update: 2026-04-06 13:36 (KST) - Made file-backed transcript actions state-aware in `ChatWindow.AgentEventRendering.cs`. The inline preview button now changes label by context, such as `변경 확인`, `작성 내용 보기`, `부분 결과 보기`, `오류 파일 보기`, or `승인 전 미리보기`, instead of showing the same generic action for every case. diff --git a/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs b/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs index 0a8055c..ee7876e 100644 --- a/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs +++ b/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs @@ -148,6 +148,34 @@ public partial class ChatWindow }; } + private static (string label, string icon) GetPreviewActionMeta( + PermissionRequestPresentation? permissionPresentation, + ToolResultPresentation? toolResultPresentation) + { + if (permissionPresentation != null) + { + return permissionPresentation.Kind switch + { + "file_edit" => ("변경 확인", "\uE70F"), + "file_write" => ("작성 내용 보기", "\uE8A1"), + _ => ("프리뷰 열기", "\uE8A1"), + }; + } + + if (toolResultPresentation != null) + { + return toolResultPresentation.StatusKind switch + { + "error" => ("오류 파일 보기", "\uE783"), + "partial" => ("부분 결과 보기", "\uE8A1"), + "approval_required" => ("승인 전 미리보기", "\uE8D7"), + _ => ("결과 보기", "\uE8A1"), + }; + } + + return ("프리뷰 열기", "\uE8A1"); + } + private Border CreateAgentInlineActionButton(string text, string icon, Brush foreground, Brush borderBrush, Action onClick) { var button = new Border @@ -379,9 +407,10 @@ public partial class ChatWindow || toolResultPresentation != null)) { var previewPath = evt.FilePath!; + var (actionLabel, actionIcon) = GetPreviewActionMeta(permissionPresentation, toolResultPresentation); stack.Children.Add(CreateAgentInlineActionButton( - "프리뷰 열기", - "\uE8A1", + actionLabel, + actionIcon, BrushFromHex("#2563EB"), BrushFromHex("#BFDBFE"), () => ShowPreviewPanel(previewPath)));