PkgHandler.cs (신규, prefix=pkg):
- winget search subprocess 결과 Regex 파싱 (PkgResult 레코드)
- pkg install {id} → cmd 터미널으로 실행 (사용자 확인 가능)
- pkg list / pkg upgrade 서브명령
- winget 미설치 감지 → 안내 메시지 (캐시 체크)
- PowerToys Command Palette winget 기능 대응
ApHandler.cs (신규, prefix=ap):
- 클립보드 텍스트 즉시 변환 15종 내장
- upper/lower/trim/sort/rsort/unique/number/reverse
- blank/single/count/json/slug/base64/decode64
- replace {A} {B} 텍스트 치환 명령
- PowerToys Advanced Paste 대응
SnippetHandler.cs (수정, L28-2):
- ExpandVariables 5개 플레이스홀더 추가:
· {clipboard} → 현재 클립보드 텍스트
· {user} → Windows 사용자명
· {computer} → PC명
· {weekday} → 한국어 요일 (월요일~일요일)
· {app} → 이전 포커스 앱 프로세스명
- GetWindowThreadProcessId P/Invoke 추가
- Raycast 스니펫 동적 플레이스홀더 대응
LauncherViewModel.cs (수정, L28-3):
- UpdatePreviewAsync 미리보기 확장:
· 이미지 10종 (.jpg/.png/.gif 등): BitmapDecoder 해상도 + 파일 크기
· PDF: PdfPig 페이지 수 + 첫 페이지 텍스트 200자 추출
· 오디오/동영상 12종: 파일 크기 + 수정일 메타
- IsImageFile(), IsMediaFile(), GetImageMeta(), GetPdfMeta(),
GetFileSizeMeta(), FormatFileSize() 헬퍼 메서드 추가
App.xaml.cs: L28 핸들러 2개 등록 (PkgHandler, ApHandler)
LAUNCHER_ROADMAP.md: Phase L28 ✅ 완료 + 벤치마킹 공백 3개 해소
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>