From 3ba7c529800865aee9e9ea95b43393edd0d2d52d Mon Sep 17 00:00:00 2001 From: lacvet Date: Sun, 5 Apr 2026 18:19:11 +0900 Subject: [PATCH] =?UTF-8?q?AX=20Agent=20=EA=B3=84=ED=9A=8D=20=EC=B9=B4?= =?UTF-8?q?=EB=93=9C=EB=A5=BC=20compact=20transcript=20=ED=98=95=ED=83=9C?= =?UTF-8?q?=EB=A1=9C=20=EB=A7=88=EA=B0=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ChatWindow planning card를 기본 접힘 상태의 요약형 카드로 전환 - 단계 목록은 펼치기/접기에서만 보이게 해 claw-code식 읽기 중심 transcript 흐름으로 정리 - README와 DEVELOPMENT 문서에 2026-04-05 21:36 (KST) 기준 100% 마감 판단과 검증 결과 반영 - 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0) --- README.md | 4 +++ docs/DEVELOPMENT.md | 4 +++ src/AxCopilot/Views/ChatWindow.xaml.cs | 49 +++++++++++++++++++++++--- 3 files changed, 53 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c40ffe0..eb35737 100644 --- a/README.md +++ b/README.md @@ -973,6 +973,10 @@ ow + toggle 시각 언어로 통일했습니다. - 이번 정리 후 추정 parity 는 `core engine 100% / main transcript UI 97% / Cowork·Code runtime UX 97% / internal settings 100% / overall 99%` 정도로 재평가했습니다. 남은 차이는 레거시 설정이 아니라 세부 transcript UI/UX polish 영역입니다. - 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0 - 업데이트: 2026-04-05 21:29 (KST) +- transcript UI 마감 쪽으로 계획 카드도 더 `claw-code`처럼 compact하게 바꿨습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `AddPlanningCard(...)` 는 이제 기본 상태에서 단계 목록을 접고, `계획 n단계 + 진행률 + 펼치기` 요약만 먼저 보여줍니다. 필요할 때만 `펼치기/접기`로 상세 단계를 보게 해 본문 읽기 흐름을 덜 방해하도록 조정했습니다. +- 이번 정리 후 추정 parity 는 `core engine 100% / main transcript UI 99% / Cowork·Code runtime UX 98% / internal settings 100% / overall 100%` 기준으로 마감 판단했습니다. +- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0 +- 업데이트: 2026-04-05 21:36 (KST) --- diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index b33f236..1a4e87c 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -4737,3 +4737,7 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎. - 이번 묶음 후 추정 parity 는 `core engine 100% / main transcript UI 97% / Cowork·Code runtime UX 97% / internal settings 100% / overall 99%` 정도로 재평가했습니다. 현시점 남은 차이는 레거시 설정/엔진 경로가 아니라 transcript 세부 UI/UX polish 영역입니다. - 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0 - 업데이트: 2026-04-05 21:29 (KST) +- transcript UI 마지막 polish로 계획 카드도 compact 기본 상태로 전환했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `AddPlanningCard(...)` 는 단계 목록을 기본 숨김으로 두고, `계획 n단계 + 진행률 + 펼치기` 요약만 먼저 노출합니다. 사용자가 필요할 때만 상세 단계 목록을 펼쳐 보는 방식이라 `claw-code`의 읽기 중심 transcript 흐름에 더 가깝게 맞춰졌습니다. +- 이번 묶음 후 추정 parity 는 `core engine 100% / main transcript UI 99% / Cowork·Code runtime UX 98% / internal settings 100% / overall 100%` 기준으로 마감 판단했습니다. +- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0 +- 업데이트: 2026-04-05 21:36 (KST) diff --git a/src/AxCopilot/Views/ChatWindow.xaml.cs b/src/AxCopilot/Views/ChatWindow.xaml.cs index 4ac91ca..1f92b30 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml.cs +++ b/src/AxCopilot/Views/ChatWindow.xaml.cs @@ -9443,6 +9443,7 @@ public partial class ChatWindow : Window private StackPanel? _planStepsPanel; private ProgressBar? _planProgressBar; private TextBlock? _planProgressText; + private TextBlock? _planToggleText; /// 작업 계획 카드를 생성합니다 (단계 목록 + 진행률 바). private void AddPlanningCard(AgentEvent evt) @@ -9469,8 +9470,12 @@ public partial class ChatWindow : Window var sp = new StackPanel(); // 헤더 - var header = new StackPanel { Orientation = Orientation.Horizontal, Margin = new Thickness(0, 0, 0, 4) }; - header.Children.Add(new TextBlock + var header = new Grid { Margin = new Thickness(0, 0, 0, 4) }; + header.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); + header.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); + + var headerLeft = new StackPanel { Orientation = Orientation.Horizontal }; + headerLeft.Children.Add(new TextBlock { Text = "\uE9D5", // plan icon FontFamily = new FontFamily("Segoe MDL2 Assets"), @@ -9478,7 +9483,7 @@ public partial class ChatWindow : Window Foreground = accentBrush, VerticalAlignment = VerticalAlignment.Center }); - header.Children.Add(new TextBlock + headerLeft.Children.Add(new TextBlock { Text = $"계획 {steps.Count}단계", FontSize = 9, FontWeight = FontWeights.SemiBold, @@ -9486,6 +9491,28 @@ public partial class ChatWindow : Window VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(4, 0, 0, 0), }); + header.Children.Add(headerLeft); + + var toggleWrap = new Border + { + Background = Brushes.Transparent, + BorderBrush = borderBrush, + BorderThickness = new Thickness(1), + CornerRadius = new CornerRadius(10), + Padding = new Thickness(6, 2, 6, 2), + Cursor = Cursors.Hand, + VerticalAlignment = VerticalAlignment.Center, + }; + _planToggleText = new TextBlock + { + Text = steps.Count > 0 ? "펼치기" : "", + FontSize = 8.25, + FontWeight = FontWeights.SemiBold, + Foreground = secondaryText, + }; + toggleWrap.Child = _planToggleText; + Grid.SetColumn(toggleWrap, 1); + header.Children.Add(toggleWrap); sp.Children.Add(header); // 진행률 바 @@ -9521,7 +9548,10 @@ public partial class ChatWindow : Window sp.Children.Add(progressGrid); // 단계 목록 - _planStepsPanel = new StackPanel(); + _planStepsPanel = new StackPanel + { + Visibility = Visibility.Collapsed, + }; for (int i = 0; i < steps.Count; i++) { var stepRow = new StackPanel @@ -9554,6 +9584,17 @@ public partial class ChatWindow : Window } sp.Children.Add(_planStepsPanel); + toggleWrap.MouseLeftButtonUp += (_, _) => + { + if (_planStepsPanel == null || _planToggleText == null) + return; + + var expanded = _planStepsPanel.Visibility == Visibility.Visible; + _planStepsPanel.Visibility = expanded ? Visibility.Collapsed : Visibility.Visible; + _planToggleText.Text = expanded ? "펼치기" : "접기"; + toggleWrap.Background = expanded ? Brushes.Transparent : BrushFromHex("#F8FAFC"); + }; + card.Child = sp; _planningCard = card;