diff --git a/docs/LAUNCHER_ROADMAP.md b/docs/LAUNCHER_ROADMAP.md index 2e12188..b668d49 100644 --- a/docs/LAUNCHER_ROADMAP.md +++ b/docs/LAUNCHER_ROADMAP.md @@ -1,35 +1,76 @@ # AX Commander (런처) 고도화 계획 -## 현재 상태 (v1.5.0) +## 현재 상태 (v2.1.0) -### 핵심 기능 (44개 핸들러) +### 핵심 기능 (110개 핸들러, L22까지 완료) - 퍼지 검색 + 한글 초성 검색 (FuzzyEngine) -- 44개 프리픽스 명령 (계산기, 이모지, 웹검색, 스니펫, 클립보드, 프로세스 등) +- 110개+ 프리픽스 명령 (계산기·이모지·웹검색·스니펫·클립보드·프로세스·데이터·네트워크·업무양식 등) - 10가지 테마 + 커스텀 테마 - 플러그인 시스템 (DLL + JSON 스킬) -- AX Agent AI 대화 통합 +- AX Agent AI 대화 통합 (Chat·Cowork·Code 3탭) - 글로벌 핫키 (Alt+Space), 무지개 글로우 효과 - 파일/앱 인덱싱, 북마크 검색, 사용 빈도 랭킹 -- 워크스페이스 프로파일 (창 레이아웃 저장/복원) -- 클립보드 히스토리, 스니펫 확장 -- 스크린 캡처, 컬러 피커, JSON 도구 +- 워크스페이스 프로파일 (창 레이아웃 저장/복원), 22개 스냅 레이아웃 +- 클립보드 히스토리 (핀·카테고리 자동 분류), 스니펫 확장 +- 스크린 캡처, OCR, 컬러 피커, JSON·YAML·XML·TOML·CSV 파서 +- Excel 함수 레퍼런스, 업무 양식 템플릿 (회의록·보고서·이메일 등) -### 경쟁 서비스 비교 (2026년 3월 기준) +--- -| 기능 | AX Commander | Raycast | Alfred 5 | Flow Launcher | PowerToys | -|------|-------------|---------|----------|---------------|-----------| -| AI 대화 | O (AX Agent) | O (멀티모델) | 워크플로우 | X | X | -| MCP 프로토콜 | O | X | X | X | X | -| 에이전트 코딩 | O (Code 탭) | O | X | X | X | -| 플러그인 | DLL+JSON | 1500+ 스토어 | 워크플로우 갤러리 | 200+ | 모듈 | -| 클립보드 히스토리 | O | O (리치) | 파워팩 | 플러그인 | X | -| 윈도우 관리 | O (22 레이아웃) | 70+ 레이아웃 | X | X | FancyZones | -| 파일 탐색기 통합 | X | X | X | X | X | -| Everything 연동 | O (es 프리픽스) | X | X | O | X | -| 선택 텍스트 AI | O (텍스트 액션 팝업) | O (AI Commands) | X | X | X | -| 영구 독 UI | O (독 바) | X | X | X | O (Command Palette Dock) | -| 클라우드 동기화 | X | Pro | Dropbox | X | X | -| 다국어 | 5개국어 | 영어 | 영어 | 영어 | 다국어 | +## 경쟁 서비스 심층 벤치마킹 (2026년 4월 기준) + +### 주요 런처 기능 매트릭스 + +| 기능 | AX Commander | Raycast | Alfred 5 | Flow Launcher | Listary | PowerToys | +|------|:---:|:---:|:---:|:---:|:---:|:---:| +| **플랫폼** | Windows | macOS | macOS | Windows | Windows | Windows | +| **기본 앱/파일 검색** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| **한글 초성 검색** | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| **AI 대화 통합** | ✅ (AX Agent) | ✅ (AI Commands) | 워크플로우 | ❌ | ❌ | ❌ | +| **MCP / 에이전트 코딩** | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| **클립보드 히스토리** | ✅ (핀·분류) | ✅ (이미지 포함) | ✅ (파워팩) | 플러그인 | ❌ | ❌ | +| **스니펫 확장** | ✅ | ✅ | ✅ (파워팩) | ❌ | ❌ | ❌ | +| **창 관리** | ✅ (22 레이아웃) | ✅ (70+ 레이아웃) | ❌ | ❌ | ❌ | ✅ (FancyZones) | +| **파일 관리자 통합** | ✅ (대화 감지) | ❌ | ❌ | ❌ | ✅ **핵심** | ❌ | +| **브라우저 북마크 검색** | ❌ **공백** | ✅ | ✅ | ✅ | ❌ | ❌ | +| **브라우저 히스토리 검색** | ❌ **공백** | ✅ | ✅ | 플러그인 | ❌ | ❌ | +| **시스템 볼륨 제어** | ❌ **공백** | ✅ (System Cmds) | ✅ | ❌ | ❌ | ❌ | +| **QR 코드 생성** | ❌ **공백** | ✅ (확장) | ✅ (확장) | 플러그인 | ❌ | ❌ | +| **회의 링크 관리** | ⚠️ (QuickLink 수동) | ✅ (Google Calendar) | ✅ | ❌ | ❌ | ❌ | +| **캘린더 이벤트 조회** | ❌ **공백** | ✅ (오늘 일정 표시) | ✅ | ❌ | ❌ | ❌ | +| **화면 밝기 제어** | ❌ **공백** | ✅ | ❌ | ❌ | ❌ | ❌ | +| **스크립트 명령 실행** | ✅ (^ 프리픽스) | ✅ (Script Commands) | ✅ | ✅ | ❌ | ❌ | +| **Everything 연동** | ✅ (es 프리픽스) | ❌ | ❌ | ✅ | ❌ | ❌ | +| **선택 텍스트 AI** | ✅ (팝업) | ✅ (AI Commands) | ❌ | ❌ | ❌ | ❌ | +| **독 바 (영구 표시)** | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | +| **플러그인 마켓** | DLL+JSON | 1,500+ | 갤러리 | 200+ | ❌ | 모듈 | +| **클라우드 동기화** | ❌ (사내 정책) | ✅ (Pro) | Dropbox | ❌ | ❌ | ❌ | +| **다국어·한글 지원** | ✅ **강점** | 영어 | 영어 | 영어 | 영어 | 다국어 | + +### 핵심 공백 분석 — "매일 50회 이상 쓰는 기능" 기준 + +경쟁 서비스가 공통으로 제공하지만 AX Commander에 없는 기능을 **사용 빈도**로 정렬: + +| 순위 | 공백 기능 | Raycast | Alfred | Flow | 사용 빈도 | 구현 난이도 | +|:---:|----------|:---:|:---:|:---:|----------|------------| +| 1 | **브라우저 북마크 검색** | ✅ | ✅ | ✅ | 매우 높음 | 낮음 (로컬 JSON 파싱) | +| 2 | **시스템 볼륨 제어** | ✅ | ✅ | ❌ | 매우 높음 | 중간 (Windows Core Audio API) | +| 3 | **QR 코드 생성** | ✅ | ✅ | 플러그인 | 높음 | 낮음 (QRCoder 라이브러리) | +| 4 | **회의 링크 빠른 열기** | ✅ | ✅ | ❌ | 높음 | 낮음 (JSON 설정 기반) | +| 5 | **화면 밝기 제어** | ✅ | ❌ | ❌ | 중간 | 중간 (WMI) | +| 6 | **오늘 캘린더 이벤트** | ✅ | ✅ | ❌ | 중간 | 높음 (Outlook COM / ICS 파싱) | + +### 기존 핸들러 중 재검토 대상 + +`pip` 프리픽스처럼 **특정 도구 의존도가 높아 보편성이 낮은** 핸들러 현황: + +| 핸들러 | 프리픽스 | 재검토 사유 | +|--------|---------|------------| +| PipHandler | `pip` | Miniconda·Anaconda·pyenv 등 환경이 달라 명령 다름. L22에 구현 완료했으나 향후 Phase에서 동일 패턴 반복 지양 | +| WslHandler | `wsl` | WSL 미설치 환경에서 무의미 | +| DockerHandler | `docker` | Docker Desktop 미설치 환경에서 무의미 | + +→ **방침**: 특정 외부 도구가 설치된 환경에서만 동작하는 핸들러는 신규 추가 중단. 미설치 감지 후 안내 메시지는 유지. --- @@ -428,13 +469,55 @@ public record HotkeyAssignment(string HotkeyStr, string TargetPath, string Label --- -## Phase L23 — Kubectl·GitHub CLI·Chocolatey·텍스트 비교 (v2.1.0) 🔄 예정 +## Phase L23 — 공백 메우기: 볼륨·북마크·QR·회의링크 (v2.2.0) 🔄 예정 -> **방향**: DevOps·소스 관리·Windows 패키지 관리·텍스트 분석 도구. +> **방향**: 벤치마킹 공백 1~4순위 구현. "특정 도구 설치 의존" 핸들러 추가 중단 — 인터넷 없이 동작하고 모든 사용자에게 즉시 유용한 기능만 선택. +> +> ※ 기존 L23 계획(`k8s`·`gh`·`choco`·`cmp`)은 DevOps 한정 도구로 수요층이 좁음 → 취소. 수요가 확인되면 플러그인으로 분리 제공. -| # | 기능 | 설명 | 우선순위 | -|---|------|------|----------| -| L23-1 | **kubectl 명령 생성기** | `k8s` 프리픽스. get/describe/apply/delete/logs/exec/port-forward/scale 명령. `k8s get pods` → kubectl get pods -n default. 네임스페이스 빠른 전환. 자주 쓰는 yaml 템플릿(Deployment/Service/ConfigMap) 클립보드 복사 | 중간 | -| L23-2 | **GitHub CLI 명령 생성기** | `gh` 프리픽스. pr/issue/repo/workflow/release 명령 빠른 조회·생성. `gh pr list` / `gh pr create`. 현재 디렉토리 git remote 자동 감지. 사내 모드에서 외부 GitHub 차단 안내 | 중간 | -| L23-3 | **Chocolatey 패키지 관리** | `choco` 프리픽스. choco install/uninstall/upgrade/list/search 명령. 자주 쓰는 패키지 내장 목록(git/node/python/vscode/chrome/7zip 등 20개+). `choco install <패키지>` → Enter 시 관리자 PowerShell 실행. 미설치 감지 | 중간 | -| L23-4 | **텍스트 비교·diff** | `cmp` 프리픽스 (기존 `diff`와 역할 분리 — `diff`는 파일 비교, `cmp`는 클립보드 텍스트 비교). 두 텍스트 블록 라인 단위 비교. 추가·삭제·변경 줄 통계. `cmp clip1 clip2` / 클립보드 자동 감지. unified diff 형식 출력. 단어 단위 diff 모드 | 낮음 | +| # | 기능 | 설명 | 근거 | +|---|------|------|------| +| L23-1 | **시스템 볼륨·오디오 제어** | `vol` 프리픽스. `vol 50` 볼륨 설정. `vol mute` / `vol unmute` 뮤트 토글. `vol +10` / `vol -10` 상대 조절. `vol` → 현재 볼륨·장치 표시. Windows Core Audio COM API 직접 사용 (외부 라이브러리 불필요). 독 바 볼륨 아이콘 표시 연동. 발표 직전 뮤트 등 **하루 수십 번** 사용 | Raycast·Alfred 모두 System Commands 최상위 | +| L23-2 | **브라우저 북마크 검색** | `bmark` 프리픽스. Chrome/Edge 북마크 파일 로컬 파싱 (`%LOCALAPPDATA%\…\Bookmarks` JSON). 폴더 구조 유지. `bmark <검색어>` 제목·URL 퍼지 검색. Enter → 기본 브라우저로 열기. 인터넷·로그인 불필요. 재인덱싱 자동 (파일 변경 감지 FileSystemWatcher) | Raycast·Alfred·Flow Launcher 3종 모두 핵심 기능 | +| L23-3 | **QR 코드 생성** | `qr` 프리픽스. `qr` → 클립보드 텍스트 자동 변환. `qr ` 직접 입력. QRCoder NuGet (순수 C#, 외부 서버 없음). Enter → PNG 임시 파일 저장 후 기본 이미지 뷰어로 열기. URL·WiFi·연락처 형식 자동 감지. 모바일 공유·발표 화면 QR 삽입 수요 | Raycast·Alfred 공통 제공. 사내 URL 공유 시 편의성 ↑ | +| L23-4 | **회의 링크 빠른 열기** | `meet` 프리픽스. Teams·Zoom·Webex·Google Meet URL을 이름과 함께 설정 파일에 등록. `meet` → 전체 목록. `meet daily` → 해당 링크 즉시 열기. `meet add <이름> ` → 등록. `meet del <이름>` → 삭제. JSON 기반 로컬 저장. 반복 회의 링크를 매번 이메일에서 찾는 불편 해소 | Teams/Zoom 시대 업무 필수. QuickLink와 유사하나 회의 전용 UX | + +--- + +## Phase L24 — 검색 품질·시스템 제어 심화 (v2.2.0) 🔄 예정 + +> **방향**: 핸들러 추가보다 **기존 기능 깊이 강화**. 벤치마킹 공백 5~6순위 + 검색 품질 개선. + +| # | 기능 | 설명 | 근거 | +|---|------|------|------| +| L24-1 | **화면 밝기·야간 모드 제어** | `bright` 프리픽스. 내장 모니터 밝기 조절 (WMI `WmiMonitorBrightnessMethods`). `bright 80` 수치 지정. `bright +10` / `bright -10` 상대 조절. `bright night on/off` Windows 야간 모드 레지스트리 토글. 외장 모니터는 미지원 안내 (DDC/CI는 별도 드라이버 필요). 노트북 사용자 발표·야간 작업 수요 | Raycast 인기 System Command 2위 | +| L24-2 | **파일 검색 결과 아이콘 표시** | 기존 파일/앱 검색 결과에 실제 아이콘 표시 (Shell32 `SHGetFileInfo` 또는 `ExtractAssociatedIcon`). 현재는 모든 파일이 동일한 Symbol 아이콘 → 사용자가 파일 종류를 시각적으로 구분 불가. `.docx`=Word 아이콘, `.xlsx`=Excel 아이콘, `.exe`=앱 아이콘 표시. BitmapSource로 변환 후 LauncherItem.IconPath에 임시 캐시 경로 전달 | 경쟁사 대비 시각적 완성도 격차 해소 | +| L24-3 | **퍼지 검색 랭킹 개선** | 검색 결과 정렬 알고리즘 개선. 현재: 단순 점수 정렬 → 개선: (1) 최근 실행 가중치 (지수 감소 decay), (2) 실행 횟수 가중치, (3) 쿼리 길이 대비 매칭 위치 보너스, (4) 정확 일치 > 초성 일치 > 부분 일치 우선순위 명확화. Listary 수준의 "한번 쓰면 다음엔 더 빨리 나오는" 경험 | 핵심 UX. 핸들러 100개 있어도 검색이 느리면 의미 없음 | +| L24-4 | **집중 모드 (Focus Mode)** | `focus` 프리픽스. `focus 25` → 25분 포모도로 타이머 + Windows 알림 방해 금지 모드 자동 활성화 (`SetThreadExecutionState` / Focus Assist 레지스트리). 종료 시 자동 복원. `focus stop` 즉시 종료. 독 바에 남은 시간 표시. Raycast Focus Mode 대응 | 재택·오픈오피스 환경 집중 업무 수요 | + +--- + +## Phase L25 — 런처 핵심 UX 재정비 (v2.3.0) 🔄 예정 + +> **방향**: 사용자가 자주 요청하는 **UX 개선**과 **설정 편의성** 강화. 새 핸들러 추가 없음. + +| # | 기능 | 설명 | +|---|------|------| +| L25-1 | **런처 결과 미리보기 패널** | 파일/클립보드 항목 선택 시 우측에 미리보기 표시. 텍스트 파일: 첫 20줄. 이미지: 썸네일. PDF: 첫 페이지. 단축키 F2 또는 Tab으로 포커스 이동. Raycast 미리보기 패널 대응 | +| L25-2 | **클립보드 히스토리 이미지 지원** | 현재 텍스트만 → 이미지·파일도 저장. 이미지 썸네일 표시. Enter → 클립보드에 재복사. Raycast 클립보드 리치 히스토리 대응 | +| L25-3 | **런처 폭·위치 기억** | 창 크기(폭)·화면 위치를 마지막 설정값으로 복원. 현재 항상 화면 중앙 고정 → 멀티 모니터 환경에서 주 모니터 위치 기억 | +| L25-4 | **핫키 커스터마이징 확장** | 현재 Alt+Space 고정 → 임의 조합 설정 가능. Win+Space, Ctrl+Space, 더블Shift 등 지원. Listary의 더블Ctrl 트리거 방식 옵션 추가 | + +--- + +## 핸들러 추가 기준 (신규 Phase 수립 시 체크리스트) + +> 아래 기준을 **3개 이상** 충족해야 새 핸들러로 추가. + +| 번호 | 기준 | 확인 방법 | +|:---:|------|---------| +| 1 | **설치 의존성 없음** — 외부 프로그램(Docker, WSL, conda 등) 설치 불필요 | 핸들러 독립 동작 여부 | +| 2 | **인터넷 불필요** — 사내 모드에서도 100% 동작 | 로컬 파일/시스템 API만 사용 | +| 3 | **매일 사용 가능** — 주 1회 이하로만 쓰이는 도구는 제외 | 실제 업무 흐름 검토 | +| 4 | **경쟁 서비스 공통 제공** — Raycast·Alfred·Flow 중 2개 이상에 존재 | 벤치마킹 매트릭스 참조 | +| 5 | **기존 핸들러로 대체 불가** — `diff`가 있는데 `cmp` 추가는 불필요 | 기존 prefix 목록 검토 |