releases/README.md
Yun Chan a2916e953c feat(seo): make paca.chanpaca.net the canonical domain for the whole site
Both hostnames served the same sitemap and feed, so the sitemap submitted for
paca.chanpaca.net listed only mediabrowser.chanpaca.net URLs and Naver rejected
it as not matching the verified domain. Switch every canonical URL, Open Graph
tag, hreflang, JSON-LD, sitemap, RSS feed, llms files, app share link, package
manifest and promo UTM to paca.chanpaca.net, then resubmit the corrected Naver
and Search Console sitemaps. All 2,757 tests pass.

💘 Generated with Crush

Assisted-by: Crush:deepseek-v4.1-flash
2026-09-15 05:04:51 +09:00

5.2 KiB

Paca

홈페이지 · 다운로드 · 사용 안내

브라우저를 내장한 데스크톱 영상 다운로더와, 같은 엔진을 공유하는 모바일 컴패니언 앱.

앱 안의 브라우저로 사이트를 열면 재생되는 미디어(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 빌드머신에서만)

자주 쓰는 명령

# 테스트 — 가장 먼저 이걸로 상태 확인 (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 워크로드가 설치돼 있어야 통과한다. 워크로드 없이 작업할 때는 프로젝트를 개별 지정한다.

배포

# 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 을 지원한다: 저장소 공개 후 build/obtainium.json 의 <owner>/<repo> 를 치환하고, 폰에서 obtainium://add/https://github.com/<owner>/<repo> 링크 한 번으로 등록된다.

앱 내 업데이트 확인(데스크톱)은 설정 → "앱 업데이트"에 GitHub 저장소(owner/repo)를 넣으면 GitHub Releases 최신 태그와 비교해 릴리스 페이지를 열어 준다.

문서

문서 내용
AGENTS.md AI 코딩 에이전트 작업 계약 — 명령·규약·완료 기준 (사람이 읽어도 온보딩 문서)
docs/HARNESS.md 개발 하네스 운영법 — 자동 검증 게이트, 규칙/스킬 구조
docs/BROWSER_FEATURES_PLAN.md 데스크톱 브라우저 기능 계획 (v2)
docs/MOBILE_PLAN.md 모바일 앱 + PC↔모바일 연동 계획 (v1)
docs/DEPLOYMENT_PLAN.md Win/macOS/Linux/모바일 배포 체계
docs/IMPLEMENTATION_AUDIT.md 계획 대비 구현 감사
docs/BACKLOG.md 작업 이력 및 백로그
docs/GROWTH_PLAN.md 성장·홍보·바이럴 실행 계획 (검색/AEO/GEO 심화, 런치 시퀀스)
docs/promo/ 사이트 홍보 키트 — 채널별 게시문·디렉터리 제출 데이터