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
Yun Chan
0e568f1f0a
feat(ads/seo/release): v1.2.0 with live Google Ads, isolated ad profile, ads.txt, and SEO/AEO/GEO optimization
2026-09-14 00:39:44 +09:00
Yun Chan
a88aafa1e5
docs: README에 공식 사이트·다운로드·가이드 링크 추가
...
검색 엔진과 AI 답변 서비스가 저장소를 인용할 때 공식 사이트로
연결되는 백링크 경로를 마련한다.
💘 Generated with Crush
Assisted-by: Crush:glm-5.3-flash
2026-09-11 18:58:49 +09:00
Yun Chan
f1949024fc
feat(mobile): advance Paca.Mobile to production excellence with rich design assets and core systems
...
- Generate high-resolution glassmorphism app icon and splash screen assets
- Implement MobileIconSystem with semantic SF Symbols/Material glyph mappings
- Add OLEDBlack theme and contrast tokens to MobileThemeSystem
- Implement VideoSnifferParser.NegotiateBestQuality for multi-stream quality resolution
- Enhance DiscoverPage, FavoritesPage, and SyncSettingsPage with production controls
- Add Gate 103-114 test suites with 100% test pass rate
2026-09-03 22:13:54 +09:00
Yun Chan
dbc50abb71
커스텀 도메인 mediabrowser.chanpaca.net 활성화 — DNS CNAME(프록시 ON)을 대시보드에서 추가(토큰에 Zone DNS 편집 권한 없음), Pages 도메인 등록과 결합해 https 200 서빙 확인. og:url 3페이지를 정식 도메인으로 갱신, 재배포. DEPLOYMENT_PLAN §5-ter·BACKLOG 13차 완료 반영
2026-08-18 10:50:14 +09:00
Yun Chan
f13914534a
사이트 인터랙티브 워크스테이션 확장 + 감사 폴리시 재적용 + 원클릭 릴리스 도구 — 병행 세션 확장분(히어로 3탭 워크스테이션 시뮬레이터, 비교 섹션(기존 방식 vs MEDIABROWSER), 가이드 단축키 섹션(kbd), 스포트라이트 카드, build/release.ps1 원클릭 릴리스(-Publish/-DeploySite), build-remote.ps1 PowerShell 원격 빌드, upload-release-asset.ps1 로컬 실행 지원(.env 자동 로드·-Publish 승격·-Repo), fetch-releases.mjs 인증·폴백)을 수용하고, 덮여 사라진 감사 폴리시를 새 베이스에 재적용: 타이틀 em대시 제거+OG 메타(index/guide), 아이브로우 6→1(장식 점 제거), 히어로 2줄 헤드라인·20단어 서브·CTA 라벨 단일화·신뢰 스트립 제거, 파이프라인 3분리 카드→단일 머신드 레일 재구성, 과장 카피 완화(100%·1초·초고속·완벽), 시뮬레이터 예시 캡션, skip-link·focus-visible·hero__grid min-width:0(모바일 오버플로) 재적용 — 데스크톱/모바일 검증(scrollWidth 375==375, 아이브로우 1, 레일·캡션·탭 3종 확인), deploy-site.ps1 로 재배포 완료
2026-08-18 10:35:53 +09:00
Yun Chan
9c9d9cb024
사이트 다크 옵시디언 리디자인 + 디자인 감사 폴리시 (redesign/design-taste/high-end 스킬 적용) — 병행 세션의 리디자인(옵시디언 서피스 사다리·머신드 더블베젤·플루이드 아일랜드 내비·히어로 스트림 시뮬레이터·모바일 드로어)을 기반으로 감사 교정: 아이브로우 배급(페이지당 7→1, 장식 점 제거), em대시 전소거(타이틀 3종), 히어로 규율(헤드라인 2줄·서브텍스트 20단어 이내·신뢰 마이크로스트립 제거·CTA 라벨 다운로드/사용 안내로 의도별 단일화), 3등분 카드 파이프라인을 단일 베젤 레일(헤어라인 분할+아이콘 배지)로 재구성, 과장 카피 완화(100%·1초·평균1~3초·초고속), 시뮬레이터에 예시 화면 캡션 명시, 모바일 가로 오버플로 수정(그리드 min-width:0 — 긴 mono URL 이 열 최소폭을 밀던 실결함), OG 메타 3종·skip-link·focus-visible 링·브랜드 404 추가 — 데스크톱 1440/모바일 390 스크린샷 검증, scrollWidth==viewport 확인, 재배포 완료
2026-08-18 07:35:09 +09:00
Yun Chan
02995f4153
MEDIABROWSER 개명·업데이트 채널 전환·아이콘 tofu 근본 수정 (BACKLOG 13차) — ①개명: installer.iss AppName/출력 MediaBrowser-Setup-*(AppId·exe·데이터 경로 유지로 업그레이드 호환), 워크플로 산출물명(mediabrowser-*.tar.gz, MediaBrowser-<ver>-arm64.apk), 창 타이틀·모바일 표시명·obtainium.json·README. ②UpdateChecker: apiBase 주입(기본=자체 Forgejo /api/v1, GitHub 는 apiBase 로 호환), osx 자산 tar.gz 허용(기존 dmg 만 → mac 영원히 자산 없음 결함 수정), AppConfig 기본 UpdateRepo=Video-Downloader/releases+UpdateApiBase — 테스트 4건. ③아이콘 tofu(사용자 보고 "절대 안고쳐지네") 근본 원인: Shared.xaml 암시적 TextBlock 스타일의 FontFamily=UiFont 강제가 버튼 ContentPresenter 자동 TextBlock 의 IconFont 상속을 덮어 모든 PUA 글리프가 notdef — 폰트 설치/글리프 존재/HW·SW 렌더/RTB/DPI/런타임 8·10/자체포함·공유 전부 배제 후 실창 픽셀 비교로 격리, 콘텐츠 TextBlock 의 실폰트가 Pretendard 체인임을 테스트로 실증. 수정: 암시 스타일 FontFamily 제거(창 루트 상속으로 통일, PairingWindow/PlayerWindow 는 SetResourceReference), PUA+텍스트 혼합 콘텐츠 7곳+코드 1곳 정리, 순수 글리프 2곳 IconFont 명시. 회귀 방어: IconGlyphXamlTests(정적 스캔)·IconContentFontTests(실창 폰트 단정)·IconGlyphRenderTests(픽셀 비교) — 462/462 GREEN, 수정 전후 실창 캡처로 글리프 렌더 확인
2026-08-18 07:13:18 +09:00
Yun Chan
c8b061959b
MEDIABROWSER 배포 사이트 + 공개 릴리스 저장소 전환 (DEPLOYMENT_PLAN §5-ter, BACKLOG 12차) — site/: 프로모션(라이트 글래스모피즘, CSS scroll-driven 패럴랙스+IO 등장, 모션·투명도 축소 존중, no-JS 백지 방지 html.js 게이트)·릴리스(플랫폼 그룹, OS 자동 감지 권장, 이전 버전 접힘, 빈 상태)·사용 안내(설치→첫 다운로드→관리→휴대폰 연결→FAQ) 3페이지. 히어로/가이드 이미지는 VD_DATA_DIR 격리 프로필로 띄운 실제 앱 다운로드 패널 캡처(밝기 보정). 릴리스 데이터는 CORS 회피를 위해 배포 시 fetch-releases.mjs 가 releases.json 으로 정적 생성(git 무시). 공개 저장소 Video-Downloader/releases 신설(비공개 소스 저장소는 자산 익명 다운로드 불가) — CI 업로드를 env RELEASE_REPO 로 전환, draft 익명 비노출이라 QA 후 Publish 흐름 유지. build/deploy-site.ps1(wrangler pages deploy) 추가, 라이브: https://mediabrowser-7r4.pages.dev — Playwright 로 3페이지 전수 스크린샷 검증(빈 상태+샘플 데이터 렌더 포함)
2026-08-18 00:14:39 +09:00
Yun Chan
b536622606
BACKLOG 11차 기록: Forgejo 자체 러너 릴리스 CI 가동 — 리허설 2차 5/5 잡 성공, ci-rehearsal draft 에 전 플랫폼 7개 자산(설치자 2·tar.gz 4·APK 1) 업로드 실증
2026-08-17 23:36:29 +09:00
Yun Chan
d98c73451f
android CI 잡 MSB3030 수정: CLI 전역 -p:RuntimeIdentifiers=android-arm64 가 참조 프로젝트(net8.0 Mobile.Core)까지 전파돼 RID 경로 dll 을 못 찾던 결함(구 GitHub 스캐폴드에 잠재, 첫 실행에서 실증). Mobile csproj 에 CiPackArm64Only 게이트 조건부 RuntimeIdentifiers 로 이전 — 로컬 동일 명령 재현: exit 0, arm64-v8a 단독 23.3MB APK 확인
2026-08-17 23:30:11 +09:00
Yun Chan
b05e8bf009
upload-release-asset.sh 실행 비트 추가 (linux/mac 러너에서 ./ 직접 호출)
2026-08-17 23:17:30 +09:00
Yun Chan
7d9bc73cad
Forgejo 자체 러너 3대(windows/linux-builder/macos, 모두 host 모드)용 릴리스 CI 신설 — .forgejo/workflows/release.yml: 태그 v* → test 관문(전체 xUnit) → Windows 설치자(x64/arm64)·Android APK·linux/mac tar.gz(각 2 RID) 병렬 빌드 → draft 릴리스에 자산 직접 업로드. host 러너에 Node 불필요하도록 uses: 액션 없이 순수 run: 스텝(체크아웃도 git 직접), workflow_dispatch 리허설은 ci-rehearsal draft prerelease. build/ci/upload-release-asset.{ps1,sh}: draft 릴리스 확보(병렬 경합 대응)+동명 자산 교체 멱등 — Git Bash CRLF 로 자산 id 가 오염되어 삭제가 조용히 실패하던 결함 수정, 실 Forgejo API 대상 2회 실행 검증 완료. RELEASE_TOKEN 시크릿(PAT write:repository) 등록, 유령 Inno Setup 재설치(ALPACA-HOME), DEPLOYMENT_PLAN §5-bis 문서화
2026-08-17 23:17:07 +09:00
Yun Chan
39a85ceb36
빌드 환경 변수 템플릿에 Forgejo(NAS git 서버) 계정 키 문서화 — 실제 값은 .env(git 무시)에만 둔다
2026-08-17 16:21:55 +09:00
Yun Chan
17f2f91152
UI 복잡 버전 234 RED→GREEN 완료(docs/UI_USECASES.md §A~§J): 라이브 테마 전환(DynamicResource 전환+ThemeResolver+HighContrast 테마, 재시작 없음), 디자인 토큰 체계·WCAG 대비 결함 5건 수정, 설정창 카테고리 내비/검색 재구성+AppConfig 40여 속성, 다운로드 관리자(속도/ETA/세그먼트맵/전체 일시정지-이어받기/CSV 내보내기/예약 게이트/중복 확인), 라이브러리·아카이브·작업공간·재생목록·즐겨찾기 편집 뷰, 접근성(자동화 속성 30여 개·커스텀 피어·docs/ACCESSIBILITY.md), 인터랙션(휠 클릭 새 탭·XButton 탐색·F12·영역 캡처·프로필 전환), 상태/알림(토스트·알림센터·온보딩·CrashReportDialog). 보강 테스트 35건+실창 E2E 4건(StaDispatcher 기반 — 프록시 설정이 기시작 핸들러를 건드리는 크래시 실결함 수정 포함) — 453/453 GREEN. 이전 미커밋 작업(CI 워크플로·Mdns·QueueHub·UpdateChecker·AGENTS/CLAUDE·빌드 스크립트) 일괄 포함
2026-08-17 15:54:53 +09:00
Yun Chan
5a0ce730b2
썸네일 API 테스트를 호스트 ffmpeg 의존 제거(ServerOptions.FfmpegPath 주입, 가짜 러너 .jpg 출력만 기록) — PATH 에서 ffmpeg 사라져도 결정적 GREEN
2026-08-16 18:43:42 +09:00
Yun Chan
c4dba66c15
iOS 네트워킹 E2E 실증(ATS 예외+페어링 시딩→큐 77% 라이브 렌더) + QR 스캐너 게이트 결함 기록
2026-08-16 18:39:46 +09:00
Yun Chan
bbbd83fe58
QR 스캐너 게이트 수정: DeviceType 휴리스틱 오판(실기기에서 스캐너 미표시) — iOS 시뮬레이터만 폴백, Android 는 항상 스캐너
2026-08-16 18:32:41 +09:00
Yun Chan
0cb16c8830
M2/M3 갭: 라이브러리 그리드 추가일 표시 + iOS Info.plist ATS(NSAllowsLocalNetworking)/NSLocalNetworkUsageDescription
2026-08-16 11:36:38 +09:00
Yun Chan
f380518919
데스크톱 T3 잔여 완성 + 스타일 폴리시: 도메인 라우팅(WorkspaceRoutingRules 자동 워크스페이스 전환), 탭 아카이브(TabArchive 영속·팔레트 복구), 페이지 액션(흑백/세피아 필터), 노트 패널(NotesStore+플라이아웃), 컴팩트 모드(크롬 숨김+엣지 호버). 스타일: 한국어 폰트 폴백, 암시 폰트 통일, 다크 툴팁, 텍스트 대비 상향. UpdateNavState dispose 가드. 164/164 GREEN + 실창 스크린샷 검증
2026-08-16 08:46:54 +09:00
Yun Chan
04ff0ff93d
M1 공유 타겟(U1)+M2 저장 진행 알림: ACTION_SEND 인텐트 필터+ShareTarget/SharePayload(RED 7건)+루트 타이머 큐 전송(am start 인텐트 E2E로 서버 큐 반영 실증), 오프라인 저장 Android ProgressBar 노티(5% 스로틀)→폰 저장 완료 전환(34MB E2E, Report(1) 되덮어쓰기 방지). 154/154 GREEN
2026-08-15 18:45:51 +09:00
Yun Chan
69094595a5
감사 갱신: T3-11/14/15+U5+미디어알림+썸네일그리드+외부망안내 2차 완성 — 147/147 GREEN, 에뮬 E2E(다운로드완료 노티/재생중 노티 lifecycle/ffmpeg 썸네일 그리드/Tailscale 안내) 실증
2026-08-15 18:18:36 +09:00
Yun Chan
46c6c321f2
T3-11/14/15 + M2 잔여: 권한 정책 UI(PermissionGate/PermissionRequested 다이얼로그+SavesInProfile), 추적 방지(TrackerBlocklist/WebResourceRequested 차단+실드 배지·팝업), 주소창 진행 바+파라미터 제거 복사(UrlCleaner/NavProgressTracker), U5 완료 알림(Mobile.Core 감지기+Plugin.LocalNotification), 재생중 ongoing 미디어 알림, 썸네일/해상도 API(Thumbnailer 사이드카 캐시+/thumb)+라이브러리 그리드, 외부망 안내(ConnectionTroubleshoot). 147 tests GREEN
2026-08-15 18:11:49 +09:00
Yun Chan
27c91c04dd
M2-U3+U4 완성: 이어보기 위치 동기화(POST/GET /api/position + PositionStore JSON 영속, 플레이어 5초 주기·종료 저장·재개 시크) + 폰 오프라인 저장(ApiClient.DownloadFileAsync .part 스트리밍, OfflineStore manifest, 라이브러리 💾 버튼, 저장 탭 오프라인 재생/삭제). 서버 RED→GREEN E2E + 에뮬레이터 E2E(위치 13.3→35.2초 이어재생, 서버 정지 후 오프라인 재생 프레임 실증). 104 tests GREEN
2026-08-15 17:40:28 +09:00
Yun Chan
17f3e41cd2
최종 감사: 계획↔구현 매핑 문서(IMPLEMENTATION_AUDIT.md), slnx에 Mobile 추가, HlsDownloader._muxer ctor 누락 회귀 RED→GREEN 수정(103 tests), 빌드머신 아티팩트 갱신(linux-x64/osx-arm64)
2026-08-15 17:20:13 +09:00
Yun Chan
432b94fcbe
M3: QR scanner only on physical devices (simulator camera session hangs first frame on iOS)
2026-08-15 17:06:11 +09:00
Yun Chan
698f140169
M3: NSCameraUsageDescription for iOS/MacCatalyst (QR scan permission crash at startup)
2026-08-15 16:57:40 +09:00
Yun Chan
311d043db9
M3: iOS TFM (macOS-only condition) + Android-only condition for AndroidX.LocalBroadcastManager
2026-08-15 16:49:15 +09:00
Yun Chan
250b2c3c10
M1+M2: MAUI Android companion - QR/manual pairing, queue polling UI, library streaming player modal (TapGestureRecognizer+PushModalAsync; linker keeps AndroidX.LocalBroadcastManager), ZXing scan+MediaElement playback. Emulator E2E: paired to host server, live queue/library render, real MP4 frames streamed+rendered, back closes player
2026-08-15 16:42:53 +09:00
Yun Chan
bb569acd96
M0: remote access server - Kestrel embedded (token auth/pair/queue API/library/range streaming/web companion zero-install), QR pairing window, DownloadQueueAdapter, auto-start+palette commands. Server E2E green (102 tests)
2026-08-15 15:30:35 +09:00
Yun Chan
40c1b39b70
Phase D (T2-10): media playlist - auto-collect detected media, flyout management, player window (native+hls.js+dash.js bundles), persistence, auto-next (101 tests GREEN)
2026-08-15 15:25:10 +09:00
Yun Chan
406957088f
Phase C (T2-1..T3-10): command palette, reader mode (real Readability.js, E2E), boost force-dark, screenshot, split view, vertical tabs, Glance (Alt+click), tab groups (6 colors), workspaces, speed dial, InPrivate tabs, quick find, source view, print, PiP, TTS (94 tests GREEN)
2026-08-15 15:22:44 +09:00
Yun Chan
0caa1111e7
Phase B (T1-5/T1-6/T2-2/T2-8/T2-12): download manager flyout w/ speed+pause/resume/cancel, bookmark bar, tab sleeping, tab search (open+closed), context menu w/ 'download video from this link' (79 tests GREEN)
2026-08-15 15:09:59 +09:00
Yun Chan
af19dba8f4
refactor(4): TabViewService extracts WebView2 lifecycle/wiring from MainWindow (god-class dissolved) - all 66 tests incl. tab E2E stay GREEN
2026-08-15 15:04:15 +09:00
Yun Chan
e8ec1350b3
refactor(3): VideoDownloader.Browser library - tabs/find/search-engine/zoom/bookmark-history stores extracted from App (66 GREEN)
2026-08-15 15:02:23 +09:00
Yun Chan
6df9f81b4a
refactor(2): Core Platform abstractions (IProcessRunner/IMediaMuxer + Desktop impls) - Hls/Dash/YtDlp through injection seams, threading contract documented (66 tests GREEN)
2026-08-15 15:00:36 +09:00
Yun Chan
9eb988440f
refactor(1): detection App->Core + AppPaths (VD_DATA_DIR isolation for deterministic E2E)
2026-08-15 14:51:16 +09:00
Yun Chan
1aab8729fa
refactor(1): move Detection (MediaDetector/SocialSiteDetector/DetectionContext) App->Core
2026-08-15 14:49:02 +09:00
Yun Chan
b6b7fc341b
Phase A: tab architecture integrated into MainWindow - tab strip UI, per-tab WebView2 lifecycle, new-window->tab w/ deferral, audio indicator/mute, session save/restore, shortcuts; E2E on real window (56 tests GREEN)
2026-08-15 14:48:17 +09:00
Yun Chan
be01a116ca
deploy: self-hosted build machines operational (vd-linux/vd-mac) - 4 artifacts built & native-exec E2E passed (HLS download EXIT=0 on both)
2026-08-15 13:46:05 +09:00
Yun Chan
a206270c3b
deploy: remote build scripts (build-remote.sh, install-buildkey.ps1) + self-hosted build machine setup
2026-08-15 13:33:44 +09:00
Yun Chan
9e637f09df
deploy: .env template + gitignore hardening (.env* ignored, template whitelisted)
2026-08-15 12:39:36 +09:00
Yun Chan
603ad51406
Phase A logic: TabManager/TabItem/session store (TDD, 17 tests)
2026-08-15 12:18:05 +09:00
Yun Chan
00a822eaeb
Phase 0 (T1-3/4/7/9/11): find bar w/ native Find API + search engine + site zoom + force reload + F11, wired into MainWindow, E2E smoke (39 tests)
2026-08-15 12:14:35 +09:00
Yun Chan
470c9267f2
T1-4/T1-7: search engine resolver + site zoom store (TDD RED->GREEN, 32 tests)
2026-08-15 12:04:23 +09:00
Yun Chan
21b7c4d8bd
Baseline: WPF/Avalonia/Cli/Core + plans (BROWSER_FEATURES_PLAN v2, MOBILE_PLAN v1)
2026-08-15 11:59:25 +09:00