- 어두운 화면 값은 같음 - 두 캡처 묶음 78장을 바꾸기 전 · 뒤로 찍고 한 번 더 찍은 흔들림 기준 밖 차이 0
- 밝은 화면 캡처 (mkvdetail 18 · bigtext 60) 를 직접 봄: 읽기 어려운 곳 없음
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
둘 다 1b31609 (v2026.10.20_001) 바탕. 충돌:
- assets/l10n en · ja · zh-Hans: 열쇠별 3방향 합치기 (양쪽이 같은 열쇠를 다르게 바꾼 것 0)
- lib/ui/home_page.dart 자막 줄: after_1020 의 새 배치 (좁으면 두 줄) 를 따르고, xplore_p3b 의 JjColors (테마 색) 쪽 const 빼기를 다시 적용
- lib/ui/settings_page.dart 설명 글: after_1020 의 테마 글자색 (bodyMedium · onSurfaceVariant - 밝은 화면에서도 맞음)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 지시 10/21:
- 캡처가 없던 화면 캡처 시험 (windows_vault_shot_test · windows_misc_shot_test), Wi-Fi 공유 · 화면 보정 캡처에도 JJ_SHOT_THEME
- 662 캡처 흔들림: 크기마다 새 Navigator (앞 크기에서 밀어 연 화면이 남아 다음 첫 캡처가 다른 화면이 됨) · 밀기 그림이 끝날 때까지 기다림
- 확인: 밝은 화면 캡처를 보고 읽기 어려운 곳 없음, 어두운 화면은 0a9a2d0 과 픽셀로 견줘 흔들림 밖 차이 0, 662 는 두 번 찍어 같음
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 지시 10/21 (⑦ (나) 둘째 이후):
- 보기 화면 · 재생 막대는 밝은 화면에서도 어두운 띠 (그림 · 동영상 위 - 사진 보기 앱처럼, 내 판단).
그 띠 위 강조 (켜진 단추 · 쪽 슬라이더 · 썸네일 테두리 · 재생 위치) 는 어두운 화면의 청록, 검은 바탕의 흐린 글자도 어두운 값
- 시간줄: 재생 위치 선 · 고른 칸 글자 (밝은 화면), AI 보라 (aiColor) 는 밝은 화면에서 진하게,
다운로드 진행 막대 글자는 밝은 화면에서 진한 글자 + 흰 테두리
- 캡처 시험: 보기 화면 캡처 (windows_reader_shot_test) 를 새로 · 662 · i18n (앱 전체는 설정 화면 밝기) · check · magnet 에도 JJ_SHOT_THEME
- 시험 흔들림: 보관함 2단계 시험 정리 때 폴더를 잠깐 잡고 있으면 (errno 32) 몇 번 더 지움
- 확인: 어두운 화면 캡처를 808300b 와 픽셀로 견줘 (같은 커밋 두 번 찍은 흔들림 밖) 차이 0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 지시 10/21 (⑦ (나) 화면마다 차례로 - 첫째 파일 탐색기):
- 주황 · 빨강 · 노랑 · 초록 (orangeAccent · redAccent · amber · greenAccent) 을 테마 색 warning · alert · amber · positive 로.
어두운 화면은 예전 Material 값 그대로, 밝은 화면만 진하게 (글자 4.5:1 · 노랑 아이콘 3:1, 노랑 글자는 amberText)
- 탐색기: 흰 바탕에서 옅은 회색 파일 아이콘을 밝은 화면일 때만 진하게, 저장 공간 그림 "이 폴더의 파일" 칸 글자 (밝은 화면)
- 통합 캡처 시험에 JJ_SHOT_THEME=light (어두운 것과 견줌)
- 설정 설명 글을 새 이름 (밝은 화면 · 기기 따라) 에 맞춤
- 확인: 어두운 화면 캡처 95장을 9324e41 과 픽셀로 견줘 실행마다 바뀌는 곳 (시각 · CPU 숫자 · 임시 이름) 밖의 차이 0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- F7: 폰 가로 (900×412) 에서 떠 있는 [이동] 이 [자막 파일 추가] 를 반쯤 가렸다 (잘못 누를 수 있음) → 높이 < 500 × 글자 배율 이면
206 의 배치 (칩 줄 아래) 를 씀. 처음에 높이 < 500 만 봤더니 960×600 · 글자 1.6 (ja) 에서도 가려 글자 배율을 곱함. 높이가 넉넉하면 그대로
- F8: 다운로드 화면 ja 412 글자 1.6 에서 제목이 넓어 주소 칸이 「動画...」 만큼으로 눌렸다 → 주소 칸이 200 보다 좁아질 때만 주소 칸 · [추가] 를
제목 아래 한 줄로 (글 폭은 지금 글꼴 · 배율로 잼). 이를 위해 AppTopBar 의 좁은 배치 아래 줄을 "높이 48 고정" 에서 "48 이상" 으로
(한 줄이면 예전처럼 48 가운데, 폭은 그대로 다 씀 - app_top_bar_test 201). 한 줄 막대 (넓은 화면) 에서는 늘 한 줄
- 214 c (move_settled_test): 전체 시험에서 한 번 실패 - 250ms 안에 원본 목록을 아직 읽지 않으면 새 파일까지 옮겨져 거짓 실패였다.
보내기가 실제로 시작된 뒤 새 파일을 만들고, "새 파일을 잃지 않음 (원본 또는 받는 쪽)" 을 따로 확인
- 시험: windows_mkvdetail_shot_test 에 900×412 (1.0 · 1.6) · 1280×480 과 [자막 파일 추가] 겹침 확인을 더해 18개 통과,
windows_bigtext_shot_test 60개 통과 (release\test\shots_f1), 전체 단위 1150개 통과, 214 c 혼자 5번 통과
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- windows_mkvportrait_shot_test: test/mkv_portrait_detail_test 를 실제 글꼴로 - 412×869 · 작업 기록 켬 · 감지한 언어 줄 · DNS 닿지 않음 줄에서
[AI 자막 만들기] 가 스크롤 없이 보이고 DNS 줄은 한 줄 · [시스템 DNS 로 바꾸기] 도 같은 줄. ko · ja × 글자 1.0 · 1.6 × 3가지 = 12개
- 정식 판 후보 1b31609 로 12개 통과 (release\test\shots_v20261020_001 mkvportrait_*)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- windows_bigtext_shot_test: test/large_text_test 의 화면 6개 (MKV · 파일 탐색기 · Rsync · 모니터링 · 다운로드 · 환경 설정) 를 실제 글꼴로,
글자 1.6배 (412×900 · 900×412 · 1280×800) · 글자 1.0 (412×900 · 900×412) × ko · ja = 60개. 넘침 없음 · 누르는 것이 화면 폭 안 (가로로 넘기는 막대 안은 뺌).
MKV 는 동영상 5개 · 작업 기록 3줄 (256: 폰 가로에서 기록을 켜도 목록이 3줄 보임)
- 정식 판 후보 1b31609 로 60개 통과 (release\test\shots_v20261020_001 bigtext_*)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 원인: 자막 줄은 한 줄 Row 라 좁은 폭 · 큰 글자 · 일본어에서 오른쪽으로 넘쳐 (1b31609: ja 412 글자 1.0 에서 65px, 외부 자막 + 1.6 에서 219px)
끝의 편집 · 지우기 단추가 잘려 누를 수 없었다
- 고침: 한 줄에 드는 폭 (내장 표 · 이름 최소 60 · 언어 고르기 · 문자셋 · 단추) 을 지금 글꼴 · 글자 배율로 잰다 (고르기는 가장 긴 항목 글의 폭 -
DropdownButton 이 그 폭을 씀). 모자랄 때만 두 줄, 아래 줄은 Wrap. 언어 이름은 "…" 로 줄이지 않음 (무엇을 골랐는지 보이게, 3a 결정).
넓을 때는 예전 한 줄 그대로. 오디오 트랙은 줄이 없고 칩 (음성 n개) 뿐이라 해당 없음
- windows_mkvdetail_shot_test: 412 · 960×600 · 1280×720 × 글자 1.0 · 1.6 × ko · ja (내장 + 외부 자막). 넘침 없음 · 처음 자리에서 칩과
[이동] 단추가 겹치지 않음 (206) · 끝까지 내리면 출력 줄이 단추 위 (F5 - 이미 있던 목록 끝 여백으로) 를 자리로 잰다.
1b31609 에서는 6개 실패 (넘침), 이 고침으로 12개 모두 통과. HomePage 를 쓰는 단위 11파일 111개 통과
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- l10n/tr.dart joinSentences: 한국어 · 영어는 빈칸, ja · zh 는 붙여서 (「移動しました。1 件は…」). 빈 조각은 뺌
- 파일 탐색기의 끝 알림 5곳 (복사 · 이동 끝, 긴 경로 영구 삭제, 휴지통 보내기, 휴지통 되돌리기, 끌어 놓아 옮긴 뒤) 이 이것으로 잇는다
- 시험: i18n_test (ko · en · ja · zh-Hans), moveleft 캡처 ja 960 직접 봄 - 빈칸 없음
- 262: windows_mkvend_shot_test - 가짜 FFmpeg 로 2개 묶음, 첫 동영상이 끝나는 순간 그 줄의 ■ 자리를 눌러도 ⟳ · ✕ 가 먹지 않고
둘 다 성공. ko · en · ja × 412 · 960, 정식 판 후보 1b31609 로 6개 통과 (release\test\shots_v20261020_001 mkvend_*), after_1020 으로도 6개.
i18n · explorer_conflict · batch 55개 통과
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- F3: "1개 항목을 옮겼습니다. · 1개는 원본에 남음 (건너뜀)" 처럼 마침표 뒤에 " · " 가 붙었다 → 뒤 조각도 문장 ("1개는 원본에 남았습니다 (건너뜀).",
"받는 쪽이 더 새것이라 n개를 건너뛰었습니다." 등 5개) 으로 쓰고 빈칸으로 잇기 (en · ja · zh). 같은 꼴을 찾아보니 다른 끝 알림 (지우기 ·
되돌리기) 은 이미 빈칸으로 이어 그대로. 옛 조각 글은 작업 기록 · 모니터링 · 확인 창에서도 써 열쇠는 남김
- F4: 키를 고른 뒤 안내가 창 맨 아래인데 "아래에 키 암호를" 이었다 → "위의 [개인 키 암호] 칸에 키 암호를 넣으세요" (칸 이름은 실제 칸 이름)
- 185: windows_dlcancel_shot_test - [다운로드 취소] 묻는 창 → [계속 받기] 면 그대로 받음 (가짜 백엔드), ko · en · ja × 412 · 960.
정식 판 후보 1b31609 로 6개 통과 (release\test\shots_v20261020_001 dlcancel_*), after_1020 으로도 6개 통과
- 확인: analyze · l10n 빠진 것 0, explorer_conflict · move_settled · sftp 48개, moveleft · sshkey 캡처 통과 (release\test\shots_f1),
ja 960 이동 알림 · en 412 키 안내 · ja 412 취소 창 직접 봄
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- windows_move_left_shot_test: 폴더를 합쳐 옮긴 뒤 알림 "n개는 원본에 남음 (건너뜀)" · 펼쳐 둔 원본 D 를 다시 읽어 남은 것만, ko · en · ja × 960 · 1400.
정식 판 후보 1b31609 로 6개 통과 (캡처 release\test\shots_v20261020_001 moveleft_*)
- windows_sshkey_shot_test: [개인 키 파일 고르기] 를 가짜 고르기로, 실제 시험 서버 (paramiko) · ssh-keygen 키로 .ppk 안내 · 고른 뒤 안내 ·
암호 필요 · 암호 틀림 · 서버 거부를 ko · en · ja × 412 로 (9f6c5c0 의 글, after_1020 으로 3개 통과, 캡처 release\test\shots_f1 sshkey_*).
[저장] 은 누르지 않음 (설정 메모리만)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 412 ja 에서 주소 예시가 한 줄로 잘려 "--api 로 켠 …" (어떤 옵션으로 켜야 하는지) 가 보이지 않았다 - helperMaxLines 3 (다른 창의 도움 글과 같게)
- 같은 창의 모델 도움 글 (ComfyUI 체크포인트 이름) 도 3줄까지
- 캡처: windows_f1_shot_test 에 ComfyUI 로 바꾼 창 (ai_comfy) 을 더함. ko · en · ja × 412 · 960 의 6개 통과, ja 412 · en 412 ComfyUI 직접 봄 - 잘림 없음
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- F1: 412 폭 en · ja 에서 👁 자리 때문에 칸 이름이 "…" 로 잘렸다 (SFTP 추가 창 "Password (leave empty if usin…")
· SFTP 비밀번호 "비밀번호" + 도움 글 "개인 키만 쓰면 비웁니다", 개인 키 암호 "개인 키 암호" + "없으면 비웁니다"
· AI 인터넷 서비스 "API 키" / "API 키 또는 아이디:비밀번호" + "넣지 않아도 됩니다"
· ZIP 으로 묶기 "비밀번호" (도움 글 "넣으면 AES-256 … 비우면 보통 ZIP" 이 선택임을 알림)
· WebDAV · SMB · FTP · 마스터 · OpenSubtitles 는 칸 이름이 이미 "비밀번호" 뿐이라 그대로. 옛 열쇠 4개 지움 (en · ja · zh)
- 131: 쿠키 안내 글 12px 흐린 회색 → ListTile 부제목과 같은 bodyMedium · onSurfaceVariant
- 시험: windows_f1_shot_test (ZIP · AI 서비스 창, ko · en · ja × 412 · 960) 추가. f1 · trunc · cookie 캡처 각 6개 통과,
72장 release\test\shots_f1 - 직접 봄 (en 412 SFTP · ja 412 AI · en 412 ZIP · ja 960 쿠키): 칸 이름 잘림 없음
- 이 고침은 다음 판 (10.20_001 노트에는 넣지 않음, 관리자 결정)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- windows_cookie_shot_test: 시험 폴더의 가짜 cookies_youtube.txt 로 앱 안 브라우저 로그인 안내 · 넘길 사이트 칩 · [쿠키 파일 지우기] 를 찍고,
고르기를 [사용 안 함] 으로 바꾸면 파일이 지워지고 안내가 숨는지 확인 (설정은 메모리만)
- 정식 판 후보 코드 1b31609 로 6개 통과, 캡처 12장 release\test\shots_v20261020_001 (cookie_*)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- windows_reset_shot_test: 마스터 · 최상 비밀번호를 가짜 저장소 (MemorySecretStore) 에 정하고 askMaster 창에 최상 비밀번호를 넣어
초기화 창으로 (예전에는 showSuperReset 을 바로 불렀다). 체크 3개 · 처음 값 [마스터만] 을 확인하고 마스터 입력 창도 찍음 (0_master)
- [초기화] 는 끝까지 누르지 않음 (정말? 창에서 닫음) - 끝에 마스터 · 최상이 그대로인지 확인
- 결과 (after_1020 024d6e0 + 이것): ko · en · ja × 412 · 960 의 6개 모두 통과, 넘침 없음, 30장 (release\test\shots_145)
- 문구 = 실제로 지우는 것: "저장된 실제 비밀번호 · API 키" = clearStoredSecrets (WebDAV · SFTP 비밀번호 · 키 · 키 암호 · SMB · FTP ·
AI API 키 · OpenSubtitles 키 · 비밀번호, 아이디 · 서버 목록 남김), "앱 설정 전체" = AppSettings() 저장 (서버 목록과 그 비밀번호 -
저장할 때 지운 서버의 열쇠를 안전 저장소에서도 지움 - 파일 탐색기 즐겨찾기 포함, videos.json · bookmarks.json 은 따로라 그대로)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- %TEMP%\jj_updtest_<표> 에 예전 판 (기본 release\stage_v2026.10.18_001) 배포 폴더와 그 판이 남겼을 데이터
(settings.json · 이 판이 모르는 키 · WebDAV 가짜 서버 jj_updtest_dav · videos.json · DPAPI secrets.dat 의 가짜 비밀번호) 를 만든다
- 통합 시험이 앱 안 업데이트 길 (시험 길 JJ_UPDATE_LOCAL_ZIP) 로 최신 확인 → [지금 설치] (가짜 누르기) → 받기 · SHA256 · 풀기 →
설정 보관 → 교체 예약
- flutter test 는 끝날 때 시험 앱이 띄운 교체 스크립트까지 끝낸다 (기록 없음 · 도는 것 0 으로 확인 - 사용자 판은 앱이 스스로 끝나
그런 일이 없음) - 그래서 앱이 써 둔 교체 스크립트를 앱이 넘긴 것과 같은 인수 · 환경으로 바깥에서 띄움
- 확인: 프로그램 교체 · 새 판이 저절로 켜짐 (따로 데이터라 시작 메뉴를 건드리지 않음) · lastRunVersion · 모르는 키 · WebDAV 서버 ·
동영상 목록 · 비밀번호 (안전 저장소) · 평문 비밀번호 없음 (설정 · .bak · 보관본 · 기록) · 예전 판 보관본 · 사용자 바로 가기 그대로 ·
시험 폴더 · 가짜 자격 증명 0개
- 결과 (10/21, 2026.10.18_001 → 2026.10.20_990 시험 빌드 = after_1020 5057267): 모두 통과
- 실제 GitHub · 사용자 %APPDATA% · 시작 메뉴 · 실행 중인 앱은 건드리지 않음. 환경 변수가 없으면 통합 시험은 건너뜀
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- rsync_page: rsync_narrow (dfed3fa) 부터 옵션 이름은 줄바꿈되지 않게 묶여 그려져
'원본 파일 지우기 (--remove-source-files)' 를 글 그대로 찾지 못함 → keepOptionsTogether 로 화면 글 그대로 찾기
- windows_b6_input (82 끌어 놓기 → [되돌리기]): 스낵바가 아래에서 올라오는 동안 (글은 이미 있음) 눌러 빗나감
(hit test 에 앱 위젯이 하나도 없음) → 되돌리기가 시작되지 않아 이동 확인 창이 안 나옴.
누르기 전에 정말 눌리는 자리에 올 때까지 기다림 (tapReady) - 실패하면 캡처 (JJ_SHOT_DIR) · 창 · 단추 · 글 목록.
측정: [되돌리기] 는 보인 뒤 1 ~ 97ms 지나야 눌림. 985 (f947935) 의 같은 시험도 3번 중 2번 똑같이 실패 → rsync_narrow 이전부터,
앱 쪽 바뀜 없음 (스낵바 · 되돌리기 코드는 985 와 같음). 사용자는 보이는 단추를 누르므로 앱은 고치지 않음
- windows_xplore_shot: 목록을 정해진 1.2초만 기다려 en 412 가 한 번 실패 → 'Show S01' 줄이 올 때까지 (최대 약 10초)
- video_adjust_e2e · windows_xplore_shot: 앱 임시 폴더 jj_mkvmaker 를 시험 폴더로 (appTempInto)
- shell: 끝까지 돌면 단계 기록 jj_shell_steps.txt 를 지움 (앱이 도중에 꺼졌을 때만 남음)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- ai_e2e: 앱 임시 폴더 (jj_mkvmaker) 가 실행 폴더에 남아 exit 2 → 새 도우미 appTempInto 로 시험 폴더 아래에 두고
시험 끝에 기준을 되돌린 뒤 함께 지움 (ai_cancel · ai_long 도 같게). 사용자 %TEMP%\jj_mkvmaker 는 건드리지 않음
- dns_block_real (· cef_dns_real · tor_dns_real): Edge (WebView2) 사용자 데이터 폴더는 heldByApp (jj_held_)
- tool/test_temp_check.ps1: 실행 폴더 지우기를 Edge 가 놓을 때까지 2초 간격 최대 30번 다시 해 봄,
rd 오류는 cmd 안에서 버림 (PowerShell 의 2>$null 이 ErrorActionPreference Stop 에서 오류가 되어 exit 1 이었음).
지우는 것은 그 실행 폴더 안뿐
- 확인: 다섯 파일 모두 -d windows · test_temp_check 로 exit 0, 남은 것 0, 실행 폴더 지워짐. analyze 문제 없음
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
다음 정식 판 후보 (관리자 지시 10/20). 겹친 곳: copy_sync_settings.dart 의 sync_preview_view import (optionProblemText + keepOptionsTogether 둘 다).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 지시 (10/20, 28 이 983 에서 찾음):
1. 412 Rsync 화면의 [오른쪽] 탭: 탭 이름은 지금 폴더인데 목록은 저장 장치 맨 위에서 시작했다 (넓게 바꿔도 그대로).
원인: 켤 때 _goTo 가 두 창 모두 지금 폴더까지 펼치고 스크롤하는데, 좁은 화면은 왼쪽 창만 그려 오른쪽 창의 스크롤은 아직
화면에 붙지 않아 건너뛰었다. 고침: 창의 목록이 화면에 새로 붙을 때마다 (탭을 처음 볼 때 · 폭이 바뀌어 두 창이 될 때) 그 창의
지금 폴더를 보이게 (_revealNewViews · _revealNow). 폭이 바뀌면 LayoutBuilder 만 다시 불리므로 그 안에서 부른다.
2. en 412 확인 창의 체크 제목 "Delete source files (--remove-source-files)" 가 "(--" 에서 갈렸다. keepOptionsTogether: 글 안의 옵션
덩어리만 (괄호째 · 따로 쓴 --이름 · -u · /PURGE) unbreakableOption 으로 묶고 나머지는 그대로 줄바꿈. 옵션 이름이 든 다른 제목 ·
체크 · 설명에도: 받는 쪽에서 n개가 지워집니다 (--delete …) · 거른 것 n개도 지워집니다 (--delete-excluded) 와 그 설명 ·
⇄ 의 (-u) · 받는 쪽이 더 새것이면 건너뛰기 (-u · /XO) · 원본에 없는 것을 대상에서 지우기 (--delete · /PURGE).
시험: explorer_parallel_test (28 장면: 맨 위에 폴더 80개 · 지금 폴더는 깊은 곳 - 왼쪽 · [오른쪽] 탭 · 넓게 · 다시 좁게 모두 지금 폴더가
보임, 고치기 전에는 [오른쪽] 탭에서 실패) · sync_preview_view_test (keepOptionsTogether). 이 글을 찾는 시험 5개는 같은 도우미를 거친
글로. 캡처 windows_rsync_narrow_shot_test ([오른쪽] 탭 · 확인 창, ko · en · ja × 412 · 960, 넘침 0) → release\test\shots_rsync_narrow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 판단 (10/20): 서버가 중간에 멈추면 복사 · 동기화가 영원히 멈추던 것 (15 가 FTP 에서 찾음 - 명령의 답에만 시간 제한).
- lib/core/remote_idle.dart: idleRead (조각 사이) · idleWrite (보내는 쪽이 한 조각도 더 가져가지 않거나 다 보낸 뒤 답이 없음) ·
idleCall (요청 하나). 넘으면 그 연결을 끊고 RemoteIdleTimeout "서버가 답하지 않습니다 (n초)".
- FTP: 자료 연결 받기 (await for) · 올리기 (addStream). SFTP: 파일 읽기 · 쓰기와 모든 명령 (목록 · 열기 · 닫기 · 지우기 등) -
멈추면 그 연결을 닫고 다음에 다시 연다. SMB: 조각 읽기 · 쓰기 채널 호출. WebDAV: 받기 · 올리기와 모든 요청의 답 (머리 · 몸).
- 올리다 실패하면 서버의 받다 만 .jjpart 지우기도 정한 시간까지만 (못 지우면 다음 정리 71).
- 설정 "원격 서버 응답 기다리기" (환경 설정 > 파일 탐색기): 30 · 60 (처음) · 120 · 300초, 그 밖의 값은 60. 번역 en · ja · zh.
- 버그 수정 (멈추는 서버 시험으로 찾음): 원격에서 로컬로 받다 실패하면 임시 파일을 닫고 지운 뒤 finally 에서 한 번 더 닫다가
난 "File closed" 가 진짜 이유를 덮어썼다 (vWrite) - 이제 원래 이유 그대로.
시험 remote_idle_test: 멈추는 시험 서버로 정한 시간 (시험은 1초) 뒤 실패 - FTP (Dart 로 만든 서버: 보내다 멈춤 · 받다 멈춤,
로컬에 받다 만 파일 없음), WebDAV (머리 없음 · 몸 멈춤 · 받기 멈춤 · .jjpart 지우기 부탁), SFTP (paramiko + 멈추는 중계: 받는 중 ·
열기 · 올리는 중), 도우미 · 설정. smb_test: 가짜 채널이 답하지 않음 (열린 것은 닫음).
캡처 windows_remote_idle_shot_test (ko · en · ja × 412 · 960, 넘침 0) → release\test\shots_remote_idle.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 지시 (10/20, 데이터 쪽): 예전에는 이 규칙들을 "미리 볼 수 없음" 으로 두고 경고만 했다. 이제 rsync (man rsync FILTER RULES ·
exclude.c) 와 같게:
- 규칙마다 걸리는 쪽 (RuleSide): 그냥 + · - 는 양쪽, H (hide) = -,s · S (show) = +,s 는 보내는 쪽 (보낼 것 고르기) 에만,
P (protect) = -,r · R (risk) = +,r 은 받는 쪽 (지울 것 고르기) 에만. ",sr" 은 양쪽. 긴 이름 (hide · show · protect · risk) 도.
- 쪽마다 그 쪽에 걸리는 규칙만 위에서부터 보고 처음 맞는 것이 이긴다 (RsyncFilter.excluded = 보내는 쪽, protects = 받는 쪽).
- --delete-excluded 면 쪽을 적지 않은 규칙은 보내는 쪽에만 (rsync 와 같음 - 예전 동작과도 같은 결과).
- 지울 때 (previewSync · _mirrorV · 실시간 동기화 diff/_gone) 는 "거른 것 · --delete-excluded 아님" 대신 protects 로 지킨다:
보내는 쪽에서만 거른 것 (H · -,s) 은 보내지 않았으므로 --delete 면 지운다 (28 의 a.txt 와 같은 일을 이제 미리 보기가 보임).
- 그 밖의 고치개 (,! · ,p · ,x · ,e 등) · H/S/P/R 에 붙은 고치개 · merge · "!" · exclude-from 파일 안의 규칙 머리는 그대로 미리 볼 수 없음.
기준 시험 rsync_phsr_test: 규칙 장면 31개 (양쪽에 같은 이름이 많은 장면) 마다 실제 rsync 를 돌린 (-n 아님) 결과 트리와
① 미리 보기로 예측한 트리 ② 원격 맞추기 (WebDAV) ③ 실시간 동기화 로컬 쌍 (묻는 목록 = rsync 가 지운 것 · 맞춘 뒤 맞출 것 없음)
④ 실시간 동기화 WebDAV 쌍 - 모두 같음. protects 를 예전처럼 (쪽 무시) 바꾸면 25개 장면이 다르게 나오는 것도 확인 (시험이 잡음).
바꾼 시험: rsync_filter_test (이 규칙들은 미리 볼 수 있음 · 15 재현은 이제 미리 보기도 a.txt 지움), P0 시험 · 경고 창 시험 ·
P0 캡처는 아직 따르지 못하는 merge 규칙 (파일 안에 "H a.txt") 으로, P 는 이제 따르므로 "묻는 목록에 지킨 것 없음" 으로.
smb_test 의 28 장면 시험에 5분 (여러 시험을 함께 돌리면 기본 30초를 넘음).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 3a 지시 (10/20, 28 재현 - 데이터 버그 수정): 로컬 rsync 쌍 · 지우기 포함 · 옵션 --filter="-,s a.txt" (또는
"H a.txt" · -f"H a.txt") 에서 묻는 목록은 [extra.txt, old.log] 인데 [지우기] 를 누르면 a.txt 도 지워졌다 (실제 rsync 는
보내는 쪽만 빼기 · 숨기기를 받는 쪽에서 지울 것으로 봄). "P *.txt" 는 반대로 지킨 것을 끝없이 물었다.
- 지우기 포함 rsync 쌍의 옵션에 미리 볼 수 없는 규칙 (RsyncFilter.unsupported) 이 하나라도 있으면 자동 맞추기는 --delete
계열 없이 (보내기만) 하고 묻지도 않는다 (목록이 실제와 달라서). 맞출 것 · 대상에만 있는 것도 지우기 없이 센다.
- 카드에 빨간 "이 옵션의 일부 거르기 규칙은 미리 볼 수 없어 자동으로 지우지 않습니다 (규칙)" · [지금 지우기 (확인)].
그 창은 FilterLimitNote (빨간 "실제로 더 지워질 수 있습니다") 와 [알고 실행합니다] 체크가 있어야 [지우고 맞추기] -
이번 한 번만 지우고 다음 자동 맞추기는 다시 보내기만.
- 묻는 창 (confirmLiveDeletes) 도 같은 창을 써서 규칙이 있으면 FilterLimitNote · 체크.
- P (지키기) 는 따로 따르지 않고 위와 같이 다룸 (경고 · 저절로 지우지 않음 · 끝없이 묻지 않음) - 지킨 것을 목록에서 빼려면
P · R 과 다른 규칙의 순서 (받는 쪽 규칙) 를 맞춰야 해서 이번에는 하지 않음.
시험: live_sync_scene_test P0 - 세 가지 규칙 × 새 쌍 · 확인한 쌍을 실제 rsync 로 (먼저 실제 rsync 가 a.txt 를 지우는 것 확인
→ 자동 두 번은 아무것도 지우지 않음 · 묻지 않음 · − 줄 없음 → 지금 지우기 한 번 → 다음 자동은 다시 보내기만), P 규칙 세 번,
미리 볼 수 있는 규칙만이면 예전처럼, 창 (빨간 줄 · 체크 전 버튼 꺼짐 · [지우지 않기] 없음). LiveSync 시험 157개 통과.
캡처: windows_lsync_p0_shot_test (카드 · 지금 지우기 창, ko · en · ja × 412 · 960, 넘침 0) → release\test\shots_lsync_p0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 3a 판단 (10/20, 데이터 쪽이라 안전한 쪽으로): 로컬 · 원격 쌍 모두.
- 쌍에 확인할 때의 rsync 옵션을 기억 (LiveSyncPair.confirmedOptions, 설정 파일에 저장 - 틀린 값은 없는 것으로).
- 맞추기 전에 지금 옵션이 기억한 것과 다르면, 두 옵션으로 지울 것을 견주어 늘었으면 (--delete-excluded · --exclude ·
--filter 를 바꿔 새로 지워질 것이 생김) 지우지 않고 맞춘 뒤 다시 묻는다 (42 와 같은 창, 주황 "옵션이 바뀌어 지울 것이
늘었습니다" 줄). 늘지 않았으면 묻지 않고 지금 옵션을 기억.
- 이 값이 생기기 전에 확인한 쌍은 예전 동작 (--delete-excluded 를 따르지 않음) 과 견준다 - 업데이트 뒤 --delete-excluded 로
새로 지워질 것이 있으면 묻고, 없으면 기억만 (처음 한 번 설정을 저장).
- 확인 창 높이를 화면 높이에 따라 (360 ~ 520) - 412 세로에서 거른 것 묶음이 잘려 보이던 것 (캡처로 찾음).
시험: live_sync_scene_test (로컬, 실제 rsync - 늘지 않는 바꿈 · --delete-excluded 더함 · 거르기 뺌 · 예전 쌍 · 설정 저장),
webdav_test (원격 쌍). LiveSync 를 쓰는 시험 14개 파일 148개 통과. 캡처 windows_live_excl_shot_test 를 다시 묻는 창으로
(ko · en · ja × 412 · 960, 넘침 0) → release\test\shots_live_excl.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 3a 조건 (10/20, 954703c 의 판단 ③ 을 받아들이며): 사용자가 알고 누르게.
- diff · _diffV · _gone 이 지울 것 가운데 --delete-excluded 때문에 지워지는 것 (거른 것 · 거른 것이 든 폴더) 을 따로 모음
→ LiveSync.toDeleteExcluded. 확인 창 (confirmLiveDeletes) 은 그냥 지울 것 다음에 "거른 것 n개도 지워집니다
(--delete-excluded)" · 설명 (지키려면 옵션에서 빼기) · 그 목록을 빨갛게. 번역 en · ja · zh-Hans.
시험: live_sync_scene_test - 28 장면마다 따로 묶은 것 (없어야 할 때 없음 · 지울 목록 안 · *.bak / *.log 장면은 정확히),
창의 묶음 제목 · 순서. 캡처: windows_live_excl_shot_test (ko · en · ja × 412 · 960, 넘침 0) → release\test\shots_live_excl.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 지시 (10/20, 28 이 next5 6b60f34 확인에서 찾음):
1. 마그넷에 이름 (dn=…) 이 있으면 메타데이터를 받기 전에도 줄 제목에 그 이름 (magnetName: 주소 글 풀기 · + 는 빈칸 ·
줄바꿈 · 제어 문자는 빈칸, 없으면 예전처럼 주소). 메타데이터를 받으면 토렌트 이름으로 바뀌는 것은 그대로.
2. 멈춘 줄 (주황 "트래커 · 피어에 닿지 않습니다") 의 진행 막대: 움직이는 "준비 중…" 대신 멈춘 막대 · 주황 · "멈춤"
(이미 있는 번역 "Stopped" · "停止" · "已停止"). 멈춤이 풀리면 원래대로.
시험: downloads_ui_test (magnetName · 줄 제목 · 멈춤 막대 value 0 · pumpAndSettle 이 끝남 = 움직이지 않음).
캡처: integration_test/windows_magnet_shot_test (ko · en · ja × 412 · 960, 넘침 0) → release\test\shots_magnet_ui.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>