# v0.1.422 — 포커스 기조 취약점 3건 보강 (마우스 항상 활성 + ESC blur)

- 버전: v0.1.422
- 날짜: 2026-05-26
- 다운로드: [factory00-windows-x64-v0.1.422.zip](../../downloads/factory00-windows-x64-v0.1.422.zip) (169 MB)
- 캡처: [qa-screenshots/v0.1.422/](../../qa-screenshots/v0.1.422/)

---

## 핵심 변경
### 취약점 검토 결과 (사용자 명시 2026-05-26)
v0.1.420 IsAnyUIFocused 도입 + v0.1.421 3D click blur 후 잠재 취약점 3건 식별:
1. **UpdateOrbit early return = 마우스 차단** (24-redesign-16 자체 측 textFocused 일괄 차단 패턴)
2. **UpdateFirstPerson early return = 마우스 시선 차단**
3. **ESC 키 → UI focus 해제 path 부재** (전통 Windows 표준 미준수)
### fix
- `CameraViewController.UpdateOrbit` early return 제거 — 마우스 RMB 회전 / wheel 줌 / MMB pan 항상 활성. 키보드 fly wasd/qe 영역은 L452 textFocused 가드 유지
- `CameraViewController.UpdateFirstPerson` early return 제거 — 마우스 시선 회전 항상 활성. 키보드 wasd/qe/Space/C 영역만 L543 textFocused 가드
- `Bootstrap.Update` ESC handler 안 cascade 4단계 추가 — UI focus 있음 시 `focusedElement.Blur()` 호출 (ContextMenu/dragSelect/subWindow 닫힘 후 / 선택 해제 직전)
- 룰 `focus-key-isolation.md` 보강 — "마우스는 차단 대상 X" + "ESC = UI focus 명시 해제" 두 절 신규
## 사용자 의도 vs 자체 측 옛 패턴
| 입력 | 사용자 의도 | 자체 측 옛 패턴 | v0.1.422 fix |
|---|---|---|---|
| 키보드 단일 키 (wasd 등) | TextField focus 시 차단 | textFocused 가드 (이미 OK) | 유지 |
| Function 키 / Ctrl+키 / Alt+키 | 항상 활성 (전역) | 가드 X (이미 OK) | 유지 |
| 마우스 RMB 회전 | 항상 활성 | textFocused early return 차단 | **early return 제거** |
| 마우스 wheel 줌 | 항상 활성 | textFocused early return 차단 | **early return 제거** |
| 1인칭 마우스 시선 | 항상 활성 | textFocused early return 차단 | **early return 제거** |
| ESC | UI focus 해제 후 cancel cascade | focus blur path 부재 | **cascade 4단계 신규** |
## 영향 파일
- Assets/Scripts/Game/CameraViewController.cs L382, L529 — early return 제거
- Assets/Scripts/Game/Factory00Bootstrap.cs L4243~ — ESC handler cascade 4단계 추가
- .claude/rules/focus-key-isolation.md — "마우스 차단 X" + "ESC blur" 두 절 신규
## 검증 시나리오 (사용자 PC)
1. Inspector 좌표 TextField click → focus → 마우스 휠 = **카메라 줌 PASS** 의무 (옛 차단)
2. Inspector 좌표 TextField click → focus → RMB 회전 = **카메라 회전 PASS** 의무
3. 1인칭 모드 + Inspector focus → 마우스 시선 = **회전 PASS** 의무
4. TextField focus 후 ESC = focus 해제 → 다시 ESC = 선택 해제
## 다음 자율 큐
USS *:focus outline + 단일 키 핸들러 (G/U/M/F/H 등) 추가 IsAnyUIFocused 가드.
