- 웹 페이지 자동 번역 (기본 끔): 다른 언어 페이지를 화면 언어로 (Google 번역, 원문 언어 자동 감지).
주소창 옆 번역 버튼으로 원문 · 번역 바꾸기, 새로 생긴 글도 2초마다 번역 (lib/core/web_translate.dart)
- JavaScript 사용 (기본 켬): Edge · Android 는 바로 다시 읽어 적용, Chrome (CEF) 은 웹뷰를 새로 만든다.
Edge 는 JavaScript 를 꺼도 번역됨 (TreeWalker 거르기 함수를 쓰지 않음)
- webview_cef: create 에 {url, javascript} 를 받아 CefBrowserSettings.javascript 를 끔 (JJ_PATCH.md 5)
- 통합 테스트 (Windows Edge · Android WebView): integration_test/web_translate_test.dart
debug 빌드만 평문 http 허용 (기기 안 시험 페이지)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- youtubedl-android 0.18.1 (Python · yt-dlp · ffmpeg · aria2c) 을 넣고, MainActivity 가 처음 켤 때 풀어
실행 경로 · 환경 변수를 알려 준다. 받을 때마다 새 yt-dlp 확인 (못 받아도 계속)
- YtDlpBackend · Aria2Backend: 실행 명령 앞 인수 · 환경 변수 · JS 실행기 (deno / quickjs) 를 받게 해 Windows 와 같은 코드로 실행
- 다운로드 엔진은 처음 쓸 때 준비 (앱 시작을 늦추지 않음), 실패하면 다음에 다시 시도
- 기본 위치: 내장 저장소 Download/JJ_MKVMaker. 환경 설정에 다운로드 위치 · YouTube 형식 · 화질 · 쿠키 · 동시 다운로드 수 표시
- R8 keep 규칙 (youtubedl-android 의 Jackson · 압축 풀기 클래스)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- build.gradle.kts: 2026.10.2+1 → versionCode 261002001 (순번이 날마다 1 로 돌아가도 늘 커짐)
- formatVersion: 빌드 번호의 끝 세 자리를 순번으로 (Android 제목이 v2026.10.02_261002001 로 보이던 것)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- ffmpeg-kit 플러그인 사본: 통계(진행률) 이벤트를 세션마다 0.25초에 한 번만 Dart 로 보냄
(프레임마다 보내 메인 스레드 줄이 밀리고 완료 이벤트가 늦게 도착, 그동안 다른 작업 버튼이 모두 잠김)
- FfmpegKitMediaTool: 진행률이 0.5% 이상 바뀔 때만 화면 갱신
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>