From 26c20cf3dcdf65e48fe6b9d320aeaa9168edab5f Mon Sep 17 00:00:00 2001 From: lacvet Date: Fri, 3 Apr 2026 22:05:30 +0900 Subject: [PATCH] =?UTF-8?q?[Phase=2017-UI-B]=20=ED=97=A4=EB=8D=94=20?= =?UTF-8?q?=EB=B0=94=20=EB=AA=A8=EB=8D=B8=C2=B7=EA=B6=8C=ED=95=9C=20?= =?UTF-8?q?=EC=B9=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ChatWindow.xaml: - 서브 헤더 바(Row 1) 우측에 ModelHeaderChip 버튼 추가 (Segoe MDL2 브레인 아이콘 + ModelHeaderLabel TextBlock) - 서브 헤더 바 우측에 PermissionHeaderChip 버튼 추가 (잠금 아이콘 #4FC3F7 + PermissionHeaderLabel TextBlock) ChatWindow.ModelSelector.cs: - UpdateModelLabel(): ModelHeaderLabel 동기 갱신 코드 추가 ChatWindow.PermissionMenu.cs: - UpdatePermissionUI(): PermissionHeaderLabel 동기 갱신 코드 추가 - PermissionHeaderChip_Click() 신규: PlacementTarget을 헤더 칩으로 교체 후 기존 BtnPermission_Click 호출 ChatWindow.xaml.cs: - Loaded 핸들러에 UpdatePermissionUI() 초기 호출 추가 docs/NEXT_ROADMAP.md: - Phase 17-UI-B 완료 항목 추가 빌드: 경고 0, 오류 0 Co-Authored-By: Claude Sonnet 4.6 --- docs/NEXT_ROADMAP.md | 28 ++++++++++++++++- .../Views/ChatWindow.ModelSelector.cs | 6 +++- .../Views/ChatWindow.PermissionMenu.cs | 12 ++++++++ src/AxCopilot/Views/ChatWindow.xaml | 30 +++++++++++++++++-- src/AxCopilot/Views/ChatWindow.xaml.cs | 1 + 5 files changed, 73 insertions(+), 4 deletions(-) diff --git a/docs/NEXT_ROADMAP.md b/docs/NEXT_ROADMAP.md index 69ab664..e322392 100644 --- a/docs/NEXT_ROADMAP.md +++ b/docs/NEXT_ROADMAP.md @@ -4866,5 +4866,31 @@ ThemeResourceHelper에 5개 정적 필드 추가: --- -최종 업데이트: 2026-04-03 (Phase 22~52 + Phase 17-UI-A 구현 완료) +## Phase 17-UI-B — 헤더 바 모델·권한 칩 추가 (v1.8.0) ✅ 완료 + +> **목표**: 서브 헤더 바(Row 1)에 현재 모델과 권한 모드를 항상 노출. +> 클릭 시 각각 모델 선택기·권한 팝업을 인라인으로 열어 UX 일관성 강화. + +### 변경 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `ChatWindow.xaml` | 서브 바 우측에 `ModelHeaderChip` Button 추가: 브레인 아이콘 + `ModelHeaderLabel` TextBlock | +| `ChatWindow.xaml` | 서브 바 우측에 `PermissionHeaderChip` Button 추가: 잠금 아이콘(#4FC3F7) + `PermissionHeaderLabel` TextBlock | +| `ChatWindow.ModelSelector.cs` | `UpdateModelLabel()`: `ModelHeaderLabel` 동기 갱신 코드 추가 | +| `ChatWindow.PermissionMenu.cs` | `UpdatePermissionUI()`: `PermissionHeaderLabel` 동기 갱신 코드 추가 | +| `ChatWindow.PermissionMenu.cs` | `PermissionHeaderChip_Click()` 신규: 팝업 PlacementTarget을 헤더 칩으로 교체 후 기존 권한 팝업 호출 | +| `ChatWindow.xaml.cs` | `Loaded` 핸들러: `UpdatePermissionUI()` 초기 호출 추가 | + +### 개선 효과 + +- 서브 헤더 바에서 현재 모델(예: "Claude · Sonnet 4.6")과 권한 모드(예: "Ask") 상시 확인 가능 +- `ModelHeaderChip` 클릭 → 기존 모델 선택 팝업 즉시 열림 +- `PermissionHeaderChip` 클릭 → 권한 팝업이 헤더 칩 기준 하단으로 올바르게 열림 +- 탭 전환·설정 변경 시 양쪽 칩(폴더 바 + 헤더 바) 동시 갱신 +- **빌드**: 경고 0, 오류 0 + +--- + +최종 업데이트: 2026-04-03 (Phase 22~52 + Phase 17-UI-A~B 구현 완료) diff --git a/src/AxCopilot/Views/ChatWindow.ModelSelector.cs b/src/AxCopilot/Views/ChatWindow.ModelSelector.cs index 8007d9d..7f39065 100644 --- a/src/AxCopilot/Views/ChatWindow.ModelSelector.cs +++ b/src/AxCopilot/Views/ChatWindow.ModelSelector.cs @@ -139,7 +139,11 @@ public partial class ChatWindow "vllm" => "vLLM", _ => "Ollama", }; - ModelLabel.Text = $"{serviceLabel} · {GetCurrentModelDisplayName()}"; + var modelName = GetCurrentModelDisplayName(); + ModelLabel.Text = $"{serviceLabel} · {modelName}"; + // Phase 17-UI-B: 헤더 바 모델 칩도 갱신 + if (ModelHeaderLabel != null) + ModelHeaderLabel.Text = $"{serviceLabel} · {modelName}"; } private void BtnModelSelector_Click(object sender, RoutedEventArgs e) diff --git a/src/AxCopilot/Views/ChatWindow.PermissionMenu.cs b/src/AxCopilot/Views/ChatWindow.PermissionMenu.cs index c487eee..1592716 100644 --- a/src/AxCopilot/Views/ChatWindow.PermissionMenu.cs +++ b/src/AxCopilot/Views/ChatWindow.PermissionMenu.cs @@ -101,11 +101,23 @@ public partial class ChatWindow AutoPermissionWarning.Visibility = Visibility.Collapsed; } + /// Phase 17-UI-B: 헤더 바 권한 칩 클릭 — 권한 팝업을 칩 위치에 표시. + private void PermissionHeaderChip_Click(object sender, RoutedEventArgs e) + { + if (PermissionPopup == null) return; + // 팝업 기준점을 헤더 칩으로 변경 + PermissionPopup.PlacementTarget = PermissionHeaderChip; + PermissionPopup.Placement = System.Windows.Controls.Primitives.PlacementMode.Bottom; + BtnPermission_Click(sender, e); + } + private void UpdatePermissionUI() { if (PermissionLabel == null || PermissionIcon == null) return; var perm = Llm.FilePermission; PermissionLabel.Text = perm; + // Phase 17-UI-B: 헤더 칩 텍스트도 갱신 + if (PermissionHeaderLabel != null) PermissionHeaderLabel.Text = perm; PermissionIcon.Text = perm switch { "Auto" => "\uE73E", diff --git a/src/AxCopilot/Views/ChatWindow.xaml b/src/AxCopilot/Views/ChatWindow.xaml index ad5729e..19f9e8e 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml +++ b/src/AxCopilot/Views/ChatWindow.xaml @@ -340,12 +340,25 @@ KeyDown="ChatTitleEdit_KeyDown"/> - + + + @@ -360,6 +373,19 @@ VerticalAlignment="Center" Margin="4,0,0,0"/> + +