빈 상태 프리셋 화면 상하 중앙 정렬 보정

- ChatWindow의 EmptyState 레이아웃을 제목/설명/프리셋 목록이 하나의 세로 묶음으로 동작하도록 재구성함
- 화면 높이가 커질 때 프리셋 카드만 중앙에 오고 설명 블록은 위에 남던 문제를 해결함
- 채팅/코워크 빈 상태 화면이 전체적으로 상하 중앙에 자연스럽게 정렬되도록 보정함
- README와 DEVELOPMENT 문서에 변경 목적과 검증 결과를 로컬 시각 기준으로 기록함
- 검증: 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:
2026-04-06 15:37:20 +09:00
parent b3b301b9b6
commit 71fd5f0bb7
3 changed files with 35 additions and 36 deletions

View File

@@ -1255,3 +1255,6 @@ MIT License
- 업데이트: 2026-04-06 15:35 (KST)
- AX Agent 내부 설정 공통 탭의 섹션 순서를 다시 정리했다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 `서비스와 모델` 바로 아래에 `등록 모델 관리`를 연달아 배치해 흐름을 자연스럽게 맞췄다.
- `운영 모드``대화 관리 / 대화 보관 기간 / 저장 공간` 아래쪽으로 이동시키고, 섹션 경계도 다시 `BorderThickness="0,0,0,1"` 기반으로 정리해 구분선이 끊기지 않도록 맞췄다.
- 업데이트: 2026-04-06 15:41 (KST)
- 채팅/코워크 빈 상태 화면의 세로 정렬 기준을 조정했다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 상단 아이콘, 제목, 설명, 프리셋 목록을 하나의 세로 묶음으로 다시 구성해 화면 높이가 늘어나도 함께 상하 중앙 정렬되도록 수정했다.
- 이전처럼 프리셋 카드만 중앙에 오고 상단 설명 블록은 위쪽에 남아 보이던 레이아웃 불균형을 줄여, 빈 상태 화면 전체가 더 자연스럽게 가운데 정렬되도록 맞췄다.

View File

@@ -4964,3 +4964,4 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
- Document update: 2026-04-06 15:26 (KST) - During move-size loops the root visual is temporarily cached with `BitmapCache`, and the expensive `UpdateTopicPresetScrollMode()`, `UpdateResponsiveChatLayout()`, and `RenderMessages()` refresh path is deferred until the move/resize operation ends. This reduces the “heavy” feeling when moving the AX Agent window on desktop PCs.
- Document update: 2026-04-06 15:35 (KST) - Reordered the AX Agent internal-settings common tab in `ChatWindow.xaml` so `서비스와 모델` and `등록 모델 관리` now appear consecutively. This matches the actual model-management flow more closely.
- Document update: 2026-04-06 15:35 (KST) - Moved the `운영 모드` chooser below the conversation management/storage area and restored section separators around the moved blocks so the common-tab layout reads in clearer grouped sections.
- Document update: 2026-04-06 15:41 (KST) - Reworked the empty-state layout in `ChatWindow.xaml` so the icon/title/description block and the preset grid live inside one vertically centered stack. This fixes the previous behavior where only the preset cards looked centered while the descriptive header stayed visually high on tall windows.

View File

@@ -1277,45 +1277,40 @@
VerticalAlignment="Stretch"
MaxWidth="960"
Margin="24,16,24,16">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="18"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0,8,0,8">
<StackPanel HorizontalAlignment="Center"
Margin="0,0,0,18">
<Border x:Name="EmptyIcon" CornerRadius="13" Width="46" Height="46"
HorizontalAlignment="Center" Margin="0,0,0,12"
Background="{DynamicResource HintBackground}">
<TextBlock Text="&#xE8BD;" FontFamily="Segoe MDL2 Assets" FontSize="22"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<StackPanel Grid.Row="0"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Margin="0,14,0,4">
<Border x:Name="EmptyIcon" CornerRadius="13" Width="46" Height="46"
HorizontalAlignment="Center" Margin="0,0,0,12"
Background="{DynamicResource HintBackground}">
<TextBlock Text="&#xE8BD;" FontFamily="Segoe MDL2 Assets" FontSize="22"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<TextBlock x:Name="EmptyStateTitle" Text="작업을 시작하세요" FontSize="23" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}" HorizontalAlignment="Center"/>
<TextBlock x:Name="EmptyStateDesc" Text="프롬프트를 입력하거나 아래 작업 유형을 선택하면 됩니다"
FontSize="14.5" Foreground="{DynamicResource SecondaryText}"
HorizontalAlignment="Center"
TextAlignment="Center"
Width="430"
Margin="0,7,0,0"/>
</StackPanel>
<TextBlock x:Name="EmptyStateTitle" Text="작업을 시작하세요" FontSize="23" FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}" HorizontalAlignment="Center"/>
<TextBlock x:Name="EmptyStateDesc" Text="프롬프트를 입력하거나 아래 작업 유형을 선택하면 됩니다"
FontSize="14.5" Foreground="{DynamicResource SecondaryText}"
HorizontalAlignment="Center"
TextAlignment="Center"
Width="430"
Margin="0,7,0,0"/>
<ScrollViewer x:Name="TopicPresetScrollViewer"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
MaxHeight="420"
Margin="0"
Padding="0,4,0,8">
<!-- 대화 주제 버튼 (프리셋에서 동적 생성) -->
<WrapPanel x:Name="TopicButtonPanel" HorizontalAlignment="Center"
Margin="0,0,0,8"/>
</ScrollViewer>
</StackPanel>
<ScrollViewer x:Name="TopicPresetScrollViewer"
Grid.Row="2"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
MaxHeight="420"
Margin="0"
Padding="0,4,0,8">
<!-- 대화 주제 버튼 (프리셋에서 동적 생성) -->
<WrapPanel x:Name="TopicButtonPanel" HorizontalAlignment="Center"
Margin="0,0,0,8"/>
</ScrollViewer>
</Grid>
<!-- ── 프롬프트 템플릿 팝업 ── -->