diff --git a/README.md b/README.md index f2ddd4c..36f9d8e 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,10 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저 - 반응형 폭 계산도 새 골격에 맞춰 다시 조정했습니다. 메시지 축은 최대 `880`, 컴포저는 최대 `820` 기준으로 더 자연스럽게 줄어들도록 바꿔 창 크기가 변해도 `claw-code`처럼 중심선이 크게 흔들리지 않게 맞췄습니다. - 검증 예정: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` +- 업데이트: 2026-04-05 17:12 (KST) +- 메시지 내부 액션 바와 Cowork/Code 실행 배너를 더 `claw-code`처럼 보조 레이어로 낮췄습니다. 메시지 액션은 텍스트 버튼 대신 작은 아이콘 버튼 중심으로 바꾸고, 실행 배너는 여백·폰트·토큰 배지·파일 경로 표시를 한 단계 더 얇게 줄여 본문보다 덜 튀게 정리했습니다. +- 검증 예정: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` + - 업데이트: 2026-04-05 16:02 (KST) - `document_plan` 후속 실행 분기를 `claw-code` 기준으로 다시 보강했습니다. 이제 문서 플래너 출력에서 body 골격과 즉시 실행 지시를 깨진 문자열 비교에 의존하지 않고 안정적으로 추출해, `html_create / document_assemble / docx_create / markdown_create` 후속 호출 유도가 실제로 이어집니다. - 코워크 문서형 작업은 설정이 `planMode=off`여도 내부적으로 `always` 플랜 경로를 타도록 보정했습니다. 그래서 문서/보고서/제안서 요청은 먼저 계획을 세우고, 그 계획을 바탕으로 실제 문서 생성 단계까지 이어가도록 정리했습니다. diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 1ab1801..6def9cd 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -5,6 +5,7 @@ - Document update: 2026-04-05 16:55 (KST) - Simplified AX Agent message rows and sidebar conversation items toward the `claw-code` reading model. Message bubbles now use tighter padding/radius/meta text, and conversation rows now prefer lightweight running/failure summary text over heavier success/failure badge cards. - Document update: 2026-04-05 17:03 (KST) - Reworked the AX Agent UI skeleton further toward `claw-code`: sidebar width and row heights were tightened, the collapsed icon rail and sidebar header were flattened, status strips were reduced, and the composer shell/input chrome was made slimmer and less card-like. - Document update: 2026-04-05 17:03 (KST) - Re-tuned responsive width calculation for the new shell so the message axis now scales up to `880` and the composer up to `820`, keeping both aligned on the same center line as the window narrows or expands. +- Document update: 2026-04-05 17:12 (KST) - Reduced message action chrome and event-banner density further toward `claw-code`. Message actions now use compact icon-only buttons, and Cowork/Code event banners use tighter margins, smaller metadata, and lighter file-path summaries so execution status stays subordinate to the main transcript. - Document update: 2026-04-05 16:02 (KST) - Fixed the Cowork document execution handoff around `document_plan`. The loop no longer depends on broken localized marker strings to detect the scaffold/body block or the immediate-next-step hint; it now extracts body markers robustly and resolves the correct follow-up tool (`html_create`, `document_assemble`, `docx_create`, `markdown_create`) before re-prompting the model. - Document update: 2026-04-05 16:02 (KST) - Added `ResolveEffectivePlanMode(...)` so Cowork document/content tasks automatically use the `always` plan path even when the persisted plan mode is `off`. This brings Cowork closer to the `claw-code` expectation of plan-first execution for document-heavy work. - Document update: 2026-04-05 16:02 (KST) - Strengthened `BuildCoworkSystemPrompt()` so document/report/proposal/manual requests must produce an execution plan first and are not considered complete until a real output file path has been created or updated. diff --git a/src/AxCopilot/Views/ChatWindow.xaml.cs b/src/AxCopilot/Views/ChatWindow.xaml.cs index 73dd795..35ccd0a 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml.cs +++ b/src/AxCopilot/Views/ChatWindow.xaml.cs @@ -4866,49 +4866,35 @@ public partial class ChatWindow : Window { Text = symbol, FontFamily = new FontFamily("Segoe MDL2 Assets"), - FontSize = 10.5, + FontSize = 10, Foreground = foreground, VerticalAlignment = VerticalAlignment.Center }; - var label = new TextBlock - { - Text = tooltip, - FontSize = 10.5, - Foreground = foreground, - VerticalAlignment = VerticalAlignment.Center, - Margin = new Thickness(4, 0, 0, 0), - }; - var content = new StackPanel - { - Orientation = Orientation.Horizontal, - Children = { icon, label } - }; var btn = new Button { - Content = content, + Content = icon, Background = Brushes.Transparent, BorderBrush = borderBrush, BorderThickness = new Thickness(1), Cursor = Cursors.Hand, - Padding = new Thickness(7, 3, 7, 3), - Margin = new Thickness(0, 0, 3, 0), + Width = 24, + Height = 24, + Padding = new Thickness(0), + Margin = new Thickness(0, 0, 2, 0), ToolTip = tooltip }; btn.Template = BuildMinimalIconButtonTemplate(); btn.MouseEnter += (_, _) => { icon.Foreground = hoverBrush; - label.Foreground = hoverBrush; btn.Background = hoverBg; }; btn.MouseLeave += (_, _) => { icon.Foreground = foreground; - label.Foreground = foreground; btn.Background = Brushes.Transparent; }; btn.Click += (_, _) => onClick(); - ApplyHoverScaleAnimation(btn, 1.04); return btn; } @@ -10371,7 +10357,7 @@ public partial class ChatWindow : Window BorderThickness = new Thickness(0), CornerRadius = new CornerRadius(0), Padding = new Thickness(0), - Margin = new Thickness(18, 1, 18, 1), + Margin = new Thickness(14, 1, 14, 1), HorizontalAlignment = HorizontalAlignment.Stretch, }; if (!string.IsNullOrWhiteSpace(evt.RunId)) @@ -10390,15 +10376,15 @@ public partial class ChatWindow : Window { Text = icon, FontFamily = new FontFamily("Segoe MDL2 Assets"), - FontSize = 10, + FontSize = 9.5, Foreground = accentBrush, VerticalAlignment = VerticalAlignment.Center, - Margin = new Thickness(0, 0, 5, 0), + Margin = new Thickness(0, 0, 4, 0), }); headerLeft.Children.Add(new TextBlock { Text = label, - FontSize = 10, + FontSize = 9.5, FontWeight = FontWeights.Medium, Foreground = secondaryText, VerticalAlignment = VerticalAlignment.Center, @@ -10412,10 +10398,10 @@ public partial class ChatWindow : Window headerRight.Children.Add(new TextBlock { Text = evt.ElapsedMs < 1000 ? $"{evt.ElapsedMs}ms" : $"{evt.ElapsedMs / 1000.0:F1}s", - FontSize = 9.5, + FontSize = 8.5, Foreground = secondaryText, VerticalAlignment = VerticalAlignment.Center, - Margin = new Thickness(6, 0, 0, 0), + Margin = new Thickness(4, 0, 0, 0), }); } if (logLevel != "simple" && (evt.InputTokens > 0 || evt.OutputTokens > 0)) @@ -10429,13 +10415,13 @@ public partial class ChatWindow : Window BorderBrush = borderColor, BorderThickness = new Thickness(1), CornerRadius = new CornerRadius(999), - Padding = new Thickness(5, 1, 5, 1), - Margin = new Thickness(5, 0, 0, 0), + Padding = new Thickness(4, 1, 4, 1), + Margin = new Thickness(4, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, Child = new TextBlock { Text = tokenText, - FontSize = 9, + FontSize = 8, Foreground = secondaryText, FontFamily = new FontFamily("Consolas"), }, @@ -10462,11 +10448,11 @@ public partial class ChatWindow : Window sp.Children.Add(new TextBlock { Text = shortSummary, - FontSize = 10, + FontSize = 9.5, Foreground = secondaryText, TextWrapping = TextWrapping.NoWrap, TextTrimming = TextTrimming.CharacterEllipsis, - Margin = new Thickness(15, 1, 0, 0), + Margin = new Thickness(13, 1, 0, 0), }); } } @@ -10477,10 +10463,10 @@ public partial class ChatWindow : Window sp.Children.Add(new TextBlock { Text = summaryText, - FontSize = 10, + FontSize = 9.5, Foreground = secondaryText, TextWrapping = TextWrapping.Wrap, - Margin = new Thickness(15, 1, 0, 0), + Margin = new Thickness(13, 1, 0, 0), }); } @@ -10491,7 +10477,7 @@ public partial class ChatWindow : Window summary: evt.Summary); if (reviewChipRow != null) { - reviewChipRow.Margin = new Thickness(15, 3, 0, 0); + reviewChipRow.Margin = new Thickness(13, 2, 0, 0); sp.Children.Add(reviewChipRow); } @@ -10504,12 +10490,12 @@ public partial class ChatWindow : Window BorderBrush = borderColor, BorderThickness = new Thickness(1), CornerRadius = new CornerRadius(8), - Padding = new Thickness(7, 3, 7, 3), - Margin = new Thickness(15, 3, 0, 0), + Padding = new Thickness(6, 3, 6, 3), + Margin = new Thickness(13, 2, 0, 0), Child = new TextBlock { Text = evt.ToolInput.Length > 240 ? evt.ToolInput[..240] + "…" : evt.ToolInput, - FontSize = 9.5, + FontSize = 9, Foreground = secondaryText, FontFamily = new FontFamily("Consolas"), TextWrapping = TextWrapping.Wrap, @@ -10529,14 +10515,14 @@ public partial class ChatWindow : Window var compactPathRow = new StackPanel { Orientation = Orientation.Horizontal, - Margin = new Thickness(15, 2, 0, 0), + Margin = new Thickness(13, 2, 0, 0), ToolTip = evt.FilePath, }; compactPathRow.Children.Add(new TextBlock { Text = "\uE8B7", FontFamily = new FontFamily("Segoe MDL2 Assets"), - FontSize = 9, + FontSize = 8.5, Foreground = secondaryText, VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(0, 0, 4, 0), @@ -10544,7 +10530,7 @@ public partial class ChatWindow : Window compactPathRow.Children.Add(new TextBlock { Text = string.IsNullOrWhiteSpace(fileName) ? evt.FilePath : fileName, - FontSize = 9.5, + FontSize = 9, Foreground = secondaryText, VerticalAlignment = VerticalAlignment.Center, TextTrimming = TextTrimming.CharacterEllipsis,