# v0.1.264 — QA-067 SignalSim 스크롤 보존 + QA-068 Gizmo 다중 이동

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

---

## 협업자 PM 회신 2건
QA-067 [P1] — 리스트 갱신 시 스크롤 최상단 초기화 (Signal Simulator / 부품 리스트)
QA-068 [P1] — 다중 선택 오브젝트 Gizmo 이동 시 마지막 1개만 이동

## QA-068 root cause 확정
UpdateGizmoTargets() L4148:`csharpvar ts = new List(1);if (_selectedPart != null && _selectedPart.cachedTransform != null)
    ts.Add(_selectedPart.cachedTransform);   // gz.SetTargets(ts);
`RuntimeGizmo는 이미 _targets 전체에 동일 delta 적용 (L816 foreach). **호출 측 누락이 root cause.**
## QA-068 fix
`csharpvar ts = new List();if (_selectedParts != null && _selectedParts.Count > 0)
{
    foreach (var p in _selectedParts)
        if (p?.cachedTransform != null) ts.Add(p.cachedTransform);
}
else if (_selectedPart?.cachedTransform != null)
{
    ts.Add(_selectedPart.cachedTransform);
}
gz.SetTargets(ts);
`- 다중 선택 시: 모든 부품 transform 전달 -> RuntimeGizmo가 모두 동일 delta 이동- 단일 선택 시: 기존 동작 그대로- gizmo center는 RuntimeGizmo.SetTargets 안에서 평균 계산 (_targets[0] 또는 mean)
## QA-067 root cause
SignalSimulatorPanel.Render() 100ms 폴링 시 _root.Clear() -> ScrollView 재생성 -> scrollOffset=0.
## QA-067 fix
`csharppublic void Render() {
    Vector2 savedScroll = Vector2.zero;
    var oldScroll = _root.Q();    if (oldScroll != null) savedScroll = oldScroll.scrollOffset;
    _root.Clear();
    ...
    var scroll = new ScrollView();
    _root.Add(scroll);
    if (savedScroll != Vector2.zero) {
        scroll.RegisterCallback(evt => {            scroll.scrollOffset = savedScroll;
        });
    }
}
`- Render() 전 기존 ScrollView grep + scrollOffset 저장- 신규 ScrollView 생성 후 GeometryChangedEvent에서 1회 복원 (layout 완료 시점)- savedScroll=Vector2.zero (초기 상태)이면 복원 skip — 첫 Render는 정상 최상단
## 부품 리스트 스크롤 영향
부품 리스트 ListView는 itemsSource 변경 시 자체 스크롤 보존 (Unity ListView 기본). SignalSimulator만 ScrollView 직접 재생성 패턴이므로 본 사이클 fix 대상.

## 변경 파일
- Assets/Scripts/Game/Factory00Bootstrap.cs (~10라인) — UpdateGizmoTargets 다중 처리- Assets/Scripts/Communication/Modbus/SignalSimulatorPanel.cs (~12라인) — scrollOffset 저장/복원- ProjectSettings/ProjectSettings.asset — bundleVersion 0.1.263 -> 0.1.264
## 검증 시나리오

### QA-068
1. Ctrl+A 또는 drag-select로 다중 부품 선택
2. Gizmo translate handle drag -> **모든 부품 동시 이동** (이전: 1개만)
3. Ctrl+Z -> 모든 부품 원위치 복원 (TransformCommand 호환)
4. 단일 선택 시 회귀 없음

### QA-067
1. SignalSim 열기 -> 컴포넌트 다수 표시 -> 스크롤 중간으로
2. 100ms 폴링으로 Render() 호출 시 스크롤 위치 **유지** (이전: 최상단 초기화)
3. 부품 추가/삭제 후 Render -> 스크롤 보존
4. 첫 Render는 최상단 (정상)

## 다음 사이클
- v0.1.265 — QA-014 (PM 회신 받으면)- v0.1.266 — QA-042 (카메라 속도 설정) / QA-043 (투명 실제 적용) / QA-064 (복제 원본 click 오동작)- v0.1.267 — QA-069 Collision 단일 선택 + 결과 별도 창협업자 git origin/main = local.


---

## 봉인 참조

본 사이클은 **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)
