AX Agent 프리셋 안내와 상단 탭 레이아웃 복구\n\n- Chat/Cowork 프리셋 빈 화면을 Stretch 기반으로 바꿔 카드 하단 잘림을 줄임\n- 선택한 대화 주제/작업 유형을 헤더 중앙 가이드로 다시 표시하도록 복구\n- 상단 탭 pill 그룹과 하단 사용자 영역 설정 버튼 크기를 키워 가독성 보정\n- README와 DEVELOPMENT 문서에 2026-04-05 19:59(KST) 기준 변경 이력 반영\n- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
This commit is contained in:
@@ -174,11 +174,12 @@
|
||||
<!-- 탭 버튼 -->
|
||||
<Style x:Key="TopTabBtn" TargetType="RadioButton">
|
||||
<Setter Property="Foreground" Value="{DynamicResource SecondaryText}"/>
|
||||
<Setter Property="FontSize" Value="13.5"/>
|
||||
<Setter Property="FontSize" Value="14.5"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="Cursor" Value="Hand"/>
|
||||
<Setter Property="Margin" Value="2"/>
|
||||
<Setter Property="Padding" Value="20,8"/>
|
||||
<Setter Property="Margin" Value="2.5"/>
|
||||
<Setter Property="Padding" Value="24,10"/>
|
||||
<Setter Property="MinWidth" Value="78"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="RadioButton">
|
||||
@@ -197,7 +198,7 @@
|
||||
</Trigger>
|
||||
<!-- IsChecked를 뒤에 두어 호버보다 선택 상태가 항상 우선 적용 -->
|
||||
<Trigger Property="IsChecked" Value="True">
|
||||
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource LauncherBackground}"/>
|
||||
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemBackground}"/>
|
||||
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
|
||||
<Setter Property="Foreground" Value="{DynamicResource PrimaryText}"/>
|
||||
<Setter Property="FontWeight" Value="Bold"/>
|
||||
@@ -814,14 +815,14 @@
|
||||
<Button x:Name="BtnSidebarSettings"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource GhostBtn}"
|
||||
Width="24" Height="24"
|
||||
Width="32" Height="32"
|
||||
Margin="6,0,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Click="BtnSettings_Click"
|
||||
ToolTip="AX Agent 설정">
|
||||
<TextBlock Text=""
|
||||
FontFamily="Segoe MDL2 Assets"
|
||||
FontSize="12"
|
||||
FontSize="15"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"/>
|
||||
@@ -850,8 +851,13 @@
|
||||
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,0,0,1"
|
||||
Padding="10,3,10,3">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<!-- 좌: 대화 제목 -->
|
||||
<StackPanel Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Center">
|
||||
<StackPanel Grid.Column="0" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Center">
|
||||
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<Grid VerticalAlignment="Center">
|
||||
<TextBlock x:Name="ChatTitle" Text="" FontSize="12.25" FontWeight="SemiBold"
|
||||
@@ -899,8 +905,34 @@
|
||||
</Button>
|
||||
</WrapPanel>
|
||||
</StackPanel>
|
||||
<Border x:Name="SelectedPresetGuide"
|
||||
Grid.Column="1"
|
||||
Visibility="Collapsed"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Background="{DynamicResource HintBackground}"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="1"
|
||||
CornerRadius="12"
|
||||
Padding="12,7"
|
||||
Margin="16,0">
|
||||
<StackPanel HorizontalAlignment="Center">
|
||||
<TextBlock x:Name="SelectedPresetGuideTitle"
|
||||
FontSize="12.5"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource PrimaryText}"
|
||||
TextAlignment="Center"/>
|
||||
<TextBlock x:Name="SelectedPresetGuideDesc"
|
||||
Margin="0,2,0,0"
|
||||
FontSize="11.5"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
TextAlignment="Center"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
MaxWidth="320"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<!-- 우: 프리뷰 토글 버튼 -->
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
|
||||
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
|
||||
<Button x:Name="BtnPreviewToggle" Style="{StaticResource GhostBtn}"
|
||||
Click="BtnPreviewToggle_Click" ToolTip="미리보기 패널" Visibility="Collapsed"
|
||||
Padding="5,2.5" MinWidth="0">
|
||||
@@ -1093,10 +1125,10 @@
|
||||
<!-- 중앙: 탭 메뉴 -->
|
||||
<Border Grid.Column="1"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
Background="{DynamicResource LauncherBackground}"
|
||||
Background="{DynamicResource HintBackground}"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="1"
|
||||
CornerRadius="999" Padding="4"
|
||||
CornerRadius="999" Padding="6"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<RadioButton x:Name="TabChat" Content="채팅" Style="{StaticResource TopTabBtn}"
|
||||
@@ -1196,19 +1228,19 @@
|
||||
<!-- 빈 상태 -->
|
||||
<Grid x:Name="EmptyState" Grid.Row="3"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Center"
|
||||
VerticalAlignment="Stretch"
|
||||
MaxWidth="960"
|
||||
Margin="24,10,24,12">
|
||||
Margin="24,16,24,16">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="16"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="18"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Grid.Row="0"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Top"
|
||||
Margin="0,10,0,2">
|
||||
Margin="0,14,0,4">
|
||||
<Border x:Name="EmptyIcon" CornerRadius="12" Width="36" Height="36"
|
||||
HorizontalAlignment="Center" Margin="0,0,0,10"
|
||||
Background="{DynamicResource HintBackground}">
|
||||
@@ -1229,14 +1261,14 @@
|
||||
|
||||
<ScrollViewer x:Name="TopicPresetScrollViewer"
|
||||
Grid.Row="2"
|
||||
VerticalScrollBarVisibility="Disabled"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Disabled"
|
||||
MaxHeight="360"
|
||||
MaxHeight="420"
|
||||
Margin="0"
|
||||
Padding="0,2,0,0">
|
||||
Padding="0,4,0,8">
|
||||
<!-- 대화 주제 버튼 (프리셋에서 동적 생성) -->
|
||||
<WrapPanel x:Name="TopicButtonPanel" HorizontalAlignment="Center"
|
||||
Margin="0,0,0,4"/>
|
||||
Margin="0,0,0,8"/>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
|
||||
|
||||
@@ -4064,10 +4064,56 @@ public partial class ChatWindow : Window
|
||||
|
||||
private void UpdateChatTitle()
|
||||
{
|
||||
ChatConversation? conversation;
|
||||
lock (_convLock)
|
||||
{
|
||||
ChatTitle.Text = _currentConversation?.Title ?? "";
|
||||
conversation = _currentConversation;
|
||||
ChatTitle.Text = conversation?.Title ?? "";
|
||||
}
|
||||
|
||||
UpdateSelectedPresetGuide(conversation);
|
||||
}
|
||||
|
||||
private void UpdateSelectedPresetGuide(ChatConversation? conversation = null)
|
||||
{
|
||||
if (SelectedPresetGuide == null || SelectedPresetGuideTitle == null || SelectedPresetGuideDesc == null)
|
||||
return;
|
||||
|
||||
if (string.Equals(_activeTab, "Code", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
SelectedPresetGuide.Visibility = Visibility.Collapsed;
|
||||
SelectedPresetGuideTitle.Text = "";
|
||||
SelectedPresetGuideDesc.Text = "";
|
||||
return;
|
||||
}
|
||||
|
||||
conversation ??= _currentConversation;
|
||||
var category = conversation?.Category?.Trim();
|
||||
if (string.IsNullOrWhiteSpace(category))
|
||||
{
|
||||
SelectedPresetGuide.Visibility = Visibility.Collapsed;
|
||||
SelectedPresetGuideTitle.Text = "";
|
||||
SelectedPresetGuideDesc.Text = "";
|
||||
return;
|
||||
}
|
||||
|
||||
var preset = Services.PresetService.GetByTabWithCustom(_activeTab, _settings.Settings.Llm.CustomPresets)
|
||||
.FirstOrDefault(p => string.Equals(p.Category?.Trim(), category, StringComparison.OrdinalIgnoreCase));
|
||||
if (preset == null)
|
||||
{
|
||||
SelectedPresetGuide.Visibility = Visibility.Collapsed;
|
||||
SelectedPresetGuideTitle.Text = "";
|
||||
SelectedPresetGuideDesc.Text = "";
|
||||
return;
|
||||
}
|
||||
|
||||
SelectedPresetGuideTitle.Text = string.Equals(_activeTab, "Cowork", StringComparison.OrdinalIgnoreCase)
|
||||
? $"선택된 작업 유형 · {preset.Label}"
|
||||
: $"선택된 대화 주제 · {preset.Label}";
|
||||
SelectedPresetGuideDesc.Text = string.IsNullOrWhiteSpace(preset.Description)
|
||||
? (preset.Placeholder ?? "")
|
||||
: preset.Description;
|
||||
SelectedPresetGuide.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
// ─── 메시지 렌더링 ───────────────────────────────────────────────────
|
||||
@@ -12611,6 +12657,7 @@ public partial class ChatWindow : Window
|
||||
UpdateCategoryLabel();
|
||||
SaveConversationSettings();
|
||||
RefreshConversationList();
|
||||
UpdateSelectedPresetGuide();
|
||||
if (EmptyState != null)
|
||||
EmptyState.Visibility = Visibility.Collapsed;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user