AX Agent 상단 헤더와 대화 목록 메타를 claw-code 쪽으로 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
- 상단 탭 그룹과 사이드바 토글 버튼을 더 얇은 세그먼트형 UI로 조정 - 좌측 대화 목록의 실행 메타와 편집 아이콘을 더 약하게 줄여 제목 중심의 목록 밀도로 재정렬 - 검증: 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:
@@ -22,6 +22,11 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저
|
|||||||
- 메시지 내부 액션 바와 Cowork/Code 실행 배너를 더 `claw-code`처럼 보조 레이어로 낮췄습니다. 메시지 액션은 텍스트 버튼 대신 작은 아이콘 버튼 중심으로 바꾸고, 실행 배너는 여백·폰트·토큰 배지·파일 경로 표시를 한 단계 더 얇게 줄여 본문보다 덜 튀게 정리했습니다.
|
- 메시지 내부 액션 바와 Cowork/Code 실행 배너를 더 `claw-code`처럼 보조 레이어로 낮췄습니다. 메시지 액션은 텍스트 버튼 대신 작은 아이콘 버튼 중심으로 바꾸고, 실행 배너는 여백·폰트·토큰 배지·파일 경로 표시를 한 단계 더 얇게 줄여 본문보다 덜 튀게 정리했습니다.
|
||||||
- 검증 예정: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\`
|
- 검증 예정: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\`
|
||||||
|
|
||||||
|
- 업데이트: 2026-04-05 17:19 (KST)
|
||||||
|
- 상단 헤더와 탭 그룹, 좌측 대화 목록 행 메타를 더 `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)
|
- 업데이트: 2026-04-05 16:02 (KST)
|
||||||
- `document_plan` 후속 실행 분기를 `claw-code` 기준으로 다시 보강했습니다. 이제 문서 플래너 출력에서 body 골격과 즉시 실행 지시를 깨진 문자열 비교에 의존하지 않고 안정적으로 추출해, `html_create / document_assemble / docx_create / markdown_create` 후속 호출 유도가 실제로 이어집니다.
|
- `document_plan` 후속 실행 분기를 `claw-code` 기준으로 다시 보강했습니다. 이제 문서 플래너 출력에서 body 골격과 즉시 실행 지시를 깨진 문자열 비교에 의존하지 않고 안정적으로 추출해, `html_create / document_assemble / docx_create / markdown_create` 후속 호출 유도가 실제로 이어집니다.
|
||||||
- 코워크 문서형 작업은 설정이 `planMode=off`여도 내부적으로 `always` 플랜 경로를 타도록 보정했습니다. 그래서 문서/보고서/제안서 요청은 먼저 계획을 세우고, 그 계획을 바탕으로 실제 문서 생성 단계까지 이어가도록 정리했습니다.
|
- 코워크 문서형 작업은 설정이 `planMode=off`여도 내부적으로 `always` 플랜 경로를 타도록 보정했습니다. 그래서 문서/보고서/제안서 요청은 먼저 계획을 세우고, 그 계획을 바탕으로 실제 문서 생성 단계까지 이어가도록 정리했습니다.
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
- 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) - 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: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 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 17:19 (KST) - Tightened the top header/tab group and sidebar conversation-row chrome further toward `claw-code`. The top tabs now use a slimmer segmented control, the sidebar toggle button is smaller/lighter, and conversation-row metadata plus the edit affordance were reduced so the title remains the dominant visual anchor.
|
||||||
- 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) - 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) - 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.
|
- 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.
|
||||||
|
|||||||
@@ -174,15 +174,15 @@
|
|||||||
<!-- 탭 버튼 -->
|
<!-- 탭 버튼 -->
|
||||||
<Style x:Key="TopTabBtn" TargetType="RadioButton">
|
<Style x:Key="TopTabBtn" TargetType="RadioButton">
|
||||||
<Setter Property="Foreground" Value="{DynamicResource SecondaryText}"/>
|
<Setter Property="Foreground" Value="{DynamicResource SecondaryText}"/>
|
||||||
<Setter Property="FontSize" Value="13"/>
|
<Setter Property="FontSize" Value="12"/>
|
||||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||||
<Setter Property="Cursor" Value="Hand"/>
|
<Setter Property="Cursor" Value="Hand"/>
|
||||||
<Setter Property="Padding" Value="18,6"/>
|
<Setter Property="Padding" Value="16,5"/>
|
||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<Setter.Value>
|
<Setter.Value>
|
||||||
<ControlTemplate TargetType="RadioButton">
|
<ControlTemplate TargetType="RadioButton">
|
||||||
<Border x:Name="Bd" Background="Transparent"
|
<Border x:Name="Bd" Background="Transparent"
|
||||||
CornerRadius="8" Padding="{TemplateBinding Padding}">
|
CornerRadius="7" Padding="{TemplateBinding Padding}">
|
||||||
<ContentPresenter x:Name="Cp" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
<ContentPresenter x:Name="Cp" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||||
</Border>
|
</Border>
|
||||||
<ControlTemplate.Triggers>
|
<ControlTemplate.Triggers>
|
||||||
@@ -1037,8 +1037,8 @@
|
|||||||
<!-- 좌: 사이드바 토글 -->
|
<!-- 좌: 사이드바 토글 -->
|
||||||
<Button x:Name="BtnToggleSidebar"
|
<Button x:Name="BtnToggleSidebar"
|
||||||
HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,0,0,0"
|
HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,0,0,0"
|
||||||
Width="30"
|
Width="28"
|
||||||
Height="30"
|
Height="28"
|
||||||
Background="{DynamicResource HintBackground}"
|
Background="{DynamicResource HintBackground}"
|
||||||
BorderBrush="{DynamicResource BorderColor}"
|
BorderBrush="{DynamicResource BorderColor}"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
@@ -1051,25 +1051,25 @@
|
|||||||
Background="{TemplateBinding Background}"
|
Background="{TemplateBinding Background}"
|
||||||
BorderBrush="{TemplateBinding BorderBrush}"
|
BorderBrush="{TemplateBinding BorderBrush}"
|
||||||
BorderThickness="{TemplateBinding BorderThickness}"
|
BorderThickness="{TemplateBinding BorderThickness}"
|
||||||
CornerRadius="8">
|
CornerRadius="7">
|
||||||
<Grid Width="30" Height="30">
|
<Grid Width="28" Height="28">
|
||||||
<StackPanel HorizontalAlignment="Center"
|
<StackPanel HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Center">
|
VerticalAlignment="Center">
|
||||||
<Border x:Name="SidebarLine1"
|
<Border x:Name="SidebarLine1"
|
||||||
Width="12"
|
Width="11"
|
||||||
Height="1.6"
|
Height="1.4"
|
||||||
CornerRadius="1"
|
CornerRadius="1"
|
||||||
Background="{DynamicResource SecondaryText}"/>
|
Background="{DynamicResource SecondaryText}"/>
|
||||||
<Border x:Name="SidebarLine2"
|
<Border x:Name="SidebarLine2"
|
||||||
Width="12"
|
Width="11"
|
||||||
Height="1.6"
|
Height="1.4"
|
||||||
Margin="0,3,0,0"
|
Margin="0,2.5,0,0"
|
||||||
CornerRadius="1"
|
CornerRadius="1"
|
||||||
Background="{DynamicResource SecondaryText}"/>
|
Background="{DynamicResource SecondaryText}"/>
|
||||||
<Border x:Name="SidebarLine3"
|
<Border x:Name="SidebarLine3"
|
||||||
Width="12"
|
Width="11"
|
||||||
Height="1.6"
|
Height="1.4"
|
||||||
Margin="0,3,0,0"
|
Margin="0,2.5,0,0"
|
||||||
CornerRadius="1"
|
CornerRadius="1"
|
||||||
Background="{DynamicResource SecondaryText}"/>
|
Background="{DynamicResource SecondaryText}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
@@ -1095,7 +1095,7 @@
|
|||||||
<Border Grid.Column="1"
|
<Border Grid.Column="1"
|
||||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||||
Background="{DynamicResource HintBackground}"
|
Background="{DynamicResource HintBackground}"
|
||||||
CornerRadius="12" Padding="4"
|
CornerRadius="10" Padding="3"
|
||||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<RadioButton x:Name="TabChat" Content="Chat" Style="{StaticResource TopTabBtn}"
|
<RadioButton x:Name="TabChat" Content="Chat" Style="{StaticResource TopTabBtn}"
|
||||||
@@ -1113,7 +1113,7 @@
|
|||||||
<!-- 우: 최소화 + 최대화 + 닫기 -->
|
<!-- 우: 최소화 + 최대화 + 닫기 -->
|
||||||
<StackPanel Grid.Column="2"
|
<StackPanel Grid.Column="2"
|
||||||
Orientation="Horizontal" HorizontalAlignment="Right"
|
Orientation="Horizontal" HorizontalAlignment="Right"
|
||||||
VerticalAlignment="Center" Margin="0,0,8,0"
|
VerticalAlignment="Center" Margin="0,0,6,0"
|
||||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||||
<Button Style="{StaticResource TitleBarActionButton}" Click="BtnMinimize_Click" ToolTip="최소화">
|
<Button Style="{StaticResource TitleBarActionButton}" Click="BtnMinimize_Click" ToolTip="최소화">
|
||||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
||||||
|
|||||||
@@ -3291,10 +3291,10 @@ public partial class ChatWindow : Window
|
|||||||
Text = _appState.ActiveTasks.Count > 0
|
Text = _appState.ActiveTasks.Count > 0
|
||||||
? $"진행 중 {_appState.ActiveTasks.Count}"
|
? $"진행 중 {_appState.ActiveTasks.Count}"
|
||||||
: "진행 중",
|
: "진행 중",
|
||||||
FontSize = 8,
|
FontSize = 7.75,
|
||||||
FontWeight = FontWeights.Medium,
|
FontWeight = FontWeights.Medium,
|
||||||
Foreground = BrushFromHex("#4F46E5"),
|
Foreground = BrushFromHex("#4F46E5"),
|
||||||
Margin = new Thickness(0, 2, 0, 0),
|
Margin = new Thickness(0, 1.5, 0, 0),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (item.AgentRunCount > 0)
|
if (item.AgentRunCount > 0)
|
||||||
@@ -3304,11 +3304,11 @@ public partial class ChatWindow : Window
|
|||||||
Text = item.FailedAgentRunCount > 0
|
Text = item.FailedAgentRunCount > 0
|
||||||
? $"실패 {item.FailedAgentRunCount} · {TruncateForStatus(item.LastAgentRunSummary, 26)}"
|
? $"실패 {item.FailedAgentRunCount} · {TruncateForStatus(item.LastAgentRunSummary, 26)}"
|
||||||
: $"실행 {item.AgentRunCount} · {TruncateForStatus(item.LastAgentRunSummary, 28)}",
|
: $"실행 {item.AgentRunCount} · {TruncateForStatus(item.LastAgentRunSummary, 28)}",
|
||||||
FontSize = 8.25,
|
FontSize = 7.9,
|
||||||
Foreground = item.FailedAgentRunCount > 0
|
Foreground = item.FailedAgentRunCount > 0
|
||||||
? BrushFromHex("#B91C1C")
|
? BrushFromHex("#B91C1C")
|
||||||
: (TryFindResource("SecondaryText") as Brush ?? Brushes.Gray),
|
: (TryFindResource("SecondaryText") as Brush ?? Brushes.Gray),
|
||||||
Margin = new Thickness(0, 2, 0, 0),
|
Margin = new Thickness(0, 1.5, 0, 0),
|
||||||
TextTrimming = TextTrimming.CharacterEllipsis
|
TextTrimming = TextTrimming.CharacterEllipsis
|
||||||
};
|
};
|
||||||
if (!string.IsNullOrWhiteSpace(item.LastAgentRunSummary))
|
if (!string.IsNullOrWhiteSpace(item.LastAgentRunSummary))
|
||||||
@@ -3329,7 +3329,7 @@ public partial class ChatWindow : Window
|
|||||||
{
|
{
|
||||||
Text = "\uE70F", // Edit
|
Text = "\uE70F", // Edit
|
||||||
FontFamily = new FontFamily("Segoe MDL2 Assets"),
|
FontFamily = new FontFamily("Segoe MDL2 Assets"),
|
||||||
FontSize = 8.5,
|
FontSize = 8,
|
||||||
Foreground = (TryFindResource("SecondaryText") as Brush ?? Brushes.Gray)
|
Foreground = (TryFindResource("SecondaryText") as Brush ?? Brushes.Gray)
|
||||||
},
|
},
|
||||||
Background = Brushes.Transparent,
|
Background = Brushes.Transparent,
|
||||||
@@ -3337,10 +3337,10 @@ public partial class ChatWindow : Window
|
|||||||
Cursor = Cursors.Hand,
|
Cursor = Cursors.Hand,
|
||||||
VerticalAlignment = VerticalAlignment.Center,
|
VerticalAlignment = VerticalAlignment.Center,
|
||||||
Visibility = Visibility.Collapsed,
|
Visibility = Visibility.Collapsed,
|
||||||
Width = 22,
|
Width = 20,
|
||||||
Height = 22,
|
Height = 20,
|
||||||
Padding = new Thickness(0),
|
Padding = new Thickness(0),
|
||||||
Opacity = 0.85,
|
Opacity = 0.72,
|
||||||
ToolTip = _activeTab == "Cowork" ? "작업 유형" : "대화 주제 변경"
|
ToolTip = _activeTab == "Cowork" ? "작업 유형" : "대화 주제 변경"
|
||||||
};
|
};
|
||||||
var capturedId = item.Id;
|
var capturedId = item.Id;
|
||||||
|
|||||||
Reference in New Issue
Block a user