feat: bootstrap tauri motrix-style UI and aria2 torrent flow
This commit is contained in:
67
docs/PORTING_PLAN.md
Normal file
67
docs/PORTING_PLAN.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Motrix (Electron) -> gdown (Tauri + Vue) 포팅 계획서
|
||||
|
||||
## 1. 목표
|
||||
- Electron 중심 구조를 Tauri + Vue 구조로 전환한다.
|
||||
- 기존 Motrix의 핵심 기능(aria2 엔진 제어, 다운로드 큐, 설정/세션, 트레이/알림)을 단계적으로 재구현한다.
|
||||
- 초기 단계에서 "동작 가능한 최소 제품(MVP)"을 빠르게 만들고, 이후 안정화와 기능 확장을 진행한다.
|
||||
|
||||
## 2. 기준 환경
|
||||
- Node.js: 24.x
|
||||
- npm: 11.x
|
||||
- Rust: stable (1.93.1+)
|
||||
- Tauri: v2 계열
|
||||
- Vue: v3 + Vite
|
||||
|
||||
## 3. 아키텍처 매핑
|
||||
- Electron main (`src/main/*`) -> Tauri Rust (`src-tauri/src/*`)
|
||||
- Electron renderer (`src/renderer/*`) -> Vue UI (`src/*`)
|
||||
- aria2 프로세스 관리 (`main/core/Engine.js`) -> Rust process manager (`src-tauri/src/engine.rs`)
|
||||
- 앱 설정 저장(`electron-store`) -> Tauri plugin-store(차기 단계)
|
||||
- 트레이/알림/OS 훅 -> Tauri tray/notification/deep-link plugin(차기 단계)
|
||||
|
||||
## 4. 단계별 구현
|
||||
|
||||
### Phase 1 (진행 중): 엔진 부트스트랩
|
||||
- [x] Tauri + Vue 프로젝트 초기화
|
||||
- [x] Rust command: `engine_start`, `engine_stop`, `engine_status`
|
||||
- [x] Vue 대시보드에서 엔진 제어 UI 연결
|
||||
- [ ] aria2 번들 바이너리 경로 자동 탐지 (`resources/engine/*`)
|
||||
- [ ] 에러 메시지 분류(파일 없음, 권한 오류, 포트 충돌)
|
||||
|
||||
### Phase 2: 다운로드 RPC/큐
|
||||
- [ ] aria2 JSON-RPC client 계층 구현 (Rust 또는 Vue 중 1안 선택)
|
||||
- [ ] 작업 추가/중지/재시도/삭제
|
||||
- [ ] 작업 목록/속도/진행률 실시간 갱신
|
||||
- [ ] Magnet/Torrent 입력 파이프라인
|
||||
|
||||
### Phase 3: 설정/세션/마이그레이션
|
||||
- [ ] 설정 저장소 도입 (다운로드 폴더, 동시작업 수, 속도 제한 등)
|
||||
- [ ] 세션 파일 관리(종료 시 저장, 시작 시 복구)
|
||||
- [ ] Motrix 설정 키 매핑표 작성 및 자동 마이그레이션 도구
|
||||
|
||||
### Phase 4: 플랫폼 기능
|
||||
- [ ] 시스템 트레이 메뉴
|
||||
- [ ] 알림/자동 시작
|
||||
- [ ] 파일 연결(.torrent) 및 magnet scheme 등록
|
||||
- [ ] 업데이트 전략(자체 업데이트 또는 외부 배포 전략)
|
||||
|
||||
### Phase 5: 품질/배포
|
||||
- [ ] 단위/통합 테스트
|
||||
- [ ] 성능 측정(메모리, CPU, 대용량 큐)
|
||||
- [ ] macOS/Windows/Linux 빌드 파이프라인
|
||||
|
||||
## 5. 리스크 및 대응
|
||||
- aria2 바이너리 번들/서명: 플랫폼별 바이너리 동봉 규칙 문서화 + CI 검증
|
||||
- Electron API 차이: 기능별 대체표를 먼저 만들고 Tauri plugin으로 대응
|
||||
- 설정 호환성: 기존 키를 그대로 유지하지 않고 매핑 테이블로 이관
|
||||
|
||||
## 6. 현재 구현 상태 (2026-02-23)
|
||||
- 완료:
|
||||
- `src-tauri/src/engine.rs`: aria2 프로세스 시작/중지/상태 조회
|
||||
- `src-tauri/src/lib.rs`: Tauri invoke handler 연결
|
||||
- `src/lib/engineApi.ts`: 프런트 command 호출 래퍼
|
||||
- `src/App.vue`: 엔진 제어 UI
|
||||
- 다음 우선순위:
|
||||
1. aria2 바이너리 경로 자동 탐지 + 리소스 번들 구조 확정
|
||||
2. JSON-RPC 기반 다운로드 목록 API 구현
|
||||
3. 설정 저장소 도입
|
||||
Reference in New Issue
Block a user