- ChatWindow 입력 하단(InputBorder, 모델/프리셋 라인, 인라인 설정 패널) 패딩·폰트·버튼 높이를 축소 - InputBox/워터마크와 첨부·내보내기·전송·중지 버튼 크기를 조정해 Codex형 컴포저 밀도에 맞춤 - README.md, docs/DEVELOPMENT.md에 2026-04-04 14:35(KST) 기준 이력 반영 - 검증: dotnet build 0경고/0오류, 관련 필터 테스트 82건 통과
This commit is contained in:
@@ -222,7 +222,7 @@ public class MyHandler : IActionHandler
|
||||
|
||||
### v0.7.3 — AX Agent 권한 코어 재구성 + 입력 계층 정리
|
||||
|
||||
업데이트: 2026-04-04 14:16 (KST)
|
||||
업데이트: 2026-04-04 14:35 (KST)
|
||||
|
||||
| 분류 | 내용 |
|
||||
|------|------|
|
||||
@@ -284,6 +284,7 @@ public class MyHandler : IActionHandler
|
||||
| slash 스크롤 체감 개선 | 휠/방향키 이동 시 전체 재렌더링을 제거하고 선택 하이라이트만 갱신하도록 바꿔 `/` 팝업 스크롤 반응성과 안정성을 개선 |
|
||||
| slash 팝업 밀도 압축 2단계 | `/` 팝업 폭/높이/패딩과 항목 폰트/행 높이를 축소해 Codex형 컴팩트 밀도와 스캔 속도를 강화 |
|
||||
| 권한 팝업 밀도 압축 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 |
|
||||
|
||||
@@ -3472,3 +3472,23 @@ else:
|
||||
### 4) 품질 게이트
|
||||
- `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~OperationModePolicyTests|FullyQualifiedName~PermissionModeCatalogTests|FullyQualifiedName~PermissionModePresentationCatalogTests|FullyQualifiedName~ChatWindowSlashPolicyTests"` 통과 (82 passed, 0 failed).
|
||||
|
||||
## 2026-04-04 추가 진행 기록 (연속 실행 34차: 입력 하단/모델 선택 컴팩트 정렬)
|
||||
|
||||
업데이트: 2026-04-04 14:35 (KST)
|
||||
|
||||
### 1) 입력 하단 프레임 밀도 조정
|
||||
- `InputBorder` 코너/패딩을 축소(`CornerRadius 24→22`, `Padding 7→6`).
|
||||
- 입력 상단 모델/프리셋 라인의 버튼 높이/패딩을 축소해 한 줄 밀도를 강화.
|
||||
|
||||
### 2) 모델 선택/인라인 설정 타이포 정리
|
||||
- `ModelLabel` 폰트와 최대 폭을 축소해 모델명 길이에 따른 흔들림을 완화.
|
||||
- 인라인 설정 패널(서비스/모델/퀵액션)의 폰트, 콤보 높이, 버튼 패딩을 한 단계 축소.
|
||||
|
||||
### 3) 입력 본문/액션 버튼 밀도 조정
|
||||
- `InputBox`/워터마크 폰트·패딩·최소 높이를 소폭 축소해 입력 시야를 확보.
|
||||
- 첨부/내보내기/전송/중지 버튼 크기를 줄여 Codex형 하단 컴팩트 톤으로 정렬.
|
||||
|
||||
### 4) 품질 게이트
|
||||
- `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~OperationModePolicyTests|FullyQualifiedName~PermissionModeCatalogTests|FullyQualifiedName~PermissionModePresentationCatalogTests"` 통과 (82 passed, 0 failed).
|
||||
|
||||
@@ -1079,7 +1079,7 @@
|
||||
<!-- 실제 입력 영역 -->
|
||||
<Border x:Name="InputBorder"
|
||||
Background="{DynamicResource ItemBackground}"
|
||||
CornerRadius="24" Padding="7"
|
||||
CornerRadius="22" Padding="6"
|
||||
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1">
|
||||
<Border.Effect>
|
||||
<DropShadowEffect BlurRadius="18" ShadowDepth="0" Opacity="0.08"/>
|
||||
@@ -1093,7 +1093,7 @@
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Row 0: 모델 셀렉터 + 템플릿 버튼 -->
|
||||
<Grid Grid.Row="0" Margin="6,1,6,2">
|
||||
<Grid Grid.Row="0" Margin="5,1,5,2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
@@ -1104,8 +1104,8 @@
|
||||
Grid.Column="0"
|
||||
HorizontalAlignment="Left"
|
||||
Margin="0"
|
||||
MinHeight="28"
|
||||
Padding="10,3"
|
||||
MinHeight="26"
|
||||
Padding="9,2.5"
|
||||
Click="BtnModelSelector_Click"
|
||||
ToolTip="모델/추론 빠른 설정"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
@@ -1113,9 +1113,9 @@
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
VerticalAlignment="Center" Margin="0,0,5,0"/>
|
||||
<TextBlock x:Name="ModelLabel" FontSize="12.5"
|
||||
<TextBlock x:Name="ModelLabel" FontSize="12"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
MaxWidth="280"
|
||||
MaxWidth="260"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
VerticalAlignment="Center"/>
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="9"
|
||||
@@ -1128,9 +1128,9 @@
|
||||
Grid.Column="2"
|
||||
HorizontalAlignment="Right"
|
||||
Margin="0"
|
||||
MinHeight="28"
|
||||
MinWidth="64"
|
||||
Padding="8,3"
|
||||
MinHeight="26"
|
||||
MinWidth="60"
|
||||
Padding="7,2.5"
|
||||
Click="BtnTemplateSelector_Click"
|
||||
ToolTip="프롬프트 템플릿"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
@@ -1138,7 +1138,7 @@
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
VerticalAlignment="Center" Margin="0,0,5,0"/>
|
||||
<TextBlock Text="프리셋" FontSize="12"
|
||||
<TextBlock Text="프리셋" FontSize="11.5"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
VerticalAlignment="Center"/>
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="8"
|
||||
@@ -1151,8 +1151,8 @@
|
||||
<!-- Row 1: 통합 설정 패널 -->
|
||||
<Border x:Name="InlineSettingsPanel"
|
||||
Grid.Row="1"
|
||||
Margin="8,3,8,4"
|
||||
Padding="10,9,10,8"
|
||||
Margin="8,2,8,3"
|
||||
Padding="9,8,9,7"
|
||||
CornerRadius="12"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="1"
|
||||
@@ -1167,7 +1167,7 @@
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0"
|
||||
Text="채팅 설정"
|
||||
FontSize="12"
|
||||
FontSize="11.5"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource PrimaryText}"
|
||||
VerticalAlignment="Center"/>
|
||||
@@ -1175,13 +1175,13 @@
|
||||
x:Name="InlineSettingsHintText"
|
||||
Margin="8,0,0,0"
|
||||
Text="모델/권한 핵심 옵션"
|
||||
FontSize="11"
|
||||
FontSize="10.5"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
VerticalAlignment="Center"/>
|
||||
<Button Grid.Column="2"
|
||||
x:Name="BtnInlineSettingsClose"
|
||||
Style="{StaticResource GhostBtn}"
|
||||
Padding="6,3"
|
||||
Padding="5,3"
|
||||
Click="BtnInlineSettingsClose_Click"
|
||||
ToolTip="설정 패널 닫기">
|
||||
<TextBlock Text=""
|
||||
@@ -1202,22 +1202,22 @@
|
||||
Text="서비스"
|
||||
Margin="0,0,8,0"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="11"
|
||||
FontSize="10.5"
|
||||
Foreground="{DynamicResource SecondaryText}"/>
|
||||
<ComboBox Grid.Column="1"
|
||||
x:Name="CmbInlineService"
|
||||
MinWidth="130"
|
||||
Height="28"
|
||||
Height="26"
|
||||
SelectionChanged="CmbInlineService_SelectionChanged"/>
|
||||
<TextBlock Grid.Column="2"
|
||||
Text="모델"
|
||||
Margin="12,0,8,0"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="11"
|
||||
FontSize="10.5"
|
||||
Foreground="{DynamicResource SecondaryText}"/>
|
||||
<ComboBox Grid.Column="3"
|
||||
x:Name="CmbInlineModel"
|
||||
Height="28"
|
||||
Height="26"
|
||||
SelectionChanged="CmbInlineModel_SelectionChanged"/>
|
||||
</Grid>
|
||||
|
||||
@@ -1225,22 +1225,22 @@
|
||||
<Button x:Name="BtnInlineFastMode"
|
||||
Style="{StaticResource OutlineHoverBtn}"
|
||||
Margin="0,0,6,6"
|
||||
Padding="10,5"
|
||||
Padding="9,4"
|
||||
Click="BtnInlineFastMode_Click"/>
|
||||
<Button x:Name="BtnInlineReasoning"
|
||||
Style="{StaticResource OutlineHoverBtn}"
|
||||
Margin="0,0,6,6"
|
||||
Padding="10,5"
|
||||
Padding="9,4"
|
||||
Click="BtnInlineReasoning_Click"/>
|
||||
<Button x:Name="BtnInlinePlanMode"
|
||||
Style="{StaticResource OutlineHoverBtn}"
|
||||
Margin="0,0,6,6"
|
||||
Padding="10,5"
|
||||
Padding="9,4"
|
||||
Click="BtnInlinePlanMode_Click"/>
|
||||
<Button x:Name="BtnInlinePermission"
|
||||
Style="{StaticResource OutlineHoverBtn}"
|
||||
Margin="0,0,6,6"
|
||||
Padding="10,5"
|
||||
Padding="9,4"
|
||||
Click="BtnInlinePermission_Click"/>
|
||||
<Button x:Name="BtnInlineSkill"
|
||||
Style="{StaticResource OutlineHoverBtn}"
|
||||
@@ -1286,23 +1286,23 @@
|
||||
|
||||
<Grid Grid.Column="0">
|
||||
<TextBox x:Name="InputBox"
|
||||
FontSize="14" FontFamily="Segoe UI, Malgun Gothic"
|
||||
FontSize="13.5" FontFamily="Segoe UI, Malgun Gothic"
|
||||
Foreground="{DynamicResource PrimaryText}"
|
||||
Background="Transparent"
|
||||
CaretBrush="{DynamicResource AccentColor}"
|
||||
BorderThickness="0" Padding="14,10"
|
||||
BorderThickness="0" Padding="12,8"
|
||||
VerticalContentAlignment="Top"
|
||||
AcceptsReturn="True"
|
||||
PreviewKeyDown="InputBox_PreviewKeyDown"
|
||||
TextChanged="InputBox_TextChanged"
|
||||
TextWrapping="Wrap"
|
||||
MinHeight="40" MaxHeight="160"
|
||||
MinHeight="36" MaxHeight="156"
|
||||
VerticalScrollBarVisibility="Auto"/>
|
||||
<!-- 워터마크 (프롬프트 카드 안내문구) -->
|
||||
<TextBlock x:Name="InputWatermark"
|
||||
FontSize="14" FontFamily="Segoe UI, Malgun Gothic"
|
||||
FontSize="13.5" FontFamily="Segoe UI, Malgun Gothic"
|
||||
Foreground="{DynamicResource SecondaryText}"
|
||||
Padding="14,10" IsHitTestVisible="False"
|
||||
Padding="12,8" IsHitTestVisible="False"
|
||||
TextWrapping="Wrap" Opacity="0.7"
|
||||
Visibility="Collapsed"/>
|
||||
<!-- 슬래시 명령어 칩 (명령 선택 후 표시) -->
|
||||
@@ -1330,7 +1330,7 @@
|
||||
|
||||
<!-- 파일 첨부 -->
|
||||
<Button x:Name="BtnAttach" Style="{StaticResource GhostBtn}" Grid.Column="1"
|
||||
Width="36" Height="36" Margin="0,0,2,0" VerticalAlignment="Bottom"
|
||||
Width="34" Height="34" Margin="0,0,2,0" VerticalAlignment="Bottom"
|
||||
Click="BtnAttach_Click" ToolTip="파일 첨부"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True"
|
||||
AllowDrop="True">
|
||||
@@ -1340,7 +1340,7 @@
|
||||
|
||||
<!-- 내보내기 -->
|
||||
<Button Style="{StaticResource GhostBtn}" Grid.Column="2"
|
||||
Width="36" Height="36" Margin="0,0,2,0" VerticalAlignment="Bottom"
|
||||
Width="34" Height="34" Margin="0,0,2,0" VerticalAlignment="Bottom"
|
||||
Click="BtnExport_Click" ToolTip="대화 내보내기"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="14"
|
||||
@@ -1363,13 +1363,13 @@
|
||||
|
||||
<!-- 중지/전송 -->
|
||||
<Button x:Name="BtnStop" Grid.Column="3"
|
||||
Width="40" Height="40" Margin="4,0,4,0"
|
||||
Width="38" Height="38" Margin="4,0,4,0"
|
||||
Cursor="Hand" Click="BtnStop_Click"
|
||||
VerticalAlignment="Bottom" Visibility="Collapsed"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<Button.Template>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border Background="#DC2626" CornerRadius="20">
|
||||
<Border Background="#DC2626" CornerRadius="19">
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets"
|
||||
FontSize="13" Foreground="White"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
@@ -1378,13 +1378,13 @@
|
||||
</Button.Template>
|
||||
</Button>
|
||||
<Button x:Name="BtnSend" Grid.Column="4"
|
||||
Width="40" Height="40" Margin="4,0,4,0"
|
||||
Width="38" Height="38" Margin="4,0,4,0"
|
||||
Cursor="Hand" Click="BtnSend_Click"
|
||||
VerticalAlignment="Bottom">
|
||||
<Button.Template>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border x:Name="Bd" Background="{DynamicResource AccentColor}"
|
||||
CornerRadius="20">
|
||||
CornerRadius="19">
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets"
|
||||
FontSize="13" Foreground="White"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
|
||||
Reference in New Issue
Block a user