AX Agent 작업 폴더 선택 팝업 스타일 정리 및 최근 항목 UI 개선
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
- 최근 작업 폴더 팝업 외곽 radius, 그림자, 내부 여백을 조정해 레퍼런스에 더 가까운 카드형 스타일로 보정 - 최근 폴더 항목을 하단 구분선 방식에서 개별 라운드 row 방식으로 변경하고 선택 체크와 텍스트 계층을 정돈 - 다른 폴더 선택 행도 동일한 row 스타일로 통일해 팝업 전체 시각 언어를 일관되게 정리 - README 및 DEVELOPMENT 문서에 2026-04-05 23:28 (KST) 기준 변경 이력 반영 검증 - 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:
@@ -1053,3 +1053,5 @@ MIT License
|
||||
- AX Agent 좌측 패널과 본문 사이 경계선을 드래그해 사이드바 폭을 직접 조절할 수 있게 했다. 사이드바가 열려 있을 때만 splitter가 보이며, 사용자가 조절한 폭은 닫았다 다시 열어도 유지된다.
|
||||
- 업데이트: 2026-04-05 23:22 (KST)
|
||||
- AX Agent 상단 탭 헤더 높이와 탭 래퍼 패딩을 늘려 채팅 / Cowork / 코드 글자가 잘리던 문제를 보정했다. 또 사용자/assistant/streaming 메시지가 같은 transcript 폭 컨테이너를 공유하도록 바꿔 좌우 정렬 기준이 어긋나 보이던 문제를 정리했다.
|
||||
- 업데이트: 2026-04-05 23:28 (KST)
|
||||
- AX Agent 작업 폴더 선택 팝업의 최근 항목 스타일을 레퍼런스처럼 더 단정한 라운드 row 구조로 정리했다. 각 최근 폴더 항목은 개별 카드형 hover/선택 상태를 가지도록 바꾸고, `다른 폴더 선택`도 같은 시각 언어로 맞췄다. 팝업 외곽 radius, 그림자, 여백, 체크 위치, 텍스트 계층도 함께 조정해 더 자연스럽게 보이게 했다.
|
||||
|
||||
@@ -4801,3 +4801,6 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
|
||||
- 업데이트: 2026-04-05 23:22 (KST)
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 상단 헤더 첫 행 높이를 42 -> 48로 늘리고, 중앙 탭 래퍼의 Padding, MinHeight를 함께 키워 탭 글자가 위아래로 잘리던 문제를 보정했다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 사용자/assistant/streaming 메시지 컨테이너를 모두 GetMessageMaxWidth() 기준 동일 폭으로 맞추고, wrapper 자체는 중앙 transcript 축을 공유한 채 내부 bubble만 좌우 정렬되도록 바꿨다. 이로써 메시지 박스가 서로 다른 고정 마진 때문에 어긋나 보이던 정렬 문제를 줄였다.
|
||||
- 업데이트: 2026-04-05 23:28 (KST)
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 작업 폴더 선택 팝업을 더 도톰한 radius, 약한 그림자, 넓은 padding 기준으로 다시 조정했다. 최근 헤더 여백과 목록 내부 padding도 함께 늘려 레퍼런스처럼 더 안정된 카드형 팝업으로 보이게 했다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `CreatePopupMenuRow(...)`는 하단 border 구분선 방식 대신 개별 라운드 row 방식으로 바꿨다. 최근 폴더 항목과 `다른 폴더 선택` 행이 동일한 시각 언어를 쓰고, 선택 상태는 우측 체크와 은은한 배경으로만 표현되게 정리했다.
|
||||
|
||||
@@ -1491,22 +1491,22 @@
|
||||
<Border Background="{DynamicResource LauncherBackground}"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="1"
|
||||
CornerRadius="16"
|
||||
MinWidth="286"
|
||||
MaxWidth="332">
|
||||
CornerRadius="18"
|
||||
MinWidth="300"
|
||||
MaxWidth="348">
|
||||
<Border.Effect>
|
||||
<DropShadowEffect BlurRadius="22" ShadowDepth="0" Opacity="0.14"/>
|
||||
<DropShadowEffect BlurRadius="24" ShadowDepth="0" Opacity="0.12"/>
|
||||
</Border.Effect>
|
||||
<StackPanel Margin="0">
|
||||
<TextBlock Text="최근"
|
||||
Margin="16,14,16,10"
|
||||
FontSize="12.5"
|
||||
Margin="18,16,18,10"
|
||||
FontSize="13"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource PrimaryText}"/>
|
||||
<ScrollViewer MaxHeight="360"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Disabled"
|
||||
Padding="10,0,10,10">
|
||||
Padding="12,0,12,12">
|
||||
<StackPanel x:Name="FolderMenuItems" Margin="2"/>
|
||||
</ScrollViewer>
|
||||
</StackPanel>
|
||||
|
||||
@@ -1442,8 +1442,8 @@ public partial class ChatWindow : Window
|
||||
{
|
||||
Height = 1,
|
||||
Background = TryFindResource("BorderColor") as Brush ?? Brushes.Gray,
|
||||
Margin = new Thickness(8, 4, 8, 8),
|
||||
Opacity = 0.45,
|
||||
Margin = new Thickness(6, 6, 6, 10),
|
||||
Opacity = 0.35,
|
||||
});
|
||||
AddWorkspaceRows(remainingFolders);
|
||||
}
|
||||
@@ -1453,9 +1453,9 @@ public partial class ChatWindow : Window
|
||||
FolderMenuItems.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "최근 작업 폴더가 없습니다.",
|
||||
FontSize = 11.5,
|
||||
FontSize = 12,
|
||||
Foreground = secondaryText,
|
||||
Margin = new Thickness(10, 6, 10, 10),
|
||||
Margin = new Thickness(10, 8, 10, 12),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1463,43 +1463,27 @@ public partial class ChatWindow : Window
|
||||
{
|
||||
Height = 1,
|
||||
Background = TryFindResource("BorderColor") as Brush ?? Brushes.Gray,
|
||||
Margin = new Thickness(8, 8, 8, 8),
|
||||
Opacity = 0.45,
|
||||
Margin = new Thickness(6, 8, 6, 10),
|
||||
Opacity = 0.35,
|
||||
});
|
||||
|
||||
// 다른 폴더 선택 버튼
|
||||
var browseSp = new StackPanel { Orientation = Orientation.Horizontal };
|
||||
browseSp.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "\uE710",
|
||||
FontFamily = new FontFamily("Segoe MDL2 Assets"),
|
||||
FontSize = 13,
|
||||
Foreground = accentBrush,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
Margin = new Thickness(0, 0, 8, 0),
|
||||
});
|
||||
browseSp.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "다른 폴더 선택",
|
||||
FontSize = 13,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = primaryText,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
});
|
||||
var browseBorder = new Border
|
||||
{
|
||||
Child = browseSp,
|
||||
Background = Brushes.Transparent,
|
||||
CornerRadius = new CornerRadius(8),
|
||||
Cursor = Cursors.Hand,
|
||||
Padding = new Thickness(10, 7, 10, 7),
|
||||
};
|
||||
browseBorder.MouseEnter += (s, _) => { if (s is Border b) b.Background = new SolidColorBrush(Color.FromArgb(0x18, 0xFF, 0xFF, 0xFF)); };
|
||||
browseBorder.MouseLeave += (s, _) => { if (s is Border b) b.Background = Brushes.Transparent; };
|
||||
var browseBorder = CreatePopupMenuRow(
|
||||
"\uE710",
|
||||
"다른 폴더 선택",
|
||||
string.Empty,
|
||||
false,
|
||||
accentBrush,
|
||||
secondaryText,
|
||||
primaryText,
|
||||
() =>
|
||||
{
|
||||
FolderMenuPopup.IsOpen = false;
|
||||
BrowseWorkFolder();
|
||||
});
|
||||
browseBorder.Margin = new Thickness(0);
|
||||
browseBorder.MouseLeftButtonUp += (_, _) =>
|
||||
{
|
||||
FolderMenuPopup.IsOpen = false;
|
||||
BrowseWorkFolder();
|
||||
};
|
||||
FolderMenuItems.Children.Add(browseBorder);
|
||||
}
|
||||
@@ -13174,16 +13158,17 @@ public partial class ChatWindow : Window
|
||||
Brush primaryText,
|
||||
Action? onClick)
|
||||
{
|
||||
var borderColor = TryFindResource("BorderColor") as Brush ?? BrushFromHex("#E5E7EB");
|
||||
var hintBackground = TryFindResource("HintBackground") as Brush ?? BrushFromHex("#F8FAFC");
|
||||
var hoverBackground = TryFindResource("ItemHoverBackground") as Brush ?? BrushFromHex("#F8FAFC");
|
||||
var row = new Border
|
||||
{
|
||||
Background = selected ? hintBackground : Brushes.Transparent,
|
||||
BorderBrush = borderColor,
|
||||
BorderThickness = new Thickness(0, 0, 0, 1),
|
||||
Padding = new Thickness(10, 8, 10, 8),
|
||||
BorderBrush = selected ? BrushFromHex("#D6E4FF") : Brushes.Transparent,
|
||||
BorderThickness = new Thickness(1),
|
||||
CornerRadius = new CornerRadius(12),
|
||||
Padding = new Thickness(12, 10, 12, 10),
|
||||
Cursor = Cursors.Hand,
|
||||
Margin = new Thickness(0),
|
||||
Margin = new Thickness(0, 0, 0, 6),
|
||||
};
|
||||
|
||||
var grid = new Grid();
|
||||
@@ -13195,10 +13180,10 @@ public partial class ChatWindow : Window
|
||||
{
|
||||
Text = icon,
|
||||
FontFamily = new FontFamily("Segoe MDL2 Assets"),
|
||||
FontSize = 12,
|
||||
FontSize = 14,
|
||||
Foreground = selected ? accentBrush : secondaryText,
|
||||
Margin = new Thickness(0, 1, 8, 0),
|
||||
VerticalAlignment = VerticalAlignment.Top,
|
||||
Margin = new Thickness(0, 1, 10, 0),
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
};
|
||||
grid.Children.Add(iconBlock);
|
||||
|
||||
@@ -13206,18 +13191,21 @@ public partial class ChatWindow : Window
|
||||
textStack.Children.Add(new TextBlock
|
||||
{
|
||||
Text = title,
|
||||
FontSize = 12,
|
||||
FontSize = 13.5,
|
||||
FontWeight = selected ? FontWeights.SemiBold : FontWeights.Medium,
|
||||
Foreground = primaryText,
|
||||
});
|
||||
textStack.Children.Add(new TextBlock
|
||||
if (!string.IsNullOrWhiteSpace(description))
|
||||
{
|
||||
Text = description,
|
||||
FontSize = 10.5,
|
||||
Foreground = secondaryText,
|
||||
Margin = new Thickness(0, 2, 0, 0),
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
});
|
||||
textStack.Children.Add(new TextBlock
|
||||
{
|
||||
Text = description,
|
||||
FontSize = 11.5,
|
||||
Foreground = secondaryText,
|
||||
Margin = new Thickness(0, 3, 0, 0),
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
});
|
||||
}
|
||||
Grid.SetColumn(textStack, 1);
|
||||
grid.Children.Add(textStack);
|
||||
|
||||
@@ -13225,12 +13213,14 @@ public partial class ChatWindow : Window
|
||||
{
|
||||
var check = CreateSimpleCheck(accentBrush, 14);
|
||||
Grid.SetColumn(check, 2);
|
||||
check.Margin = new Thickness(10, 0, 0, 0);
|
||||
if (check is FrameworkElement element)
|
||||
element.VerticalAlignment = VerticalAlignment.Center;
|
||||
grid.Children.Add(check);
|
||||
}
|
||||
|
||||
row.Child = grid;
|
||||
var hoverBg = TryFindResource("ItemHoverBackground") as Brush ?? Brushes.Transparent;
|
||||
row.MouseEnter += (_, _) => row.Background = selected ? hintBackground : hoverBg;
|
||||
row.MouseEnter += (_, _) => row.Background = selected ? hintBackground : hoverBackground;
|
||||
row.MouseLeave += (_, _) => row.Background = selected ? hintBackground : Brushes.Transparent;
|
||||
row.MouseLeftButtonUp += (_, _) => onClick?.Invoke();
|
||||
return row;
|
||||
|
||||
Reference in New Issue
Block a user