<!-- FILE: _St/WS8771/ai_read_패치.md | ROLE: WS8771 현재 패치 -->

## v319 편집폴더 복사 후 열기 확인
- [코드반영] copy2 성공 후 `messagebox.askyesno("편집폴더", "폴더를 열까요?")` 추가.
- [코드반영] 확인 시 `ig_open_folder`, 취소 시 무동작. 응답의 target_folder는 유지해 Side 버튼과 공존한다.
- [코드반영] 전용 `test_ws8771_edit_folder_open_prompt_v319.py` 추가.
- [코드반영] 최종 정적/단위: pytest 132 passed, IG Node 53/53, RTC Node 3/3, Analyze UI 1/1, JS syntax 65, Python compile 39, JSON 6 OK.
- [검증대기] 실제 Windows 확인/취소 팝업과 탐색기 열기 확인.

## v317 수동 1건 편집폴더 의미 교정
- [코드반영] WS의 GUI main-thread `ig_copy_to_edit_folder` 구현은 유지한다. 호출자는 자동 다중 파일이 아니라 수동 MP4 저장 완료 1건만 전달한다.
- [검증대기] 실제 Windows 수동 MP4 저장 완료 직후 picker 표시 및 1개 copy2 확인.

## v316 편집폴더 GUI main-thread picker
- [코드반영] `ig_copy_to_edit_folder` thread-direct 제거, Tk control queue 처리.
- [코드반영] GUI main thread `filedialog.askdirectory()` + 660초 요청 대기.
- [코드반영] 신규 MP4 복사·동일명 SKIP 유지.
- [코드반영] 최종 회귀: pytest 130 passed, IG Node 51/51, RTC Node 3/3, Analyze UI 1/1, JS syntax 63, Python compile 38, JSON 6 OK.
- [검증대기] 실제 Windows picker 표시/복사 확인.


## v315 편집폴더 복사
- 상태: `[코드반영]` / 실제 Windows 폴더 선택·한글 경로·복사 `[검증대기]`.
- `ig_copy_to_edit_folder` 요청은 Windows FolderBrowserDialog를 띄우고 이번 실행의 신규 MP4만 선택 폴더로 `copy2` 복사한다.
- 같은 파일명이 이미 편집폴더에 있으면 사용자 편집본 보호를 위해 덮어쓰지 않고 skip한다.
- 폴더 선택은 direct worker 경로에서 처리해 일반 Tk control queue timeout과 분리한다.

## v310 WS Tray icon
- [코드반영] Shared 공용 EXT 기반 ICO 사용. 기존 최소창/Tray 복원 로직 유지.
- [검증대기] 실제 Windows notification area 프로젝트 아이콘 확인.

## v309 WS Tray
- [코드반영] v309 포함 전체 pytest 125 passed, Auto/WS/Shared/Cache 타깃 76 passed.
- [코드반영] full/compact UI에 `.` 버튼 추가.
- [코드반영] Tray hide/restore/poll 및 종료 cleanup 추가.
- [코드반영] 기존 `_ → 상태색 ㅁ` 최소화 회귀 보호.
- [코드반영] 화면 버전 `2.3.8.309 / v309`.
- [검증대기] 실제 Windows notification area 복원.

# WS8771 패치 — v277

상태: `[코드반영·실제 Windows 검증대기]`

- 표시 버전 `2.3.8.277 / v277`
- `ig_media_metadata_collect` thread action 추가
- 파일 없이 계정 JSON `shortcode::metadata::0` UPSERT
- caption·통계·퍼머링크·직접 media URL·저장 선택 상태 보존
- metadata-only HTML/index.htm 카드와 직접링크 생성
- 실제 파일 항목에도 5개 상태 필드 저장
- Python compile OK
- `test_ws8771_module.py`: 20 passed

실제 Windows의 Video/Image 4조합 파일·JSON·HTML·선택 SQLite·Analyze8780 일치를 확인해야 완료다.