Files
gdown/docs/PORTING_PLAN.md

2.9 KiB

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 (진행 중): 엔진 부트스트랩

  • Tauri + Vue 프로젝트 초기화
  • Rust command: engine_start, engine_stop, engine_status
  • 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. 설정 저장소 도입