- G1 (관리자 승인 10/21, 15 찾음): 받는 중에 종료할 때 창 제목이 360 에서 넘쳐 개수와 [✕] 가 잘림 → 제목은 두 줄까지, [✕] 늘 보임
- G2 (관리자 승인 10/21, 15 찾음): 비교 화면 위 막대가 넘쳐 제목이 안 보이고 [저장] 글자가 잘림 →
폭 600 미만이면 원본 / 올린 것 고르기를 위 막대 아래 둘째 줄로, [저장] 은 글자 그대로. 넓으면 그대로
- 시험: windows_hdr360_shot (ko · ja × 360 · 412). 종료 창의 "받는 중" 상태는 가짜 받기 백엔드로 만듦 (배치만 확인)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- F9 (관리자 지시 10/21, 15 찾음): 412 에서 표가 오른쪽으로 넘침 → 좁으면 위 단 # · 시작 · 끝,
아래 단 내용 + 단추 (기본 누를 자리 그대로, 오른쪽 끝). 시간 칸은 줄이지 않음
- F11 (관리자 승인 10/21): 360 에서 [✕] 가 화면 밖 → 좁으면 제목은 줄이고 (…), [모두 초기화] 는 아이콘 단추
(도움말 이름 그대로, 누르면 같은 동작), [✕] 는 늘 보임. 안내 글은 숨기지 않고 제목 아래 줄로 (내 판단). 넓으면 그대로
- 시험: windows_ui2_shot (ko · ja × 360 · 412 · 960) - 넘침 없음 · ✕ 화면 안 · 단추 누를 자리
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 화면 · 색 보정 창 (28): 고른 비율 칩 ("세로 9:16" 등) 은 그림이 있는 칩이라 기본 체크가 그림 위에 겹쳤다 → 고르면 그림 자리에 ✓ 만
(showCheckmark: false). 맞추기 · 회전 칩은 원래 ✓ 만
- 자막 편집 화면 (28): 960 에서도 "자막 편집 · …" 로 잘려 파일 이름이 안 보였다 → 제목은 "자막 편집", 파일 이름은 그 아래 한 줄
(path_label.middleEllipsis 로 가운데를 줄여 끝 .srt 가 보임, Tooltip 으로 길게 누르면 · 마우스를 올리면 전체). 열쇠 '자막 편집 · {0}' → '자막 편집'
- F9: 자막 편집 표의 칸 폭 (# 48 · 시작 130 · 끝 130 · 단추 96) 이 412 에서 넘쳤다 (24 · 27px) → 내용 칸까지 한 줄에 들지 않으면 두 단
(위: # · 시작 · 끝 · 단추, 아래: 내용). 시간 칸은 줄이지 않고, 두 단일 때 # 칸 28 · 단추 누를 자리 40 으로 위 단이 412 에 듬. 넓으면 그대로
- F10: 화면 · 색 보정 미리보기의 파일 이름 · 시각 글이 412 에서 [누르고 있으면 조정 전] 위에 겹쳤다 → 좁을 때 (< 560) 만 미리보기 위쪽으로
(한 줄 · 줄임, 돌아가는 표시 자리는 비움). 단추 자리는 그대로
- ftp28 (28 원문: 부하 중 시험 서버가 처음 연결에 16초 답하지 않음): 시험 도우미가 처음 연결 (서버 준비) 이 "닿지 않음" 일 때만 2초 뒤
한 번 다시 시도, 맞추기 도중 실패 · 비교 차이는 다시 시도하지 않음. 다시 시도했으면 jj_ftp28_fail 기록에 "다시 시도함" (통과해도)
- 캡처 windows_ui2_shot_test (ko · ja × 412 · 960): 칩 ✓ 만 · 제목 "자막 편집" · 파일 이름 끝 .srt · 넘침 없음 - 4개 통과, 직접 봄.
ftp_test · ui_test 15개 통과, l10n 빠진 것 0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- SettingsStore.secretForms: 이 판이 만드는 비밀 열쇠의 꼴 목록 (os.key · os.user · os.password · dav.servers · dav.pw.<id> · sftp.pw|key|kp.<id> ·
smb.pw.<id> · ftp.pw.<id> · ai.key.<id>). ownsSecret 은 이 목록으로 (54eb692 와 같은 뜻, 꼴의 . 은 글자 그대로)
- _secretsOf · ownsSecret 옆에 규칙 주석: 새 종류의 비밀 값은 지금 꼴과 앞부분이 겹치지 않는 새 머리글 (dav2. 등) - 겹치면 예전 판이 저장할 때 지움.
새 꼴은 secretForms 에도 더함
- 시험 settings_store_test: 모든 종류를 채워 저장한 열쇠 11개가 저마다 꼴 하나에만 맞고 꼴마다 쓰임 · sec. 은 설정 꼴이 아님 ·
dav.token.x · dav.pwx 는 꼴 밖. 관련 7파일 79개 통과
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>
- 원인: 자막 줄은 한 줄 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>
- 이미 있던 것 (그대로): 서버 설정 [개인 키 파일 고르기] · 키 암호 칸, 키 내용은 안전 저장소 (sftp.key.<id> · sftp.kp.<id>) 에 두고
파일 경로는 저장하지 않음, 설정 파일 · .bak · 보관본에는 평문 없음 (redactSecrets). "개인 키 붙여넣기" 는 없어 합칠 것 없음. 셸은 넣지 않음
- 더한 것: SftpFailure 에 keyFormat · keyPassphrase · keyRejected
· checkPrivateKey: OpenSSH · PEM RSA · PEM EC (dartssh2 4.1.0 이 읽는 꼴) 인지, 암호가 걸렸는지. PuTTY (.ppk) 는 PuTTYgen 으로 바꾸는 법,
PKCS#8 · 공개 키 (.pub) · 다른 파일은 고를 꼴을 알림 - [개인 키 파일 고르기] 에서 바로 (암호가 걸린 키면 "아래에 키 암호를 넣으세요")
· parsePrivateKey: 암호가 걸렸는데 비었으면 "키 암호를 넣으세요", 못 풀면 "암호가 맞지 않습니다" (PEM 의 다른 오류도), 그 밖은 꼴
· 키만으로 들어가다 SSHAuthError 면 "서버가 이 키를 받지 않습니다 (authorized_keys · 아이디)", 비밀번호도 있으면 "모두 거부"
- 시험 (실제 paramiko 서버 · Windows ssh-keygen): ed25519 OpenSSH (암호 · 없음) · rsa OpenSSH 암호 · rsa PEM · ecdsa OpenSSH 암호 ·
ecdsa PEM 6종으로 로그인, 짝이 없는 키 = keyRejected, 암호 없음 = keyPassphrase, PuTTY · PKCS#8 · 공개 키 · 다른 파일 = keyFormat.
틀린 키 암호 시험은 kind 를 keyPassphrase 로. sftp · sftp_stream 14개 통과, l10n 빠진 것 0
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>
- [앱 설정 전체] 둘째 줄: "다른 판에서 만든 설정도 지웁니다 (다른 판이 넣은 비밀번호는 [저장된 실제 비밀번호 · API 키] 를
함께 골라야 지워집니다)." (en · ja · zh 같은 뜻, 체크 이름은 각 언어의 실제 이름으로)
- 두 설명 첫 줄 끝에 마침표 (ko · en ".", ja · zh "。") - 창 안 설명 줄이 모두 마침표로 끝남. 체크 · 창 제목은 이름이라 그대로
- 캡처 shots_145 다시 (ko · en · ja × 412 · 960 의 6개 통과, ja 412 넘침 없음). l10n 빠진 것 0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 틈: _writeSecrets 가 머리글 (os. · dav. · ai. · sftp. · smb. · ftp.) 만 보고 지금 설정에 없는 열쇠를 지웠다. 새 판이 같은 머리글로
새 종류의 열쇠를 쓰면 예전 판으로 되돌려 저장할 때 사용자 비밀번호를 잃을 수 있었다 (40 의 비밀 값 쪽)
- SettingsStore.ownsSecret 을 정확한 꼴로: os.key · os.user · os.password · dav.servers ·
dav.pw.<id> · sftp.pw|key|kp.<id> · smb.pw.<id> · ftp.pw.<id> · ai.key.<id> ([_secretsOf] 가 만드는 것과 같음).
지우는 것은 이 꼴 중 그 서버 · 항목이 설정에서 없어지거나 비운 것만
- 초기화의 [저장된 실제 비밀번호 · API 키] (clearForeignSecrets) 는 그대로 sec. 밖을 모두 지움
- 시험 settings_store_test: 모르는 꼴 (dav.token.d1 · sftp.cert.s1 · nfs.pw.n1) 은 보통 저장 · 다시 켜 저장 뒤에도 남음,
서버 s1 을 지우면 s1 의 pw · key · kp 만 없어지고 s2 · 모르는 꼴 · sec. 은 그대로, clearForeignSecrets 는 3개 지우고 sec. 만 남김.
관련 9파일 81개 통과
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 까닭 (3a): 사용자가 직접 "전체" 를 골랐고, 새 판으로 돌아갔을 때 예전 값이 되살아나면 더 헷갈린다.
모르는 키를 남기는 규칙 (40) 은 보통 저장 때만 - resetAllSettings 는 AppSettings()..extra = {} 로 (뜻을 드러냄)
- 안전 저장소: 이 판이 맡지 않는 열쇠 (os. · dav. · ai. · sftp. · smb. · ftp. · sec. 밖 = 다른 판이 쓴 것) 는
[저장된 실제 비밀번호 · API 키] 를 골랐을 때만 지움 (SettingsStore.clearForeignSecrets, clearStoredSecrets 끝에서). 마스터 · 최상 (sec.) 은 남김
- 초기화 창 설명에 한 줄씩: "다른 판에서 넣은 비밀번호 · 키도 지웁니다." · "다른 판에서 만든 설정도 지웁니다." (en · ja · zh, 새 줄로)
- 시험: master_lock_test - 모르는 키 · 다른 판 열쇠가 있는 설정 → 보통 저장은 남김 → 전체 초기화는 키 없음 · 열쇠는 남음 →
저장된 비밀번호 지우기는 열쇠도 지움 · sec. 남김. 초기화 창 캡처 다시 (ko · en · ja × 412 · 960, 넘침 없음)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- JJ_UPDATE_LOCAL_ZIP=<zip 경로>;<sha256> - 시험용 데이터 폴더 (JJ_MKVMAKER_DATA) 로 켰을 때만 받음 (사용자 판에서는 무시)
- 최신 확인 · 버전 목록 · 받기가 그 zip 을 씀 (GitHub 를 부르지 않음). 판은 zip 이름 (JJ_MKVMaker_v<판>_win64.zip) 에서.
그 뒤 SHA256 검사 · 풀기 · 교체 스크립트 · 다시 켜기는 정식 길 그대로
- 화면: 이름 "[시험 길] v<판>", 바뀐 내용 첫 줄에 시험 길 설명과 zip 경로 (en · ja · zh)
- 거절: sha256 이 없거나 꼴이 틀림 · zip 과 다름 · 시험 길이 아닌데 file: 주소
- 시험: update_test (따로 데이터 없음 = 무시, sha256 없음 · 틀림 거절, 닿지 않는 apiBase 로 확인 · 목록 · 받기, 원래 zip 그대로)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 원인: 앱은 켤 때마다 StartMenu.ensure() (설정을 끄면 remove()) 로 사용자 시작 메뉴의 JJ_MKVMaker.lnk 와
HKCU\Software\Classes\jjmkvmaker 를 지금 실행 파일로 바꾼다. JJ_MKVMAKER_DATA (시험판 · 시험의 따로 데이터) 로 켜도 그랬다
- 시험 폴더의 판을 켜면 사용자 바로 가기 · 알림 누르기가 그 판을 가리키고, 시험 폴더를 지우면 깨졌다 (10.18_001 도 같음)
- "따로 데이터" 는 코드에서 JJ_MKVMAKER_DATA 하나뿐 (시험판 표시 파일 없음) - 그때 StartMenu 가 사용자 영역을 건드리는
ensure (바로 가기 · 주소 연결) · remove 를 막음. 시험이 따로 준 바로 가기 파일만 쓰는 부름은 그대로.
켤 때 작업 기록에 한 줄, 환경 설정의 [시작 메뉴에 등록] 아래 글도 그 사실로 (en · ja · zh)
- 사용자 판 (JJ_MKVMAKER_DATA 없음) 동작은 그대로
- 시험: 명령 실행을 가짜로 바꿔 (StartMenu.run) 막힌 동안 아무것도 부르지 않음 · 바로 가기 파일도 시험 폴더로
(shortcutPathOverride - 시험이 잘못돼도 사용자 것을 지우지 않게). 시험 전후 사용자 바로 가기 · 주소 연결이 그대로인지 확인함
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 지시 (10/20, 28 이 f43f067 에서 확인 - 지운 것은 없음):
1. 회귀: ed459a0 이 목록 · 기록 · 배치 파일의 \\localhost\C$\… 를 //localhost/C$/… 로 바꿔 넘겨 rsync 가 "failed to open exclude
file" (exit 11) 로 멈췄다 (985 는 \\ 그대로라 됨). 15 가 앱이 실제로 띄우는 방식 (응답 파일 · MSYS=noglob, rsync 3.5.1) 으로 자리마다
확인 - 28 의 측정과 같음: 원본 = // 만 됨 (\\ 는 exit 23), 받는 쪽 = \\ 만 됨 (// 는 change_dir 실패 exit 3), 목록 · 기록 파일 =
\\ 만 됨 (// 는 exit 11 · 기록이 안 생김).
- rsyncFileOptionArgs: UNC 는 \\ 로 (//서버 로 적은 것도 \\ 로 바꿈), 드라이브는 /cygdrive/… 그대로.
- 받는 쪽: 새 rsyncDestPath - UNC 면 \\서버\… (rsyncArgs 의 대상 · 실시간 동기화 rsyncArgsFor 의 받는 쪽). 원본은 toCygwinPath (//) 그대로.
ed459a0 전부터 Windows 네트워크 공유가 받는 쪽인 rsync 는 실패했다 (관리자 판단: 데이터 문제는 아니지만 사용자가 겪는 실패라 rc 에).
2. 모니터링 복사 · rsync 카드: 옵션이 막혀 빨간 안내가 보이면 [▶ 실행] 도 끈다 (확인 창과 같게 - 누르면 실패로 끝났다).
3. --files-from=- · --exclude-from=- (표준 입력) 은 따로 된 문구 "표준 입력 (-) 은 쓸 수 없습니다" · 끝 문구 "목록 파일의 전체 경로를
적어 주세요" (예전에는 "적어 주세요: - - C:\ …" 로 하이픈이 겹침).
시험: rsync_msys_args_test (실제 rsync - 관리 공유 \\localhost\C$ 로 원본 · 받는 쪽 UNC 와 목록 파일 \\ · // 를 복사 작업으로, 받는 쪽 UNC
실시간 동기화 쌍 · 바꿔 넘기기 단위 · 표준 입력 문구) · monitor_test (막히면 [실행] 꺼짐 · 고치면 켜짐).
전체 시험 1142 통과 · 1 실패 (explorer_test "여러 개 표시 → 삭제 · 새 폴더 · 이름 변경" - 이번 고침과 상관없음, 혼자 두 번 통과 ·
ed459a0 의 전체 시험에서도 통과 - 부하 흔들림) · analyze 문제 없음 · l10n 빠진 번역 0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 지시 (10/20, 28 이 985 에서 확인):
1. --exclude-from · --include-from · --files-from · --filter / -f 의 ". 파일" · merge · --log-file · --write-batch · --read-batch ·
--only-write-batch 의 값이 C:/… 이면 앱은 통과시키는데 rsync (MSYS2) 가 "failed to open exclude file" (exit 11) 로 실패했다
(지운 것은 없음). 관리자 판단: 막지 말고 바르게 넘긴다 - rsyncFileOptionArgs 가 그 값의 C:\ · C:/ · UNC 를 toCygwinPath 로
(rsyncArgs · 실시간 동기화 rsyncArgsFor). 패턴 · ": 이름" · 받는 쪽 기준 옵션 (--backup-dir 등) · -e 의 값은 그대로.
2. Windows 는 드라이브 (C:\ · C:/) · UNC · /cygdrive/ 만 전체 경로 - 그 밖의 / 는 MSYS 가 자기 설치 폴더 기준으로 읽어 막는다.
끝 문구: Windows "C:\ 처럼 드라이브로 시작하는 전체 경로로", Android "/ 로 시작하는 전체 경로로".
3. [실행] 이 막힐 때 (알아볼 수 없음 · 상대 경로 등) 는 "미리 볼 수 없습니다" 줄과 [알고 실행합니다] 체크를 숨기고 막히는
이유 한 줄만 (Rsync 화면 확인 창 · 지우기 포함 실행 확인 창).
4. "원본 파일 지우기 (--remove-source-files)" 가 412 ko · ja 에서 옵션 중간에 갈리던 것: rc 에 든 dfed3fa (keepOptionsTogether)
로 이미 고쳐짐 - 캡처 shots_rsync_narrow (ko · ja · en 412) 로 확인.
5. "---delete" 의 끝 문구는 "옵션은 - 나 -- 로 시작합니다".
시험: rsync_msys_args_test (실제 rsync - C:/ · C:\ · 다음 낱말 · merge · -f. 로 적은 목록의 keep.txt 를 지킴, --log-file=C:/… 에
기록이 생김 · 바꿔 넘기기 단위 · Windows 의 / 막기 · 끝 문구) · dismiss_test (막힐 때 미리 볼 수 없음 · 체크 숨김) ·
option_paste_test (---delete 문구). 전체 시험 1140개 통과 (17 건너뜀) · analyze 문제 없음 · l10n 빠진 번역 0.
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>
합침 (d3): 상대 경로 막기를 optionProblems 의 새 종류 relativePath 로 (안내 끝 문구 "드라이브 (C:) 나 / 로 시작하는 경로로", 내 판단).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 지시 (10/20, 28 확인): 상대 경로면 응답 파일 임시 폴더에 생겼다가 함께 지워져 사용자가 기록을 찾지 못함 - "기록 · 배치 파일은 전체 경로로 적어 주세요". --backup-dir · --partial-dir · --temp-dir · --compare-dest 류는 받는 쪽 기준이라 그대로 (시험에 둠). 번역 en · ja · zh.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 판단 (10/20, 7160577 에 이어): rsync 는 자기 작업 폴더 (Windows 는 응답 파일 폴더) 기준으로, 미리 보기는 앱의 작업 폴더
기준으로 상대 경로를 읽어 서로 다른 목록 파일을 볼 수 있다. unreadableOptions 가 막는다 (옵션 칸 · 확인 창 · 모니터링 빨갛게, 실행 ·
실시간 동기화 막음).
- 대상: --exclude-from · --include-from · --files-from (= 와 다음 낱말), --filter / -f (붙여 · 다음 낱말 · 짧은 묶음 -avf) 의
". 파일" · "merge[,고치개] 파일". 전체 경로 = C:\ · C:/ · \서버 · / (/cygdrive/… · Android).
- 빼는 것: ": 이름" · dir-merge · -F (폴더마다 읽는 규칙 파일 이름 - 원래 상대), --exclude 의 값 (패턴).
시험: rsync_msys_args_test (막는 것 10 · 막지 않는 것 11). dismiss_test · live_sync_scene_test 의 merge 규칙을 전체 경로로.
거르기 · 맞추기 · 실시간 · 복사 시험 25개 파일 382개 통과.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
합침 (d3): unreadableOptions 는 optionProblems 를 거친다 (b1a43c3 의 종류별 안내). 15 의 windows 매개변수 · 큰따옴표 막기를
optionProblems 로 옮기고, 안내는 새 종류 doubleQuote "큰따옴표 (\") 를 빼 주세요" (내 판단).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 지시 (10/20, 28 재현 - 데이터, 정식 판에도 있음): Windows 의 rsync (MSYS2 런타임, 3.5.1) 는 Windows 프로그램이 넘긴
명령 줄을 스스로 다시 읽는다. 앱의 인수는 맞는데:
- ' 를 따옴표로 짝지어 인수를 합침: -a --delete --exclude="it's.txt" --exclude="Bob's.txt" 가 한 인수가 되어 거르기가 사라지고
it's.txt · Bob's.txt 가 지워짐 (미리 보기는 "남음"). ' 하나면 rsync 가 실패, ' 가 든 경로 (한쪽 · 양쪽) 는 합쳐져 실패.
- * ? [ ] { } 를 작업 폴더의 파일로 펼침: --exclude *.log 가 작업 폴더의 x.log y.log 로 바뀌어 거르기가 빗나감.
실험 (실제 rsync): MSYS=noglob 은 글로브만 막고 ' 짝짓기는 그대로 (CYGWIN=noglob 은 소용없음). Dart 는 빈칸 · 큰따옴표가 없는
인수를 따옴표로 감싸지 않고, 감쌀 때의 \" 를 MSYS 는 다르게 읽어 명령 줄로는 고칠 수 없음. 응답 파일에 인수마다 큰따옴표로 감싸
넣고 (안의 \ 는 그대로) "@args.txt" 로 넘기면 ' · * ? [ ] { } · 빈칸 · 한글 · \ · @ 가 모두 그대로 감. 응답 파일 경로에 빈칸 · ' 가
있으면 @ 가 먹히지 않아 그 폴더를 작업 폴더로 하고 상대 이름으로 넘김.
- lib/core/rsync_launch.dart: prepareRsyncLaunch (Windows 만 - Android 는 그대로) · 끝나면 지움. 기존 MSYS 값에 noglob 을 더함.
- 띄우는 곳 둘 다: TransferJob (복사 · Rsync 화면 · 모니터링 [실행] · 최종 정리 - robocopy 는 그대로) · LiveSync (실시간 동기화).
미리 보기는 rsync 를 쓰지 않는다.
- 큰따옴표 (") 가 든 인수는 응답 파일로도 그대로 못 넘김 (Windows 파일 이름에는 없음): 옵션 칸 · 확인 창 · 모니터링에 빨갛게
(unreadableOptions, Windows 만) · 띄울 때도 막고 이유를 보임.
- 알아 둘 것: rsync 의 작업 폴더가 응답 파일 폴더가 되어, 옵션의 상대 경로 (--exclude-from=목록.txt) 는 그 폴더 기준 (예전에도
앱의 작업 폴더라 정해지지 않았음 - 절대 경로를 쓰는 것이 맞음).
시험 rsync_msys_args_test (실제 rsync): ' 두 개 · 하나의 --exclude, ' 가 든 원본 경로 · 원본 · 대상 경로 · 경로 + exclude, 따로 쓴 *
· ? · [ ] · { }, [ ] · { } · 빈칸 · 한글 경로, 실시간 동기화 쌍, 응답 파일 지우기, 도우미 · 큰따옴표 막기. 고치기 전에는 7개 실패.
거르기 · 맞추기 · 실시간 · 복사 시험 25개 파일 · rsync_page_test (Windows 통합) 통과.
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>
28 확인 (10/20, c593440 독립 확인 22개 중 1개 - 안전한 쪽으로 다름): -a --delete --filter="R keep/extra.txt" --filter="P keep/***",
받는 쪽에만 keep/extra.txt · keep/sub/deep.txt 가 있으면 실제 rsync 는 keep/extra.txt 만 지우는데, 미리 보기 · 실시간 동기화의
묻는 목록은 keep/sub/ 까지 지운다고 보였다 (맞춘 뒤에도 지울 것으로 남음).
원인: "이름/***" 의 끝을 떼고 나면 패턴에 / 가 없어 이름으로만 맞췄다 - keep/sub 는 이름이 sub 라 맞지 않음. 원래 패턴에 / 가
있으므로 rsync 처럼 경로 (끝부분) 로 맞춘다. 보내는 쪽에서는 거른 폴더 안으로 내려가지 않아 드러나지 않았다.
rsync_phsr_test 에 28 의 장면 (keep/k.txt · 받는 쪽 keep/extra.txt · keep/sub/deep.txt) 과 *** 장면 4개 - 고치기 전에는 32 · 33 번 실패.
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>
관리자 지시 (10/20) 2번 중 28 의 장면 (옵션 28개) 을 실시간 동기화로 돌려 찾음 (버그 수정):
- 로컬 쌍의 diff 는 거르기를 전혀 따르지 않아, rsync 가 보내지 않는 것을 "맞출 것" 으로 늘 세고, 받는 쪽의 거른 것
(예: --exclude=*.log 의 keep.log) 까지 지울지 물었다 (rsync 는 지우지 않음).
- 원격 쌍 (_diffV) · 로컬 쌍 모두: 받는 쪽에만 있는 폴더에 거른 것이 들어 있으면 "− 폴더" 한 줄로 셌다 - 묻는 창에 폴더가
통째로 지워지는 것처럼 보이고, 맞춘 뒤 (폴더는 남으므로) 맞출 것에 계속 남았다. 이제 rsync · _mirrorV 처럼 그 안의
거르지 않은 것만 (_gone · _hasExcluded 를 둘이 같이 씀).
- 로컬 쌍의 rsync 인수가 --delete-excluded 를 늘 뺐다 (97 의 지우기 빼기에 걸림) - 묻는 창에는 지운다고 보이고 실제로는
남았다. 내 판단: 쌍이 "지우기 포함" 일 때만 남김 (원격 쌍 · Rsync 화면과 같게, 지우기 전 확인 (42) 은 그대로). 지우기 없는 쌍은 그대로 뺌.
시험: live_sync_scene_test (로컬, 실제 rsync) · webdav_test (WebDAV 쌍) - 결과 트리 = 실제 rsync, 묻는 목록 = rsync 가 지우는 것,
맞춘 뒤 맞출 것 없음. 고치기 전 로컬 실패 · WebDAV 실패 (− old · − old2 · − onlydst) 확인. live_sync_args_test 에 --delete-excluded.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
관리자 지시 (10/19): 원격은 rsync 대신 앱이 맞추며 (file_ops._mirrorV · 실시간 동기화 원격 쌍) --exclude 등을 따르지 않아, 지키려고 뺀 것도 복사 · 지웠다
(22ae039 는 경고만). 바탕: remote_filter = next2 7cd8eb8 + next3 63ef362 (d3 의 RsyncFilter · F1~F4).
- FileOps.mirror / _mirrorV 에 filter (RsyncFilter): 거른 것은 보내지 않고 (거른 폴더 안으로 내려가지 않음), 받는 쪽의 거른 것은
지키고 (--delete-excluded 면 지움), 받는 쪽에만 있는 폴더 안에 거른 것이 있으면 폴더는 남기고 거르지 않은 것만 지운다 (미리 보기 sync_preview 와 같은 규칙).
- 복사 · 이동 작업: rsync 를 고른 작업이 원격이라 앱이 맞출 때 그 옵션의 거르기를 넘긴다.
- 실시간 동기화: rsync 쌍이면 환경 설정 rsync 옵션의 거르기를 맞추기와 대기 목록 (diff · _diffV) 에 같이. _diffV 는 M1 규칙도 (지우기 없으면 같은 이름 폴더 줄은 기다림으로 세지 않음).
- 확인 창 (Rsync 화면 · 지우기 확인): 원격도 같은 거르기로 미리 보고, 미리 볼 수 없는 규칙 (unsupported) 의 빨간 경고 · [알고 실행] 체크 (63ef362) 를 원격에도.
22ae039 의 주황 "원격은 거르기를 따르지 않음" 경고는 뺐다. 안내 글: "… 옵션 중 -u · --delete · --remove-source-files · 거르기 (--exclude · --include · --filter · --delete-excluded) 를 따름".
시험: webdav_test (새 1: 시험 WebDAV 서버에 거르기 5가지 - --exclude 파일 · 폴더 / --delete-excluded / --include 와 --exclude 차례 / --filter "- …" "- /…" / 지우기 없음 -
마다 미리 보기의 + · ~ 는 실제로 있고 − 는 실제로 없어지며, 실제로 지워진 것은 모두 미리 보기 지울 목록에. 한글 폴더 · 거른 것 지키기 · 거른 것이 든 폴더 자세히) ·
sftp_test (새 1: paramiko 서버, 보내지 않기 · 지키기 · 폴더 안만 지우기, 미리 보기 지울 목록 = {old.txt, gone/g.txt}) ·
sync_preview · sync_preview_view · explorer_webdav · rsync_filter · mirror_safety · sync_tools · live_sync · transfer 통과, 임시 폴더 흔적 0, analyze 문제 없음, l10n 빠짐 0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>