Files
AX-Copilot/docs/LAUNCHER_ROADMAP.md
lacvet 7ca34d2ef4 [Phase L7] 런처 개발자·글로벌 도구 4종 추가
GitHandler.cs (210줄, prefix=git):
- git status/log/branch/stash/diff/pull 서브커맨드
- 작업 폴더에서 .git 루트 자동 탐색 (상위 디렉토리 재귀)
- 비동기 Process 실행 + 출력 클립보드 복사
- pull은 별도 PowerShell 터미널로 실행

RegexHandler.cs (310줄, prefix=re):
- 클립보드 텍스트에 패턴 적용, 매치 목록 LauncherItem 표시
- /old/new/ 치환 모드, flags:im 플래그 지정
- re patterns: 이메일/URL/전화/날짜/IP/UUID 등 14종 라이브러리

TimeZoneHandler.cs (220줄, prefix=tz):
- 15개 주요 도시 현재 시각 실시간 표시
- tz <도시>, tz HH:mm to <도시>, tz meeting HH:mm 모드
- TimeZoneInfo 기반 UTC 오프셋 계산

NetDiagHandler.cs (260줄, prefix=net):
- 로컬 어댑터 IP/MAC 즉시 표시
- net ping (4회, 사내 모드 내부 호스트 제한)
- net dns A 레코드 조회 (사외 모드에서 외부 도메인)
- InternalModeEnabled 사내/사외 모드 연동

App.xaml.cs: Phase L7 핸들러 4종 등록
docs/LAUNCHER_ROADMAP.md: Phase L7 섹션 추가 

빌드: 경고 0, 오류 0
2026-04-04 13:48:53 +09:00

233 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AX Commander (런처) 고도화 계획
## 현재 상태 (v1.5.0)
### 핵심 기능 (44개 핸들러)
- 퍼지 검색 + 한글 초성 검색 (FuzzyEngine)
- 44개 프리픽스 명령 (계산기, 이모지, 웹검색, 스니펫, 클립보드, 프로세스 등)
- 10가지 테마 + 커스텀 테마
- 플러그인 시스템 (DLL + JSON 스킬)
- AX Agent AI 대화 통합
- 글로벌 핫키 (Alt+Space), 무지개 글로우 효과
- 파일/앱 인덱싱, 북마크 검색, 사용 빈도 랭킹
- 워크스페이스 프로파일 (창 레이아웃 저장/복원)
- 클립보드 히스토리, 스니펫 확장
- 스크린 캡처, 컬러 피커, JSON 도구
### 경쟁 서비스 비교 (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개국어 | 영어 | 영어 | 영어 | 다국어 |
---
## Phase L1 — 차세대 런처 고도화 (v1.5.0)
| # | 기능 | 구현 내용 |
|---|------|----------|
| L1-1 | 선택 텍스트 AI 명령 | TextActionPopup (커서 위치 팝업), 번역/요약/교정/설명/다시쓰기. 설정 기반 명령 선택, 1개 시 팝업 없이 바로 실행 |
| L1-2 | Everything 연동 | EverythingHandler (`es` 프리픽스), Everything64.dll P/Invoke, 미설치 시 graceful fallback |
| L1-3 | 윈도우 타일링 확장 | SnapHandler 11→22개 레이아웃 (3등분, 2/3, 3분할 조합) |
| L1-4 | 플러그인 자동 설치 | PluginHost.InstallFromZip() + UninstallPlugin(). 로컬 zip 기반 (URL 제외: 사내 보안) |
| L1-5 | 영구 독 바 | DockBarWindow (화면 하단 고정). 설정 기반 아이템, CPU/RAM, 시계, 글로우, 투명도, 위치 기억 |
| L1-6 | 대화상자 통합 | FileDialogWatcher (SetWinEventHook + #32770 감지). 열기/저장 시 런처 자동 열기 |
| L1-7 | 클립보드 핀/카테고리 | IsPinned/Category 필드, 자동 분류(URL/코드/경로), Ctrl+P 핀 토글, #pin/#url/#코드 필터 |
| L1-8 | 클라우드 설정 동기화 | 보류 (사내 환경) |
| L1-9 | 커스텀 테마 마켓 | 보류 (사내 환경) |
| 추가 | 독 바 설정 탭 | 설정창에 독 바 전용 탭 (표시 항목, 투명도, 글로우, 위치 초기화) |
| 추가 | 설정창 UI 개편 | 테마+색상편집 하위탭 합침, 일반+알림 하위탭 합침, v1.5.0 신기능 설정값 추가 |
| 추가 | 아이콘 교체 | 다이아몬드 픽셀 ICO (7 sizes). 앱/인스톨러/바로가기/AboutWindow/LauncherWindow/SVG 전체 통일 |
---
## Phase L1 추가 완료 (v1.5.0)
| # | 기능 | 상태 |
|---|------|------|
| 추가 | **Windows 탐색기 셸 확장** | ✓ ShellExtensionService — HKCU 레지스트리 등록/해제, 명령줄 파싱 |
| 추가 | **저장 공간 관리 UI** | ✓ StorageAnalyzer — 사용량 분석, 드라이브 여유, 7/14/30일 정리 |
| 추가 | **설정 도움말 아이콘** | ✓ AI 관련 설정 17개에 `?` 아이콘 + 커스텀 다크 툴팁 |
| 추가 | **독 바 실시간 설정** | ✓ 설정 변경 즉시 반영, 자동 표시, 위치 기억 |
---
## Phase L2 — 클립보드 고도화 + UX 개선 (v1.5.3)
> **방향**: 클립보드 히스토리의 실용성 극대화 (이미지 원본 품질, 자동 복사 워크플로우), 런처 UX 개선.
> Raycast의 리치 클립보드, Alfred의 Snippet 확장을 참고하되 사내 로컬 환경에 최적화.
| # | 기능 | 설명 | 우선순위 |
|---|------|------|----------|
| L2-1 | **클립보드 이미지 원본 해상도 보존** | 원본 PNG를 `clipboard_images/` 캐시 폴더에 저장, 썸네일(80px)은 표시용으로만 사용. 캐시 정리 정책 (30일/500MB). Enter 복원 시 원본 해상도로 클립보드 복사 | ✅ 완료 |
| L2-2 | **Shift+Enter 실행 시 자동 클립보드 복사** | Shift+Enter로 외부 뷰어 열기 전에 해당 항목을 시스템 클립보드에 자동 복사. 텍스트/이미지(원본 해상도) 모두 지원 | ✅ 완료 |
| ✅ L2-3 | **클립보드 이미지 미리보기 창** | `#` 이미지 항목에서 Shift+Enter → `ClipboardImagePreviewWindow`. 원본 해상도 표시, Ctrl+휠/+/0/F 줌, PNG·JPEG·BMP 저장, Ctrl+C 복사 | 중간 |
| ✅ L2-4 | **클립보드 검색 강화** | 이미지 OCR 텍스트 추출 → 텍스트 기반 이미지 검색. Windows OCR API (로컬) 활용. `OcrText` 필드, `ExtractOcrTextAsync()`, TFM `net8.0-windows10.0.17763.0` | 중간 |
| ✅ L2-5 | **클립보드 항목 병합** | Ctrl+Click 마우스 다중 선택 추가 (Shift+↑/↓ 키보드 선택은 기존 구현). `ResultList_PreviewMouseLeftButtonUp` 분기 | 낮음 |
### Phase L2 추가 완료 (v1.5.3)
| # | 기능 | 상태 |
|---|------|------|
| 추가 | **독 바 탭 위치 이동** | ✓ 설정 탭 순서에서 독 바를 3번째(테마 뒤)로 이동 — 사용 빈도 기반 접근성 향상 |
| 추가 | **설정 기타 탭 접기/열기** | ✓ 등록된 도구, MCP 커넥터, 슬래시 스킬 각각 접기/펼치기 섹션 (화살표 토글) |
| 추가 | **About 정보 변경** | ✓ ".NET 8" → "Commander + Agent" (기술 스택 비노출 원칙) |
| 추가 | **가이드 내장 뷰어** | ✓ GuideViewerWindow — 암호화된 가이드를 앱 내 WebBrowser로 복호화 렌더링. 개발자 모드 연동 |
---
## Phase L3 — 차세대 런처 (v2.0) — 진행 중 / 일부 완료
> **방향**: 경쟁 런처(Raycast 1500+ 확장, PowerToys Run)의 에코시스템 수준을 참고하되,
> 사내 보안/오프라인 환경에서 동작하는 자체 완결형 기능으로 구현.
> AX Agent **Phase 18 (v2.0)** 과 교차 개발 — 런처와 에이전트의 기능 경계가 겹치는 항목은 통합 구현.
| # | 기능 | 설명 | 우선순위 | 교차 |
|---|------|------|----------|------|
| ✅ L3-1 | **플러그인 갤러리 + 레지스트리** | 로컬 NAS/Git 레지스트리 기반 탐색/설치/업데이트 인앱 갤러리 | 높음 | → Agent 18-2 |
| ✅ L3-2 | **웹 검색 AI 요약** | ? 검색 결과를 AI가 요약하여 런처에 표시 | 중간 | → Agent 18-6 |
| ✅ L3-3 | **AI 스니펫** | `;email {수신자} {주제}` → LLM이 이메일 초안 자동 생성. 기존 스니펫에 AI 확장 | 중간 | → Agent 18-3 |
| ✅ L3-4 | **파라미터 퀵링크** | `jira {티켓번호}` → URL 템플릿 변수 치환 (사내 JIRA/Confluence 등) | 중간 | → Agent 18-4 |
| ✅ L3-5 | **파일 태그 시스템** | 파일에 사용자 태그 부여, `tag` 프리픽스로 태그 기반 검색. `file_tags.json` 로컬 저장 | 중간 | — |
| L3-6 | **오프라인 AI (로컬 SLM)** | ONNX Runtime + phi-3, 서버 없이 번역/요약 | 낮음 | → Agent 18-5 |
| ✅ L3-7 | **다중 디스플레이** | 마우스 커서 위치 모니터에 런처 표시, 독 바 per-monitor 위치 저장·유효성 검증 | 낮음 | — |
| ✅ L3-8 | **알림 센터 통합** | `notif` 프리픽스로 알림 이력 조회·검색·초기화. NotificationCenterService 이력 연동, 클립보드 복사 | 낮음 | — |
| ✅ L3-9 | **런처 미니 위젯** | 하단 위젯 바 4종: 시스템 모니터(CPU/RAM/디스크), 뽀모도로 타이머(`pomo` 프리픽스), 빠른 메모 건수, 서버 상태(Ollama/LLM/MCP). PerformanceMonitorService·PomodoroService·ServerStatusService 싱글턴 | 낮음 | — |
---
## Phase L4 — 검색/탐색 UX 혁신 + 생산성 확장 (v1.7.x) ✅ 완료
> **방향**: Raycast/Alfred 기능 갭 해소 + 기존 L1-7 미완 기능 이행. 런처 단독 완결형 생산성 강화.
| # | 기능 | 설명 | 상태 |
|---|------|------|------|
| ✅ L4-1 | **파일 탐색기 인라인 패널** | 경로 입력(`C:\`, `D:\`, `~\`) 감지 → 폴더 목록 표시. →/← 키로 폴더 진입/상위 이동. Enter로 탐색기/기본 앱 실행 | 완료 |
| ✅ L4-2 | **QuickLook F3 강화** | PDF(PdfPig 텍스트 추출), 코드 구문강조(14개 언어 배경색+줄번호), Word/Excel(OpenXml) 미리보기 | 완료 |
| ✅ L4-3 | **클립보드 핀 & 카테고리** | Ctrl+P 핀 고정, `#pin/#url/#코드/#경로` 필터, 자동 분류. L1-7 기구현 확인 | 완료 |
| ✅ L4-4 | **검색 히스토리** | ↑/↓ 키로 이전 검색어 탐색. 50개 FIFO `search_history.json` 로컬 저장 | 완료 |
| ✅ L4-5 | **고급 검색 필터 문법** | `ext:.pdf size:>1mb modified:week in:documents type:file` 인라인 필터. SearchFilterParser + FuzzyEngine.SearchWithFilter() | 완료 |
| ✅ L4-6 | **계산기 단위 변환 확장** | `=20km` 자동 제안, `=today+30d` 날짜 계산. UnitConverter.AutoSuggest() + DateShortcut | 완료 |
---
## Phase L5 — 전용 핫키 · OCR · 배치 작업 · 자동화 (v1.7.4~)
> **방향**: 파워유저의 반복 작업 제거. Raycast의 핫키 할당, Windows OCR 통합, 멀티파일 배치 이름변경,
> QuickLook 인라인 편집, 워크플로우 스냅 6가지로 런처를 "행동 허브"로 확장.
| # | 기능 | 설명 | 우선순위 |
|---|------|------|----------|
| L5-1 | **항목별 전용 핫키** ✅ | 앱·URL·폴더에 `Ctrl+Alt+숫자` 등 글로벌 단축키 직접 할당. `hotkey` 프리픽스로 관리. `HotkeyAssignment` 모델 + `InputListener` 확장 + 설정창 "전용 핫키" 탭 | 높음 |
| L5-2 | **OCR 화면 텍스트 추출** ✅ | `ocr` 프리픽스 + F4 글로벌 단축키. RegionSelectWindow 재사용, Windows.Media.Ocr 로컬 엔진. 결과 → 클립보드 복사 + 런처 입력창 자동 채움 | 높음 |
| L5-3 | **QuickLook 인라인 편집** ✅ | F3 미리보기 → Ctrl+E 편집 모드 토글. 텍스트/코드 전체 읽기(300줄 제한 없음). Ctrl+S 저장, ● 수정 마커, Esc 취소 확인, 저장 후 미리보기 새로고침 | 중간 |
| L5-4 | **앱 세션 스냅** ✅ | `session` 프리픽스. `AppSession/SessionApp` 모델 추가 + `AppSettings.AppSessions` 저장. `SessionHandler`: 목록·실행·new/edit/del 서브커맨드. `SessionEditorWindow`: 세션 이름·설명·앱 행(경로+라벨+스냅 팝업 14종+삭제) 인라인 편집. 실행 시 Process.Start → 창 핸들 대기(6초) → ApplySnapToWindow(P/Invoke SetWindowPos+ShowWindow) | 중간 |
| L5-5 | **배치 파일 이름 변경** ✅ | `batchren` 프리픽스로 BatchRenameWindow 오픈. 변수 패턴(`{name}`, `{n:3}`, `{date:format}`, `{ext}`) + 정규식 모드(`/old/new/`). 드래그 앤 드롭·폴더/파일 추가, DataGrid 실시간 미리보기, 충돌 감지(배경 붉은 강조), 확장자 유지 토글, 시작 번호 지정, 적용 후 엔트리 갱신 | 중간 |
| L5-6 | **자동화 스케줄러** ✅ | `sched` 프리픽스. `ScheduleEntry` 모델(Id·Name·Enabled·TriggerType·TriggerTime·WeekDays·TriggerDate·ActionType·ActionTarget·ActionArgs·LastRun) + `AppSettings.Schedules` 저장. `SchedulerService`: 30초 간격 타이머, ±1분 트리거 윈도우, `LastRun.Date == today` 중복 방지, once 실행 후 자동 비활성화. `ScheduleHandler`: 목록(다음 실행 시각 표시)·new·edit·del·Enter 토글. `ScheduleEditorWindow`: 트리거 유형 4종(매일/주중/매주/한번)·요일 다중 선택·날짜 입력, 액션 2종(앱 실행/알림). `ComputeNextRun` + `TriggerLabel` 유틸 공유 | 낮음 |
### Phase L5 구현 순서 (권장)
```
L5-1 (핫키) → L5-2 (OCR) → L5-3 (편집) → L5-5 (배치 이름변경) → L5-4 (세션 스냅) → L5-6 (스케줄러)
```
---
## Phase L6 — 워크플로우 자동화 확장 (v1.7.5~) ✅ 완료
> **방향**: 런처를 "행동 허브"로 완성. 매크로 시퀀서, 컨텍스트 인식, 조건부 스케줄로 반복 작업을 완전 자동화.
| # | 기능 | 설명 | 우선순위 |
|---|------|------|----------|
| L6-1 | **클립보드 파이프라인** ✅ | `pipe` 프리픽스(기존 구현). upper/lower/trim/sort/unique/b64e/b64d/urle/urld 등 체이닝 | 기존 |
| L6-2 | **런처 매크로 시퀀서** ✅ | `macro` 프리픽스. `MacroEntry/MacroStep` 모델 + `AppSettings.Macros` 저장. `MacroHandler`: 목록·new·edit·del·Enter 실행. `MacroEditorWindow`: 유형(앱/URL/폴더/알림/PS) + 대상 + 표시이름 + 딜레이(ms) 인라인 행 편집. 재생: 순서대로 Process.Start/알림 실행 | 중간 |
| L6-3 | **컨텍스트 감지 자동완성** ✅ | `ctx` 프리픽스. `GetForegroundWindow` P/Invoke로 현재 앱 감지. 5개 컨텍스트(웹 브라우저/코드 편집기/오피스/파일 탐색기/커뮤니케이션) → 상황별 런처 명령 제안. Enter 시 해당 프리픽스 런처 입력창에 자동 삽입 | 중간 |
| L6-4 | **조건부 스케줄** ✅ | `ScheduleEntry.ConditionProcess`(프로세스명) + `ConditionProcessMustRun`(실행중/비실행중) 필드 추가. `SchedulerService.ShouldFire()` 확장: `Process.GetProcessesByName()` 조건 체크. `ScheduleEditorWindow`에 조건 섹션 UI 추가 | 낮음 |
### L5-1 항목별 전용 핫키 — 구현 설계
```csharp
// HotkeyAssignment: 단축키 → 실행 대상 매핑 모델
public record HotkeyAssignment(string HotkeyStr, string TargetPath, string Label);
// GlobalHotkeyService 확장
// - RegisterCustomHotkeys(IEnumerable<HotkeyAssignment>) 추가
// - 기존 Alt+Space 핫키와 독립 관리 (별도 id 공간)
// HotkeyHandler (prefix="hotkey"): 등록/삭제/목록 조회
// 런처 -> "hotkey set ctrl+alt+1 C:\Apps\Chrome.exe 크롬"
// 런처 -> "hotkey list" → 등록된 핫키 목록
// 런처 -> "hotkey del ctrl+alt+1"
```
### L5-2 OCR 화면 텍스트 추출 — 구현 설계
```csharp
// Windows.Media.Ocr.OcrEngine (이미 L2-4 ClipboardOcr에서 사용 중)
// OcrHandler (prefix="ocr"):
// 1. 런처 숨김
// 2. 반투명 오버레이 창(전체화면) 표시 → 마우스 드래그로 영역 선택
// 3. PrintScreen + crop → BitmapImage → OcrEngine.RecognizeAsync()
// 4. 결과 텍스트 클립보드 복사 + 런처 재표시 (결과 항목으로 표시)
// ScreenRegionSelector: 기존 ScreenCaptureHandler의 SelectionOverlay 재사용 가능
```
### L5-3 QuickLook 인라인 편집 — 구현 설계
```csharp
// QuickLookWindow.xaml에 편집 모드 토글 버튼 추가 (타이틀바 우상단 ✏ 아이콘)
// TextScrollViewer → TextBox (편집 모드에서만 활성)
// Ctrl+S → File.WriteAllText() + 저장 완료 토스트
// 수정 감지: TextBox.TextChanged → 타이틀에 "●" 마커
// Esc → 저장 안 함 확인(CustomMessageBox) 후 미리보기 모드 복귀
// 편집 가능 확장자: .txt, .md, .log, .cs, .py, .js, .ts, .json, .xml, .yaml 등
```
### L5-5 배치 파일 이름 변경 — 구현 설계
```csharp
// BatchRenameWindow: 선택 파일 목록 + 패턴 입력 + 미리보기 DataGrid
// 패턴 유형:
// {name} → 원본 이름
// {n:3} → 3자리 순번 (001, 002, ...)
// {date} → 오늘 날짜 (yyyyMMdd)
// {ext} → 확장자
// 정규식 치환: /old/new/
// LauncherWindow: 다중 선택(Shift+↑/↓) 후 F2 → BatchRenameWindow 열기
```
---
## 기술 부채 (v1.5.0 해결)
| 항목 | 상태 |
|------|------|
| SnapHandler 기본 기능만 | ✓ 22개 레이아웃으로 확장 (3등분, 2/3, 3분할 조합 추가) |
| Everything 미연동 | ✓ EverythingHandler 구현 (`es` 프리픽스, P/Invoke, graceful fallback) |
| 플러그인 설치 수동 | ✓ PluginHost.InstallFromZip() 로컬 zip 자동 추출·등록 (URL 제외: 사내 보안) |
| 이미지 클립보드 미지원 | ✓ PNG→Base64 DPAPI 암호화 저장/복원, 앱 재시작 후 이미지 히스토리 유지 |
---
## Phase L7 — 런처 개발자·글로벌 도구 확장 (v2.0.1) ✅ 완료
> **방향**: 개발자가 런처를 벗어나지 않고 Git 조회·정규식 테스트·시간대 변환·네트워크 진단을 수행.
| # | 기능 | 설명 | 우선순위 |
|---|------|------|----------|
| L7-1 | **Git 빠른 조회** ✅ | `git` 프리픽스. `git status/log/branch/stash/diff/pull` 서브커맨드. 현재 AX Agent 작업 폴더에서 `.git` 루트 자동 탐색. 비동기 Process 실행 → 출력 클립보드 복사. `pull`은 별도 PowerShell 터미널로 실행. 브랜치명·변경 파일 수 실시간 요약 표시 | 높음 |
| L7-2 | **정규식 테스터** ✅ | `re` 프리픽스. 클립보드 텍스트에 패턴 적용 → 매치 목록 표시. `/old/new/` 치환 모드. `flags:im` 플래그 지정(대소문자·멀티라인·단일라인). `re patterns` 서브커맨드로 이메일·URL·전화번호·날짜·IP·UUID 등 14종 공통 패턴 라이브러리. 매치 결과·치환 결과 클립보드 복사 | 높음 |
| L7-3 | **시간대 변환기** ✅ | `tz` 프리픽스. 15개 주요 도시(서울·도쿄·베이징·뉴욕·LA·런던·파리·시드니 등) 현재 시각 실시간 표시. `tz <도시>` 단일 조회 + 서울 기준 시차 표시. `tz 14:00 to la` 시각 변환. `tz meeting 09:00` 미팅 시각 전 도시 동시 표시. Enter → 클립보드 복사 | 중간 |
| L7-4 | **네트워크 진단** ✅ | `net` 프리픽스. 로컬 어댑터 IP/MAC 즉시 표시. `net ping <호스트>` 4회 핑 테스트(사내 모드: 내부 호스트만). `net dns <도메인>` DNS A 레코드 조회(사외 모드에서 외부 도메인). `net ip`/`net adapter` 상세 정보. 기존 `port` 핸들러(포트·프로세스 조회)와 역할 분리 | 중간 |