[Phase L28] Windows 생태계 통합 + 콘텐츠 UX 강화 4종 구현
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>
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
## 현재 상태 (v2.2.0)
|
||||
|
||||
### 핵심 기능 (119개 핸들러, L27 완료 / L28~L29 계획 중)
|
||||
### 핵심 기능 (121개 핸들러, L28 완료 / L29 계획 중)
|
||||
- 퍼지 검색 + 한글 초성 검색 (FuzzyEngine) + **최근 실행 지수 감소 랭킹 (30일 decay)**
|
||||
- 110개+ 프리픽스 명령 (계산기·이모지·웹검색·스니펫·클립보드·프로세스·데이터·네트워크·업무양식 등)
|
||||
- 10가지 테마 + 커스텀 테마
|
||||
@@ -43,19 +43,19 @@
|
||||
| **스니펫 확장** | ✅ | ✅ 동적 플레이스홀더 | ✅ | △ 플러그인 | ❌ | ❌ |
|
||||
| **창 관리** | ✅ 22 레이아웃 | ✅ 70+ (Win 베타 탑재) | ❌ | ❌ | △ FancyZones 연동 | ❌ |
|
||||
| **파일 탐색기 인라인** | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ **독점** |
|
||||
| **파일 미리보기** | △ 텍스트 6줄 | ❌ | ✅ Grid View | ❌ | ❌ | △ 사이드바 |
|
||||
| **파일 미리보기** | ✅ (L28 강화) | ❌ | ✅ Grid View | ❌ | ❌ | △ 사이드바 |
|
||||
| **브라우저 북마크 검색** | ❌ **공백** | ✅ 확장 연동 | ✅ | △ 플러그인 | ✅ 내장 | ❌ |
|
||||
| **브라우저 탭 AI 전달** | ❌ **공백** | ✅ {browser-tab} | ❌ | ❌ | ❌ | ❌ |
|
||||
| **시스템 볼륨 제어** | ✅ (L27) | ✅ | ✅ | ❌ | ❌ | ❌ |
|
||||
| **화면 밝기 제어** | ✅ (L27) | ✅ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **QR 코드 생성** | ✅ (L27) | ✅ | ✅ | △ 플러그인 | ❌ | ❌ |
|
||||
| **회의 링크 빠른 열기** | ✅ (L27) | ✅ Calendar 연동 | ✅ | ❌ | ❌ | ❌ |
|
||||
| **winget 앱 설치** | ❌ **공백** | ✅ Win 베타 | ❌ | △ 플러그인 | ❌ | ✅ 내장 |
|
||||
| **winget 앱 설치** | ✅ (L28) | ✅ Win 베타 | ❌ | △ 플러그인 | ❌ | ✅ 내장 |
|
||||
| **노코드 워크플로우** | ❌ **공백** | △ AI Ext 베타 | ✅ 완전 지원 | ❌ | ❌ | ❌ |
|
||||
| **스크립트 명령 실행** | ✅ ^ 프리픽스 | ✅ Script Commands | ✅ | ✅ | ✅ | ❌ |
|
||||
| **Everything 연동** | ✅ es 프리픽스 | ❌ | ❌ | ✅ | ❌ | ❌ |
|
||||
| **선택 텍스트 AI** | ✅ 팝업 | ✅ AI Commands | ❌ | ❌ | ❌ | ❌ |
|
||||
| **AI 붙여넣기 변환** | ❌ **공백** | ❌ | ❌ | ❌ | ✅ Advanced Paste | ❌ |
|
||||
| **AI 붙여넣기 변환** | ✅ (L28) | ❌ | ❌ | ❌ | ✅ Advanced Paste | ❌ |
|
||||
| **OCR** | ✅ | ❌ | ❌ | △ 플러그인 | ✅ Text Extractor | ❌ |
|
||||
| **독 바 (영구 표시)** | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **플러그인 생태계** | DLL+JSON | 1,300+ | 수백+ | 200+ | 내장 중심 | ❌ |
|
||||
@@ -602,20 +602,20 @@ public record HotkeyAssignment(string HotkeyStr, string TargetPath, string Label
|
||||
|
||||
---
|
||||
|
||||
## Phase L28 — Windows 생태계 통합 + 콘텐츠 UX 강화 (v2.3.0) 📋 계획
|
||||
## Phase L28 — Windows 생태계 통합 + 콘텐츠 UX 강화 (v2.3.0) ✅ 완료
|
||||
|
||||
> **방향**: PowerToys·Raycast Windows 버전이 선점 중인 **Windows 네이티브 통합** + 스니펫·미리보기 UX 수준 향상.
|
||||
> 외부 설치(winget)가 필요한 기능은 미설치 감지 → 안내 메시지 패턴 적용.
|
||||
|
||||
| # | 기능 | 프리픽스 | 구현 방식 | 경쟁 대비 |
|
||||
|---|------|---------|---------|---------|
|
||||
| 📋 L28-1 | **winget 앱 검색·설치** | `pkg` | `winget search {q}` subprocess → 결과 파싱. `pkg install {id}` → 권한 확인 후 실행. `pkg list` → 설치된 앱. winget 미설치 감지 후 안내. PowerToys CP 내장 기능 대응 | PowerToys CP |
|
||||
| 📋 L28-2 | **스니펫 동적 플레이스홀더** | `snip` 확장 | 기존 SnippetHandler에 치환 엔진 추가. `{date}` → 오늘 날짜, `{time}` → 현재 시각, `{clipboard}` → 현재 클립보드, `{user}` → Windows 사용자명, `{app}` → 포커스 앱명. Raycast 스니펫 플레이스홀더 대응 | Raycast |
|
||||
| 📋 L28-3 | **파일 미리보기 강화** | 파일 검색 결과 확장 | 기존 텍스트 6줄에서: 이미지(jpg·png·gif·svg) → WPF BitmapImage 썸네일 (120px). PDF → `Windows.Data.Pdf` 첫 페이지 렌더링. 음악(mp3) → 파일 메타(태그·길이·비트레이트). Alfred Grid View 방향 | Alfred 5 |
|
||||
| 📋 L28-4 | **AI 붙여넣기 변환** | `ap` | 클립보드 텍스트를 AX Agent에 즉시 전달해 변환. `ap 요약`, `ap 번역`, `ap 교정`, `ap 표로 변환` 등. AI 비활성 시 차단. PowerToys Advanced Paste 대응 (사내 LLM 버전) | PowerToys |
|
||||
| # | 기능 | 프리픽스 | 구현 방식 |
|
||||
|---|------|---------|---------|
|
||||
| ✅ L28-1 | **winget 앱 검색·설치** | `pkg` | `PkgHandler.cs` — `winget search` subprocess 결과 Regex 파싱. `pkg install {id}` → cmd 터미널로 실행. `pkg list` / `pkg upgrade`. winget 미설치 감지 후 안내. PowerToys CP 대응 |
|
||||
| ✅ L28-2 | **스니펫 동적 플레이스홀더** | `;` 확장 | `SnippetHandler.cs` 수정 — 기존 {date}/{time} 외 `{clipboard}` (현재 클립보드), `{user}` (사용자명), `{computer}` (PC명), `{weekday}` (한국어 요일), `{app}` (이전 포커스 앱 프로세스명) 5개 추가. Raycast 스니펫 대응 |
|
||||
| ✅ L28-3 | **파일 미리보기 강화** | 파일 검색 확장 | `LauncherViewModel.cs` 수정 — 이미지(10종): BitmapDecoder 해상도 + 파일 크기. PDF: PdfPig 페이지 수 + 첫 페이지 텍스트 200자. 오디오/동영상: 파일 크기 + 수정일. Alfred Grid View 경량 대응 |
|
||||
| ✅ L28-4 | **클립보드 텍스트 즉시 변환** | `ap` | `ApHandler.cs` — 15종 변환: upper/lower/trim/sort/rsort/unique/number/reverse/blank/single/count/json/slug/base64/decode64 + replace 치환. PowerToys Advanced Paste 대응 (텍스트 변환 중심) |
|
||||
|
||||
**구현 우선순위**: L28-2(snip 확장) → L28-3(미리보기) → L28-1(pkg) → L28-4(ap)
|
||||
**주의**: L28-1 winget은 winget 설치 여부 런타임 체크 필수. L28-4는 `AiEnabled` 게이트 필수.
|
||||
**NuGet 추가**: 없음 (PdfPig 기존 참조 활용)
|
||||
**빌드**: 경고 0, 오류 0
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user