Commit graph

42 commits

Author SHA1 Message Date
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