releases/README.md
Yun Chan a5a8da7424 feat(growth): ship search registration, long-tail SEO and in-app sharing
Register both Paca domains on Naver Search Advisor, Google Search Console and
Bing Webmaster Tools so the site can be indexed by every major engine, add
DASH and AES-128 how-to pages to capture protocol-specific searches, and let a
finished download share a UTM-tagged landing link from the completion shelf.
Package-manager manifests (winget, Chocolatey, Scoop) now carry verified
v1.2.0 hashes and product codes instead of placeholders. All 2,757 tests pass.

💘 Generated with Crush

Assisted-by: Crush:deepseek-v4.1-flash
2026-09-15 03:37:47 +09:00

96 lines
5.2 KiB
Markdown

# Paca
**[홈페이지](https://mediabrowser.chanpaca.net/) · [다운로드](https://mediabrowser.chanpaca.net/releases.html) · [사용 안내](https://mediabrowser.chanpaca.net/guide.html)**
브라우저를 내장한 데스크톱 영상 다운로더와, 같은 엔진을 공유하는 모바일 컴패니언 앱.
앱 안의 브라우저로 사이트를 열면 재생되는 미디어(HLS `.m3u8` / DASH `.mpd` / MP4 직링크)를
자동으로 감지해 목록에 띄우고, 쿠키·Referer 를 그대로 물려 받아 내려받는다.
받은 영상은 내장 서버를 통해 같은 네트워크의 휴대폰에서 바로 재생하거나 저장할 수 있다.
## 저장소 구조
| 프로젝트 | TFM | 역할 |
|---|---|---|
| `Paca.Core` | net8.0 | **다운로드 엔진.** HLS/DASH 파싱, AES-128 복호화, 병렬·이어받기, 미디어 감지, ffmpeg 리먹스, 플랫폼 추상화 |
| `Paca.Browser` | net8.0-windows | WebView2 탭 컴포넌트 (응답 가로채기·쿠키 공급) |
| `Paca.App` | net8.0-windows | **메인 WPF 앱.** 브라우저 셸 + 다운로드 UI + 서버 호스팅 |
| `Paca.Server` | net8.0 | ASP.NET 라이브러리. App 안에서 기동되어 모바일/웹 컴패니언에 라이브러리·스트리밍 API 제공 |
| `Paca.Mobile` | net10.0-android (+ios on macOS) | MAUI 컴패니언 앱 |
| `Paca.Mobile.Core` | net8.0 | 모바일 공용 로직. UI 없이 테스트 가능하도록 분리 |
| `Paca.Avalonia` | net8.0 | macOS/Linux 크로스플랫폼 셸 (진행 중 — `docs/DEPLOYMENT_PLAN.md` Gate #1' 참고) |
| `Paca.Cli` | net8.0 | 엔진 검증용 개발 도구 (`--dashparse` 등) |
| `Paca.Tests` | net8.0-windows | xUnit 전체 테스트 (Core/App/Server/Mobile.Core + E2E) |
그 밖에:
- `build/` — 배포 스크립트. `publish.ps1`(Windows 설치자), `installer.iss`(Inno Setup), `remote/`(맥·리눅스 원격 빌드)
- `docs/` — 기획·감사 문서
- `.env.example` — 배포/원격빌드 자격 증명 템플릿. `.env` 로 복사해 채운다 (`.env` 는 커밋되지 않음)
## 개발 환경
- **.NET 8 SDK** + **.NET 10 SDK** (모바일 및 Avalonia 12 가 10 을 요구)
- Windows 11 (데스크톱 앱은 WPF + WebView2 기반이라 Windows 전용)
- **ffmpeg** — PATH 에 있으면 자동 인식. 없으면 리먹스 단계에서 실패
- 모바일 빌드 시: `dotnet workload install maui-android` (iOS 는 macOS 빌드머신에서만)
## 자주 쓰는 명령
```powershell
# 테스트 — 가장 먼저 이걸로 상태 확인 (Mobile 제외 전 영역 커버)
dotnet test Paca.Tests
# 데스크톱 앱 빌드 / 실행
dotnet build Paca.App
dotnet run --project Paca.App
# 엔진 단독 검증
dotnet run --project Paca.Cli -- --dashparse "https://.../manifest.mpd"
# 모바일 (Android 워크로드 필요)
dotnet build Paca.Mobile -f net10.0-android
```
> 솔루션 전체 빌드(`dotnet build Paca.slnx`)는 MAUI 워크로드가 설치돼 있어야 통과한다.
> 워크로드 없이 작업할 때는 프로젝트를 개별 지정한다.
## 배포
```powershell
# Windows 설치자 (x64 + arm64) → out/Paca-Setup-{arch}.exe
./build/publish.ps1 -Config Release -Version 1.0.0
# macOS / Linux 원격 빌드 (.env 의 빌드머신 자격 증명 사용) → out/remote/<rid>/
bash build/remote/build-remote.sh all
```
`out/`, `publish/` 는 산출물 디렉터리라 커밋되지 않는다.
### CI (GitHub 공개 후)
`.github/workflows/release.yml` — 태그(`v*`) 푸시 시 테스트 관문 통과 후
Windows 설치자(x64/arm64)·Linux/macOS tar.gz·Android APK 를 빌드해 **Draft Release** 로 올린다
(QA 후 수동 Publish). macOS 서명·공증(D4)과 iOS TestFlight(D5)는 Apple Developer Program
가입 + 시크릿 등록 후 활성화한다 — 상세는 `docs/DEPLOYMENT_PLAN.md` §5·§7.
Android 자동 업데이트는 [Obtainium](https://github.com/ImranR98/Obtainium) 을 지원한다:
저장소 공개 후 `build/obtainium.json` 의 `<owner>/<repo>` 를 치환하고, 폰에서
`obtainium://add/https://github.com/<owner>/<repo>` 링크 한 번으로 등록된다.
앱 내 업데이트 확인(데스크톱)은 설정 → "앱 업데이트"에 GitHub 저장소(`owner/repo`)를
넣으면 GitHub Releases 최신 태그와 비교해 릴리스 페이지를 열어 준다.
## 문서
| 문서 | 내용 |
|---|---|
| [AGENTS.md](AGENTS.md) | AI 코딩 에이전트 작업 계약 — 명령·규약·완료 기준 (사람이 읽어도 온보딩 문서) |
| [docs/HARNESS.md](docs/HARNESS.md) | 개발 하네스 운영법 — 자동 검증 게이트, 규칙/스킬 구조 |
| [docs/BROWSER_FEATURES_PLAN.md](docs/BROWSER_FEATURES_PLAN.md) | 데스크톱 브라우저 기능 계획 (v2) |
| [docs/MOBILE_PLAN.md](docs/MOBILE_PLAN.md) | 모바일 앱 + PC↔모바일 연동 계획 (v1) |
| [docs/DEPLOYMENT_PLAN.md](docs/DEPLOYMENT_PLAN.md) | Win/macOS/Linux/모바일 배포 체계 |
| [docs/IMPLEMENTATION_AUDIT.md](docs/IMPLEMENTATION_AUDIT.md) | 계획 대비 구현 감사 |
| [docs/BACKLOG.md](docs/BACKLOG.md) | 작업 이력 및 백로그 |
| [docs/GROWTH_PLAN.md](docs/GROWTH_PLAN.md) | 성장·홍보·바이럴 실행 계획 (검색/AEO/GEO 심화, 런치 시퀀스) |
| [docs/promo/](docs/promo/README.md) | 사이트 홍보 키트 — 채널별 게시문·디렉터리 제출 데이터 |