- ChatWindow.xaml에서 slash 팝업 폭/높이/헤더/리스트/푸터 패딩을 축소해 한 화면 정보량을 증가 - ChatWindow.xaml.cs에서 섹션 헤더/명령 항목의 폰트와 패딩을 낮춰 Codex형 컴팩트 탐색 밀도 반영 - 스크롤/선택 UX(재렌더링 최소화) 경로와 충돌 없이 시각 밀도만 조정 - README.md, docs/DEVELOPMENT.md에 2026-04-04 14:09(KST) 기준 이력 반영 - 검증: dotnet build 0경고/0오류, slash 관련 필터 테스트 41건 통과
This commit is contained in:
@@ -222,7 +222,7 @@ public class MyHandler : IActionHandler
|
||||
|
||||
### v0.7.3 — AX Agent 권한 코어 재구성 + 입력 계층 정리
|
||||
|
||||
업데이트: 2026-04-04 14:01 (KST)
|
||||
업데이트: 2026-04-04 14:09 (KST)
|
||||
|
||||
| 분류 | 내용 |
|
||||
|------|------|
|
||||
@@ -282,6 +282,7 @@ public class MyHandler : IActionHandler
|
||||
| L4 통합 회귀 보강 | `PermissionModeCatalogTests`/`PermissionModePresentationCatalogTests`/`SlashCommandCatalogTests`를 추가하고 deny 우선 규칙을 `OperationModePolicyTests`에 반영해 권한·슬래시 회귀망을 강화 |
|
||||
| 권한 팝업 핵심 4모드 정렬 | 권한 팝업을 `소극 활용/적극 활용/계획 중심/완전 자동` 중심으로 단순화하고 `활용하지 않음/질문 없이 진행`은 `고급 모드` 접힘 섹션으로 분리 |
|
||||
| slash 스크롤 체감 개선 | 휠/방향키 이동 시 전체 재렌더링을 제거하고 선택 하이라이트만 갱신하도록 바꿔 `/` 팝업 스크롤 반응성과 안정성을 개선 |
|
||||
| slash 팝업 밀도 압축 2단계 | `/` 팝업 폭/높이/패딩과 항목 폰트/행 높이를 축소해 Codex형 컴팩트 밀도와 스캔 속도를 강화 |
|
||||
| Slash palette 상태 분리 시작 | `ChatWindow`에 몰려 있던 slash 상태를 `SlashPaletteState`로 분리해 이후 Codex/Claude형 composer 개편 기반 마련 |
|
||||
| 런처 이미지 미리보기 추가 | `#` 클립보드 이미지 항목에서 `Shift+Enter`로 전용 미리보기 창을 열고, 줌·원본 해상도 확인·PNG/JPEG/BMP 저장·클립보드 복사를 지원 |
|
||||
| 검증 | `dotnet build` 경고 0 / 오류 0, `dotnet test` 436 passed / 0 failed |
|
||||
|
||||
@@ -3430,3 +3430,25 @@ else:
|
||||
### 3) 품질 게이트
|
||||
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false` 통과 (경고 0, 오류 0).
|
||||
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj --no-build --filter "FullyQualifiedName~ChatWindowSlashPolicyTests|FullyQualifiedName~SlashCommandCatalogTests|FullyQualifiedName~OperationModePolicyTests|FullyQualifiedName~PermissionModeCatalogTests|FullyQualifiedName~PermissionModePresentationCatalogTests"` 통과 (84 passed, 0 failed).
|
||||
|
||||
## 2026-04-04 추가 진행 기록 (연속 실행 32차: slash 팝업 밀도 압축 2단계)
|
||||
|
||||
업데이트: 2026-04-04 14:09 (KST)
|
||||
|
||||
### 1) slash 팝업 프레임 밀도 조정
|
||||
- `ChatWindow.xaml`의 slash 팝업 폭/높이와 내부 여백을 축소:
|
||||
- `MinWidth 620 → 580`, `MaxWidth 780 → 740`
|
||||
- `ScrollViewer MaxHeight 420 → 380`
|
||||
- 헤더/리스트/푸터 패딩 및 마진 축소
|
||||
- 목적: 더 컴팩트한 정보 밀도와 빠른 스캔 흐름 확보.
|
||||
|
||||
### 2) 항목/섹션 타이포 밀도 조정
|
||||
- `ChatWindow.xaml.cs`의 렌더링 항목 크기를 축소:
|
||||
- 섹션 헤더 패딩/폰트(`10.5/10 → 10/9.5`)
|
||||
- 명령 항목 패딩/마진 축소
|
||||
- 명령 라벨/설명 폰트(`13/11.5 → 12.5/11`)
|
||||
- 목적: 한 화면에 더 많은 명령이 보이도록 개선.
|
||||
|
||||
### 3) 품질 게이트
|
||||
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false` 통과 (경고 0, 오류 0).
|
||||
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj --no-build --filter "FullyQualifiedName~ChatWindowSlashPolicyTests|FullyQualifiedName~SlashCommandCatalogTests"` 통과 (41 passed, 0 failed).
|
||||
|
||||
@@ -861,7 +861,7 @@
|
||||
<Border Background="{DynamicResource LauncherBackground}"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="1" CornerRadius="18"
|
||||
Padding="0" MinWidth="620" MaxWidth="780"
|
||||
Padding="0" MinWidth="580" MaxWidth="740"
|
||||
PreviewMouseWheel="SlashPopup_PreviewMouseWheel">
|
||||
<Border.Effect>
|
||||
<DropShadowEffect BlurRadius="16" ShadowDepth="0" Opacity="0.16"/>
|
||||
@@ -871,7 +871,7 @@
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="0,0,0,1"
|
||||
CornerRadius="18,18,0,0"
|
||||
Padding="14,12,14,10">
|
||||
Padding="12,10,12,8">
|
||||
<StackPanel>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
@@ -882,7 +882,7 @@
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="0">
|
||||
<Border Background="{DynamicResource AccentColor}"
|
||||
CornerRadius="8"
|
||||
Padding="6,2"
|
||||
Padding="5,1.5"
|
||||
Margin="0,0,8,0"
|
||||
VerticalAlignment="Center">
|
||||
<TextBlock Text="/"
|
||||
@@ -892,7 +892,7 @@
|
||||
</Border>
|
||||
<TextBlock x:Name="SlashPopupTitle"
|
||||
Text="명령 및 스킬"
|
||||
FontSize="13.5"
|
||||
FontSize="13"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource PrimaryText}"
|
||||
VerticalAlignment="Center"/>
|
||||
@@ -901,7 +901,7 @@
|
||||
x:Name="BtnSlashReset"
|
||||
Click="BtnSlashReset_Click"
|
||||
Style="{StaticResource GhostBtn}"
|
||||
Padding="8,4"
|
||||
Padding="7,3"
|
||||
Margin="0,0,6,0"
|
||||
ToolTip="핀/최근 정리">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
@@ -919,7 +919,7 @@
|
||||
x:Name="BtnSlashToggleGroups"
|
||||
Click="BtnSlashToggleGroups_Click"
|
||||
Style="{StaticResource GhostBtn}"
|
||||
Padding="8,4"
|
||||
Padding="7,3"
|
||||
ToolTip="명령/스킬 그룹 전체 접기 또는 펼치기">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text=""
|
||||
@@ -936,25 +936,25 @@
|
||||
</Grid>
|
||||
<TextBlock x:Name="SlashPopupHint"
|
||||
Text="방향키나 마우스 휠로 이동하고 Enter로 바로 실행합니다"
|
||||
FontSize="11.5"
|
||||
FontSize="11"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
Margin="0,6,0,0"/>
|
||||
Margin="0,5,0,0"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<ScrollViewer x:Name="SlashScrollViewer"
|
||||
MaxHeight="420"
|
||||
MaxHeight="380"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Disabled"
|
||||
CanContentScroll="False"
|
||||
PanningMode="VerticalOnly"
|
||||
PreviewMouseWheel="SlashPopup_PreviewMouseWheel"
|
||||
Padding="10,10,10,8">
|
||||
Padding="8,8,8,6">
|
||||
<ItemsControl x:Name="SlashItems"/>
|
||||
</ScrollViewer>
|
||||
<TextBlock x:Name="SlashPopupFooter"
|
||||
Margin="14,0,14,12"
|
||||
Margin="12,0,12,10"
|
||||
Text="Enter 실행 · ↑↓ 이동 · 휠 스크롤 · Esc 닫기"
|
||||
FontSize="10.5"
|
||||
FontSize="10"
|
||||
Foreground="{DynamicResource SecondaryText}"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
@@ -5255,8 +5255,8 @@ public partial class ChatWindow : Window
|
||||
BorderBrush = borderBrush,
|
||||
BorderThickness = new Thickness(1),
|
||||
CornerRadius = new CornerRadius(8),
|
||||
Padding = new Thickness(10, 6, 10, 6),
|
||||
Margin = new Thickness(0, 0, 0, 6),
|
||||
Padding = new Thickness(9, 5, 9, 5),
|
||||
Margin = new Thickness(0, 0, 0, 5),
|
||||
Cursor = Cursors.Hand,
|
||||
};
|
||||
var grid = new Grid();
|
||||
@@ -5276,7 +5276,7 @@ public partial class ChatWindow : Window
|
||||
var titleText = new TextBlock
|
||||
{
|
||||
Text = $"{title} {count}",
|
||||
FontSize = 10.5,
|
||||
FontSize = 10,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = primaryText,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
@@ -5286,7 +5286,7 @@ public partial class ChatWindow : Window
|
||||
var metaText = new TextBlock
|
||||
{
|
||||
Text = expanded ? "접기" : "펼치기",
|
||||
FontSize = 10,
|
||||
FontSize = 9.5,
|
||||
Foreground = secondaryText,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
};
|
||||
@@ -5328,8 +5328,8 @@ public partial class ChatWindow : Window
|
||||
BorderBrush = borderBrush,
|
||||
BorderThickness = new Thickness(1),
|
||||
CornerRadius = new CornerRadius(10),
|
||||
Padding = new Thickness(10, 7, 10, 7),
|
||||
Margin = new Thickness(0, 0, 0, 4),
|
||||
Padding = new Thickness(9, 6, 9, 6),
|
||||
Margin = new Thickness(0, 0, 0, 3),
|
||||
Cursor = skillAvailable ? Cursors.Hand : Cursors.Arrow,
|
||||
Opacity = skillAvailable ? 1.0 : 0.5,
|
||||
};
|
||||
@@ -5351,7 +5351,7 @@ public partial class ChatWindow : Window
|
||||
titleRow.Children.Add(new TextBlock
|
||||
{
|
||||
Text = cmd,
|
||||
FontSize = 13,
|
||||
FontSize = 12.5,
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = skillAvailable ? primaryText : secondaryText,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
@@ -5396,10 +5396,10 @@ public partial class ChatWindow : Window
|
||||
leftStack.Children.Add(new TextBlock
|
||||
{
|
||||
Text = label,
|
||||
FontSize = 11.5,
|
||||
FontSize = 11,
|
||||
Foreground = secondaryText,
|
||||
VerticalAlignment = VerticalAlignment.Center,
|
||||
Margin = new Thickness(18, 2, 0, 0),
|
||||
Margin = new Thickness(18, 1.5, 0, 0),
|
||||
TextTrimming = TextTrimming.CharacterEllipsis,
|
||||
});
|
||||
Grid.SetColumn(leftStack, 0);
|
||||
|
||||
Reference in New Issue
Block a user