권한 팝업 단순화: 상세 섹션 통합으로 핵심 모드 선택 흐름 정리
Some checks failed
Release Gate / gate (push) Has been cancelled

- ChatWindow 권한 팝업에서 요약/예외/최근거부 3개 접힘 섹션을 단일 '상세 정보' 섹션으로 통합\n- 기본 화면을 핵심 권한 모드 중심으로 유지해 claw-code 스타일의 단순한 선택 흐름에 맞춤\n- 요약 카드 본문을 줄바꿈 기반에서 말줄임 기반으로 조정해 팝업 높이와 시야 밀도 개선\n- 빌드 중 WPF wpftmp/.g.cs 누락은 dotnet clean 후 재빌드로 복구 확인\n- 문서 동기화: README.md, docs/DEVELOPMENT.md에 2026-04-04 16:45(KST) 이력 반영\n- 검증: dotnet build 경고0/오류0, dotnet test 필터 65 passed
This commit is contained in:
2026-04-04 16:43:57 +09:00
parent 3dcf5a62ba
commit 5c2042847a
3 changed files with 32 additions and 23 deletions

View File

@@ -296,6 +296,7 @@ public class MyHandler : IActionHandler
| 사내/사외 모드 회귀 보강 | operationMode 전환 직후 WebSearch 동작 반영과 URL 판별 경계(HTTP/파일/mailto) 테스트를 추가해 내부 차단 정책의 즉시성/정확성을 강화 | | 사내/사외 모드 회귀 보강 | operationMode 전환 직후 WebSearch 동작 반영과 URL 판별 경계(HTTP/파일/mailto) 테스트를 추가해 내부 차단 정책의 즉시성/정확성을 강화 |
| AX Agent 설정창 오픈 안정화 | `ToggleSwitch`를 전역 리소스로 승격해 AX Agent 창 초기화 시 리소스 누락 예외를 방지하고, AX Agent 설정창에는 테마 사전만 안전 주입하도록 오픈 경로를 보강 | | AX Agent 설정창 오픈 안정화 | `ToggleSwitch`를 전역 리소스로 승격해 AX Agent 창 초기화 시 리소스 누락 예외를 방지하고, AX Agent 설정창에는 테마 사전만 안전 주입하도록 오픈 경로를 보강 |
| 권한 순환/슬래시 스크롤 체감 보강 | `claw-code` 기준으로 권한 순환에서 고위험 `질문 없이 진행`을 기본 순환에서 분리하고, `/` 팝업 휠 스크롤 시 뷰포트 기준 선택 동기화를 추가해 스크롤 사용성을 개선 | | 권한 순환/슬래시 스크롤 체감 보강 | `claw-code` 기준으로 권한 순환에서 고위험 `질문 없이 진행`을 기본 순환에서 분리하고, `/` 팝업 휠 스크롤 시 뷰포트 기준 선택 동기화를 추가해 스크롤 사용성을 개선 |
| 권한 팝업 상세영역 단순화 | 권한 팝업의 `요약/예외/최근거부`를 개별 섹션에서 단일 `상세 정보` 섹션으로 통합해 기본 화면 밀도를 낮추고 핵심 모드 선택 흐름을 우선화 |
| Slash palette 상태 분리 시작 | `ChatWindow`에 몰려 있던 slash 상태를 `SlashPaletteState`로 분리해 이후 Codex/Claude형 composer 개편 기반 마련 | | Slash palette 상태 분리 시작 | `ChatWindow`에 몰려 있던 slash 상태를 `SlashPaletteState`로 분리해 이후 Codex/Claude형 composer 개편 기반 마련 |
| 런처 이미지 미리보기 추가 | `#` 클립보드 이미지 항목에서 `Shift+Enter`로 전용 미리보기 창을 열고, 줌·원본 해상도 확인·PNG/JPEG/BMP 저장·클립보드 복사를 지원 | | 런처 이미지 미리보기 추가 | `#` 클립보드 이미지 항목에서 `Shift+Enter`로 전용 미리보기 창을 열고, 줌·원본 해상도 확인·PNG/JPEG/BMP 저장·클립보드 복사를 지원 |
| 검증 | `dotnet build` 경고 0 / 오류 0, `dotnet test` 436 passed / 0 failed | | 검증 | `dotnet build` 경고 0 / 오류 0, `dotnet test` 436 passed / 0 failed |

View File

@@ -3742,3 +3742,20 @@ else:
### 4) 품질 게이트 ### 4) 품질 게이트
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false` 통과 (경고 0, 오류 0). - `dotnet build src/AxCopilot/AxCopilot.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false` 통과 (경고 0, 오류 0).
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false --filter "ChatWindowSlashPolicyTests|OperationModePolicyTests|OperationModeReadinessTests"` 통과 (65 passed, 0 failed). - `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false --filter "ChatWindowSlashPolicyTests|OperationModePolicyTests|OperationModeReadinessTests"` 통과 (65 passed, 0 failed).
## 2026-04-04 추가 진행 기록 (연속 실행 46차: 권한 팝업 상세영역 단순화)
업데이트: 2026-04-04 16:45 (KST)
### 1) 권한 팝업 구조 단순화
- 기존 `현재 권한 요약`, `도구별 예외`, `최근 권한 거부` 3개 개별 접힘 섹션을 단일 `상세 정보` 섹션으로 통합.
- 기본 화면은 `핵심 권한 모드`(+`고급 모드`) 중심으로 유지하고, 부가 정보는 1회 추가 확장으로 확인하도록 정리.
### 2) 요약 카드 텍스트 밀도 보정
- 요약 카드 본문을 줄바꿈 기반에서 말줄임 기반으로 조정해 팝업 기본 높이와 시야 밀도를 안정화.
- 효과: 모드 선택 리스트가 첫 화면에서 더 많이 보이고, 스캔 동선이 단순화됨.
### 3) 품질 게이트
- 초기 빌드에서 WPF 임시 산출물(`wpftmp/.g.cs`) 누락 이슈를 확인했고, `dotnet clean` 후 재빌드로 정상 복구.
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false` 통과 (경고 0, 오류 0).
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false --filter "ChatWindowSlashPolicyTests|OperationModePolicyTests|OperationModeReadinessTests"` 통과 (65 passed, 0 failed).

View File

@@ -1745,9 +1745,8 @@ public partial class ChatWindow : Window
FontSize = 9.5, FontSize = 9.5,
Margin = new Thickness(0, 3, 0, 0), Margin = new Thickness(0, 3, 0, 0),
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray, Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray,
TextWrapping = TextWrapping.Wrap, TextTrimming = TextTrimming.CharacterEllipsis,
LineHeight = 14, MaxWidth = 260,
MaxWidth = 250,
} }
} }
} }
@@ -2052,28 +2051,20 @@ public partial class ChatWindow : Window
accentHex: "#64748B")); accentHex: "#64748B"));
} }
PermissionItems.Children.Add(CreateCollapsibleSection( // claw-code 기준 UX 정렬: 기본 화면은 핵심 모드 중심, 부가 정보는 단일 상세 섹션으로 제공.
"permission_summary", var detailsPanel = new StackPanel();
"\uE946", detailsPanel.Children.Add(summaryCard);
"현재 권한 요약",
summaryCard,
expanded: GetPermissionPopupSectionExpanded("permission_summary", false)));
if (overrideSection != null) if (overrideSection != null)
PermissionItems.Children.Add(CreateCollapsibleSection( detailsPanel.Children.Add(overrideSection);
"permission_overrides",
"\uE72E",
"도구별 예외",
overrideSection,
expanded: GetPermissionPopupSectionExpanded("permission_overrides", false),
accentHex: "#1D4ED8"));
if (deniedCard != null) if (deniedCard != null)
PermissionItems.Children.Add(CreateCollapsibleSection( detailsPanel.Children.Add(deniedCard);
"permission_denied",
"\uEA39", PermissionItems.Children.Add(CreateCollapsibleSection(
"최근 권한 거부", "permission_details",
deniedCard, "\uE946",
expanded: GetPermissionPopupSectionExpanded("permission_denied", false), "상세 정보",
accentHex: "#991B1B")); detailsPanel,
expanded: GetPermissionPopupSectionExpanded("permission_details", false)));
PermissionPopup.IsOpen = true; PermissionPopup.IsOpen = true;
Dispatcher.BeginInvoke(() => Dispatcher.BeginInvoke(() =>