AX Agent 메시지 액션과 실행 배너를 claw-code 쪽으로 축소
Some checks failed
Release Gate / gate (push) Has been cancelled

- 메시지 액션 바를 텍스트+아이콘 조합에서 작은 아이콘 버튼 중심으로 바꿔 본문 집중도를 높임

- Cowork/Code 실행 배너의 여백, 메타 텍스트, 토큰 배지, 파일 경로 표시를 더 얇게 줄여 보조 정보 밀도를 낮춤

- 검증: 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 14:43:59 +09:00
parent 7cc2b5b9b5
commit f3c0366ee6
3 changed files with 31 additions and 40 deletions

View File

@@ -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` 플랜 경로를 타도록 보정했습니다. 그래서 문서/보고서/제안서 요청은 먼저 계획을 세우고, 그 계획을 바탕으로 실제 문서 생성 단계까지 이어가도록 정리했습니다.

View File

@@ -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.

View File

@@ -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,