# v0.1.278 — Panel Resize P2-B 압정 모드 [고정]/[위치] + 오토하이드 1000ms

- 버전: v0.1.278
- 분류: 48th stable seal (v0.1.366) 일괄 봉인 사이클
- 다운로드: [factory00-windows-x64-v0.1.278.zip](../../downloads/archive/factory00-windows-x64-v0.1.278.zip) (archive 보존)
- 캡처: [qa-screenshots/v0.1.278/](../../qa-screenshots/v0.1.278/)

---

## studio-panel-resize-pin P2 완결 (v0.1.277 + v0.1.278)
협업자 spec의 P2 범위 두 번째 절반입니다. 압정(Pin) 모드 토글과 1000ms 오토하이드 동작을 구현했습니다.

## 변경 동작

### 1. 압정 버튼 (parts-section 헤더, 접기 버튼 옆)
- **[고정] 고정 모드** (기본값, Q-3 확정): 마우스가 좌측 패널을 떠나도 패널이 유지됩니다.- **[위치] 오토하이드 모드**: 마우스가 좌측 패널을 떠나고 1000ms (Q-2 확정) 후 자동으로 접힘 -> 슬라이드 아웃 효과.압정 클릭 시 두 모드를 토글하며 PlayerPrefs factory00.sidebar_pinned에 영구 저장됩니다. 앱 재실행 시 직전 모드 그대로 복원됩니다.
### 2. 미니 리본 ▶ hover -> 즉시 슬라이드 인
오토하이드 모드([위치])에서 패널이 접힘 상태일 때, 사용자가 씬 좌측 미니 리본 ▶에 마우스를 hover하면 즉시 _leftPanelVM.ToggleCollapse() 호출로 패널이 다시 펼쳐집니다. 클릭하지 않아도 마우스 진입만으로 자동 슬라이드 인 효과.
### 3. SidebarPinChangedEvent 발행
`csharppublic readonly struct SidebarPinChangedEvent
{
    public readonly bool   IsPinned;
    public readonly double Timestamp;
}
`압정 토글 시 Bus.Publish(new SidebarPinChangedEvent(...)) 호출. 향후 다른 UI 영역에서 압정 상태 변경을 구독할 수 있습니다.
### 4. IVisualElementScheduledItem 타이머 패턴
UI Toolkit의 element.schedule.Execute(...).StartingIn(1000) 패턴으로 1000ms 지연 타이머를 구현했습니다. MouseEnterEvent 발생 시 hideTimer?.Pause()로 즉시 취소 — 마우스가 재진입하면 hide가 일어나지 않습니다.---

## 변경 파일
- Assets/UI/MainHUD.uxml — sidebar-pin-btn 추가 (접기 버튼 좌측, 압정 토글)- Assets/Scripts/Events/SidebarEvents.cs (신규) — SidebarPinChangedEvent readonly struct- Assets/Scripts/Events/EventBus.cs — OnSidebarPinChanged event + Publish overload- Assets/Scripts/Game/Factory00Bootstrap.cs — 압정 wiring + MouseLeave/Enter 타이머 + 미니 리본 hover slide-in (~50라인)- ProjectSettings/ProjectSettings.asset — bundleVersion 0.1.277 -> 0.1.278---

## 검증 절차
1. **기본 고정 모드**: 앱 시작 시 압정 [고정] 표시. 마우스가 좌측 패널 떠나도 유지.
2. **압정 클릭** -> [위치] 변경 + 토스트 "오토하이드 ([위치] 마우스 이탈 1초)"
3. **오토하이드 모드 + 마우스 이탈**: 1초 대기 후 좌측 패널 자동 접힘 + 씬 좌측 ▶ 미니 리본 표시
4. **▶ 미니 리본 hover** -> 즉시 패널 펼침 (클릭 없이)
5. **압정 다시 클릭** -> [고정] 복귀 + 토스트 "고정 ([고정])"
6. **앱 재실행** -> 직전 모드 그대로 복원 (PlayerPrefs 영구)
---

## studio-panel-resize-pin spec 완료 — P1 + P2
| 사이클 | 범위 | 완료 |
|---|---|---|
| v0.1.276 | P1 hover accent + PanelResizedEvent | [완료] |
| v0.1.277 | P2-A 접기 버튼 우측 상단 + 미니 리본 ▶ | [완료] |
| v0.1.278 | P2-B 압정 + 오토하이드 + SidebarPinChangedEvent | [완료] |
spec의 P3 (패널 도킹)는 Unity UI Toolkit 도킹 PoC 통과 후 별도 진입 (기술 게이트 미통과 상태).
---

## 다음 사이클 예정
- **v0.1.279~** — tower-lamp P1 (협업자 QA-073 직접 착수 요청, ~400라인 큰 사이클) 또는 다음 P1 spec- **43rd stable seal** — v0.1.273~282 8~10 사이클 누적 후 봉인 예정


---

## 봉인 참조

본 사이클은 **48th stable seal (v0.1.366, 2026-05-24)** 일괄 봉인에 포함됨.

- journal: [2026-05-24-v0.1.298-366-48th-stable-seal.md](../../journal/2026-05-24-v0.1.298-366-48th-stable-seal.md)
- alias zip: [factory00-windows-x64-v0.1.366-stable.zip](../../downloads/factory00-windows-x64-v0.1.366-stable.zip) (170 MB)
