Commit Graph

217 Commits (vcode_check)

Author SHA1 Message Date
RyuJongJin 9e40b485a9 rc 회귀 고침: 네트워크 공유 (UNC) 목록 · 기록 파일은 \\ 그대로 · 받는 쪽 UNC 도 \\ · 막히면 모니터링 [▶ 실행] 도 끔 · 표준 입력 (-) 문구 (검토 대기)
관리자 지시 (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>
2026-10-20 19:29:47 +09:00
RyuJongJin ed459a0229 rc: 목록 · 기록 파일의 C:/ · C:\ · UNC 를 rsync 가 여는 꼴로 넘김 · Windows 는 드라이브 경로만 · 막힐 때는 이유 한 줄만 · ---delete 문구 (검토 대기)
관리자 지시 (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>
2026-10-20 18:24:35 +09:00
RyuJongJin f947935c19 next9: + msys_args 끝 (634fcbc · 849c830: 목록 · 기록 · 배치 파일의 상대 경로 막기) - 시험판 985
합침 (d3): 상대 경로 막기를 optionProblems 의 새 종류 relativePath 로 (안내 끝 문구 "드라이브 (C:) 나 / 로 시작하는 경로로", 내 판단).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:14:23 +09:00
RyuJongJin 849c83031d 기록 · 배치 파일 (--log-file · --write-batch · --read-batch · --only-write-batch) 의 상대 경로도 막음 (검토 대기)
관리자 지시 (10/20, 28 확인): 상대 경로면 응답 파일 임시 폴더에 생겼다가 함께 지워져 사용자가 기록을 찾지 못함 - "기록 · 배치 파일은 전체 경로로 적어 주세요". --backup-dir · --partial-dir · --temp-dir · --compare-dest 류는 받는 쪽 기준이라 그대로 (시험에 둠). 번역 en · ja · zh.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:10:55 +09:00
RyuJongJin 634fcbc920 목록 파일 (--exclude-from · --include-from · --files-from · ". 파일" · merge) 의 상대 경로는 막음 - "목록 파일은 전체 경로로 적어 주세요" (검토 대기)
관리자 판단 (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>
2026-10-20 17:03:29 +09:00
RyuJongJin bd0801ce66 next9: + msys_args (7160577: Windows rsync 인수를 응답 파일로 · MSYS=noglob - ' 가 인수를 합쳐 거르기가 사라지던 것) - 시험판 985
합침 (d3): unreadableOptions 는 optionProblems 를 거친다 (b1a43c3 의 종류별 안내). 15 의 windows 매개변수 · 큰따옴표 막기를
optionProblems 로 옮기고, 안내는 새 종류 doubleQuote "큰따옴표 (\") 를 빼 주세요" (내 판단).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 16:59:12 +09:00
RyuJongJin 716057734a P0 Windows rsync: 인수를 응답 파일 (@) 로 넘기고 MSYS=noglob - ' 짝짓기 · 글로브 펼치기로 거르기가 사라져 지킬 파일이 지워지던 것 (검토 대기)
관리자 지시 (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>
2026-10-20 16:52:26 +09:00
RyuJongJin b1a43c36c5 WIP 옵션 칸 보충 (관리자 지시 10/20, 28 지적): --cc · --zc · --zl · --zt 등 값 받는 별칭 (오탐) · -–delete 처럼 하이픈과 대시가 섞인 것도 고침 · 안내 끝 문구를 문제 종류에 맞게 (따옴표 닫기 · - 로 시작 · 값 적기 · 곧은 글자로) · 옵션 낱말은 줄바꿈 없이 · 캡처 시험 windows_option_problem_shot_test (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 16:46:57 +09:00
RyuJongJin f45ad3b25f WIP 옵션 칸 틈 셋 (관리자 판단 10/20, 28 확인): 값 자리가 아닌데 - 로 시작하지 않는 낱말 ("경로로 읽힙니다") · 하이픈 셋 이상 · 끝에 값 없는 옵션 ("--exclude 의 값이 없습니다") 도 알아볼 수 없음으로 실행을 막음 - 실제 rsync 는 원본 경로로 먹어 --delete 가 빠지거나 아무것도 보내지 않음 (시험으로 확인) (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 16:06:04 +09:00
RyuJongJin 55caef5c3f WIP 옵션 붙여 넣기 보충 (15 검토 F1~F5, 관리자 지시 10/20): 닫히지 않은 따옴표는 뒤 옵션을 삼키지 않고 "따옴표가 닫히지 않았습니다" 로 실행을 막음 (데이터 - 예전에는 뒤의 --exclude 가 사라져 지킬 파일이 지워짐, 곧은 따옴표도) · 대시 하나는 rsync 긴 옵션 이름일 때만 -- (–avz → -avz) · --filter · -f 값의 규칙 머리 대시를 - 로 · 값 자리 대시는 그대로 · “a b”.txt 처럼 닫는 따옴표 뒤에 글이 이어져도 닫음 · 시험 파일의 보이지 않는 글자를 \u 표기로 (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 15:52:05 +09:00
RyuJongJin 484f11d9c2 next9: + remote_idle (7f2263b: 원격 서버가 답하지 않으면 정한 시간 뒤 실패 · File closed 가 이유를 덮던 것) - 시험판 983
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 14:57:25 +09:00
RyuJongJin d2dc267ae2 WIP 옵션 칸에 붙여 넣은 글을 곧은 글자로 쓴 것과 같게 읽음 (관리자 지시 10/20, 28 확인, 데이터): 굽은 따옴표는 낱말 앞 · = 뒤 · -f 뒤에서 따옴표로, 낱말 맨 앞 대시 (– — ‑ - 등) 는 - · -- 로, 소프트 하이픈 · 전각 빈칸 고침 - 예전에는 --exclude=‘*.log’ 가 거르지 못해 받는 쪽 keep.log 가 지워졌고 –delete 는 원본 경로로 넘어가 --delete 가 빠졌다 · 그래도 알아볼 수 없는 옵션이 남으면 확인 창 · 설정 칸 · 모니터링에 빨갛게, 실행 · 실시간 동기화는 막음 · 시험 28 의 13가지 (실제 rsync 결과 = 곧은 글자) (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 14:57:25 +09:00
RyuJongJin 7f2263bbb9 원격 서버가 멈추면 정한 시간 (처음 60초) 뒤 실패 - FTP · SFTP · SMB · WebDAV 받기 · 올리기 · 명령 (검토 대기)
관리자 판단 (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>
2026-10-20 14:46:42 +09:00
RyuJongJin f6de74010c next9: + lsync_p0 (aba095b: 미리 볼 수 없는 거르기 규칙의 지우기 포함 쌍은 저절로 지우지 않음) - 시험판 981
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:25:15 +09:00
RyuJongJin e228e84adb WIP 시험 · 앱이 %TEMP% 에 고정 이름을 남기지 않게 (관리자 지시 10/20): 시험의 앱 임시 폴더는 파일마다 jj_store_ (flutter_test_config) · 업데이트 시험은 시험 폴더 (GitHubUpdater.tempRoot, 기록은 스크립트 옆) · check.py 는 임시 폴더 · 앱이 켜질 때 지난 업데이트가 남긴 새 판 폴더 · .ps1 · .log 를 지움 (2분 지난 것) · 검사는 jj 로 시작하는 것 모두 실패 · 마그넷 멈춘 막대 "Stalled" 따로 열쇠 (28 지적) · explorer_test 82 부하 때 목록 기다리기 (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:25:15 +09:00
RyuJongJin aba095b342 P0 실시간 동기화: 미리 볼 수 없는 거르기 규칙이 있는 지우기 쌍은 저절로 지우지 않고 보내기만 · 지우기는 확인 뒤 한 번 (검토 대기)
관리자 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>
2026-10-20 13:21:56 +09:00
RyuJongJin 6e646b60c1 next8: + a8bc585 (실시간 동기화: 옵션이 바뀌어 지울 것이 늘면 다시 묻기) - 시험판 980
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 12:30:18 +09:00
RyuJongJin a8bc585b1a 실시간 동기화: 확인한 쌍도 rsync 옵션이 바뀌어 지울 것이 늘면 다시 묻기 (검토 대기)
관리자 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>
2026-10-20 12:26:08 +09:00
RyuJongJin a19d68e167 next8: next7 + next6 (44a6c4e: 실시간 동기화 거르기 · --delete-excluded) - 시험판 980
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 12:24:14 +09:00
RyuJongJin 44a6c4e6b2 실시간 동기화 지울지 묻는 창: --delete-excluded 로 지워지는 거른 것은 따로 묶어 빨갛게 (검토 대기)
관리자 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>
2026-10-20 12:10:30 +09:00
RyuJongJin 6b60f348e2 WIP 마그넷: 인터넷 IPv6 가 없으면 (Tailscale ULA 뿐) aria2 의 IPv6 끔 - 시작되지 않던 것 (28 확인) · 정한 시간 (처음 60초) 동안 메타데이터 · 피어가 없으면 줄에 이유 후보 · [다시 시도] · 실제 마그넷 받기 통합 시험 (JJ_REAL_MAGNET=1) (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 11:32:40 +09:00
RyuJongJin 44407c36de WIP 원격 맞추기 (WebDAV · SFTP · SMB · FTP) 도 rsync 옵션의 거르기를 미리 보기와 같게 따름 - M2 의 본 고침 (검토 대기)
관리자 지시 (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>
2026-10-19 22:54:14 +09:00
RyuJongJin 65f5e49aad next4: next2 7cd8eb8 (M2 · 줄바꿈 되돌림 · 글 뷰어 이모지) 합침
# Conflicts:
#	assets/l10n/en.json
#	assets/l10n/ja.json
#	assets/l10n/zh-Hans.json
2026-10-19 22:35:14 +09:00
RyuJongJin 22ae03953d WIP 원격 확인 창: 옵션에 거르기 (--exclude 등) 가 있으면 "원격은 거르기를 따르지 않음" 주황 경고 · 안내 글에 SMB · FTP (검토 대기)
관리자 지시 (10/19, 15 의 원격 동기화 검토 M2): 원격 (WebDAV · SFTP · SMB · FTP) 은 rsync 대신 앱이 직접 맞추며 옵션의 거르기
(--exclude · --include · --filter · -f · --exclude-from · --include-from · -C · -F) 를 따르지 않는다 - 지키려고 뺀 것도 복사하고, 지우기면 지운다.
미리 보기도 거르기 없이 계산해 실제와 같지만, 확인 창은 이것을 알리지 않았다.
- 새 optionsFilter (sync_preview.dart): 옵션에 거르기가 있는지.
- Rsync 화면 확인 창 · 지우기 포함 작업의 확인 창 (모니터링 [실행] 등, confirmDeletingRun): 원격이고 거르기가 있으면 주황 경고
  "원격 (WebDAV · SFTP · SMB · FTP) 은 옵션의 거르기 … 를 따르지 않습니다 - 거른 것도 복사하고, 지우기가 들어 있으면 지웁니다. 위 비교 목록이 실제로 할 일입니다."
- 원격 안내 글 "WebDAV · SFTP: rsync 대신 앱이 직접 맞춥니다" → "WebDAV · SFTP · SMB · FTP: …" (SMB · FTP 도 같은 길).
- 관리자 지적: 6278403 에서 test/webdav_test.dart · test/sftp_test.dart 의 줄바꿈이 파일 전체에서 CRLF 로 바뀐 것을 원래 (LF) 로 되돌림
  (6278403~1 과 비교하면 +27 · +23 줄만 남음).
_mirrorV 가 RsyncFilter 를 따르게 하는 것은 next3 와 합친 뒤의 다음 일 (관리자 결정).

시험: sync_preview_test (새 1: optionsFilter 있음 10 · 없음 6, -e "ssh -C" 는 아님) · explorer_webdav_test (안내 글 · 거르기 없으면 경고 없음) ·
sync_preview_view · webdav · sftp 31 통과, 임시 폴더 흔적 0, analyze 문제 없음, l10n 빠짐 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 22:23:05 +09:00
RyuJongJin 092b68a28f next4: next2 (6278403) + next3 (63ef362) 합침 - 시험판 977 2026-10-19 22:15:47 +09:00
RyuJongJin 62784039e4 WIP P0 원격 맞추기: --delete 가 없으면 받는 쪽의 같은 이름 폴더를 지우지 않음 (예전: 통째로 지우고 파일로) · 미리 보기에 보임 (검토 대기)
관리자 지시 (10/19, 15 의 원격 동기화 검토 M1 - P0): WebDAV · SFTP · SMB · FTP 가 끼면 앱이 직접 맞추는데 (file_ops._mirrorV),
원본은 파일 X, 받는 쪽에는 같은 이름의 **폴더** X 가 있으면 --delete 가 없어도 그 폴더를 통째로 지우고 파일로 바꿨다.
미리 보기에는 "바뀜" 한 줄로만 보여 사용자가 모르게 지워졌다 (10/8 WebDAV 부터 정식 판에 있던 것으로 봄).
실제 rsync 는 --delete (또는 --force) 없이는 비어 있지 않은 폴더를 지우지 않는다.
- _mirrorV: --delete 가 없으면 그 이름은 건너뛰고 FileOps.dirConflicts 에 남긴다. --delete 면 지금처럼 지우고 파일로.
- 미리 보기 (sync_preview): 지우기 없음 → "받는 쪽에 같은 이름의 폴더가 있어 건너뜀 - 폴더는 그대로" (주황, 새 PreviewAction.skipDir),
  지우기 → 지울 목록에 "폴더 · 안의 n개를 지우고 같은 이름의 파일로" (빨강, 지울 수에 들어가 72 의 보호를 받음).
- 알림: 복사 · 이동 작업 끝 "같은 이름의 폴더가 있어 건너뜀 n개: …", 실시간 동기화 (lsync, 원격 쌍) 카드 "n개 맞춤 · 같은 이름의 폴더가 있어 건너뜀 n개" (같은 규칙).
- 로컬끼리 맞추기는 원래 폴더를 지우지 않았다 (파일 이름 바꾸기가 실패) - 그대로.

시험: webdav_test · sftp_test (새 각 1, 시험 WebDAV 서버 · paramiko SFTP 서버): 지우기 없음 → 미리 보기 skipDir · 지울 것 없음 · 실제로 폴더와 안의 파일 그대로 ·
다른 파일은 맞춤 · dirConflicts 1 / 지우기 → 미리 보기 지우기 줄 (안의 n개) · 실제로 파일로. analyze 문제 없음, l10n 빠짐 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 22:15:22 +09:00
RyuJongJin 63ef362f6d WIP 177 보충 3 (15 검토 F1~F4): 고치개 · H · P · merge · exclude-from 의 ! 등은 적용하지 않고 "미리 볼 수 없음" · 그런 규칙이 있으면 빨간 경고, --delete 와 함께면 체크해야 [실행] · 받는 쪽 받다 만 파일도 지울 목록에 (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 22:14:38 +09:00
RyuJongJin cfed8fa355 WIP 145 초기화 창 캡처 (ko · en · ja × 412 · 960, 시험 windows_reset_shot): 잘림 없음 · 문구를 사실대로 - SFTP · SMB · FTP 비밀번호 · 키도 지움, "앱 설정 전체" 는 파일 탐색기 즐겨찾기도 지움 (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 21:16:49 +09:00
RyuJongJin 58254e42b2 WIP Wi-Fi 공유 (Windows): 켜기 전 방화벽 안내 · 막혔을 때 "개인 네트워크 허용" 하는 법과 설정을 여는 버튼 (검토 대기)
관리자 지시 (10/19, 사용자 "오늘 못했던 것 진행" 3번):
- 켜기 전 화면: "켜면 Windows 방화벽 창이 뜰 수 있습니다: '개인 네트워크' 에 체크하고 [허용]. '공용 네트워크' 는 체크하지 않는 것이 안전" (전에는 한 줄 안내만).
- 켜기 전 · 공유 중 화면 모두에 펼침 도움말 [다른 기기에서 열리지 않으면 (Windows 방화벽)]:
  ① 이 PC 의 망이 "개인 네트워크" 인지 (설정 > 네트워크 및 인터넷 > … > 네트워크 프로필 유형) + [네트워크 설정 열기] (ms-settings:network-status)
  ② 방화벽에서 이 앱 "개인" 허용 (제어판 > Windows Defender 방화벽 > 앱 허용 > [설정 변경]) + [방화벽 허용 앱 열기] (control /name Microsoft.WindowsFirewall /page pageConfigureApps)
  ③ 목록에 없으면 [다른 앱 허용] 으로 JJ_MKVMaker.exe · 바꾼 뒤 공유를 끄고 다시 켜기 · 회사 · 학교 PC 는 바꿀 수 없을 수 있음.
  내 판단: 방화벽을 앱이 직접 바꾸지 않는다 (관리자 권한 · 사용자 몰래 바꾸지 않게) - 안내와 설정 화면 열기만.

시험: wifi_share_page_test (새 1: 켜기 전 안내 · 도움말 펼치기 · 두 버튼이 여는 것) · wifi_share_test 10 통과, 임시 폴더 흔적 0, analyze 문제 없음, l10n 빠짐 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 20:55:38 +09:00
RyuJongJin 6b6c23dc49 Merge commit '53a7418' into next 2026-10-18 04:11:01 +09:00
RyuJongJin 53a74183a7 WIP 412 캡처의 잘림: 서버 창 칸 이름은 짧게 · 설명은 helper, 해시 비교 칸, 날짜 고르기, 갈 곳 막대는 가운데 줄임 (검토 대기)
관리자 지시 (10/18, next e8baa84 캡처에서 찾은 ①~④, 회귀 아님):
① FTP · SFTP · SMB · WebDAV 서버 창: "이름 (탭에 보임, 비우면 주소)" · "시작 폴더 (비우면 …)" · "도메인 · 작업 그룹 (보통 비움)" 이 en 412 에서 잘렸다
  → 칸 이름은 "이름" · "시작 폴더" · "도메인 · 작업 그룹", 설명은 helper (3줄까지).
② 해시 창 비교 칸 → "비교할 해시" + helper "받은 곳에서 알려 준 해시를 붙여넣으세요".
③ 일괄 이름 바꾸기 날짜 고르기: 고른 뒤 상자에는 짧게 ("날짜: 찍은 때" · "날짜: 바뀐 때"), 펼친 목록은 긴 설명 그대로.
④ 한 창 갈 곳 막대: "갈 곳:" 은 늘 보이고 폴더 이름이 길면 가운데를 줄인다 (middleEllipsis · textWidth - path_label.dart). 전체 경로는 길게 눌러 · 마우스를 올려.

확인: integration_test/windows_trunc_shot_test.dart (새, 서버 창 4개 위 · 아래, 412/960 x ko/en/ja) · windows_ftp · windows_p3 · windows_xplore_tools · windows_xplore 캡처 통과
(release\test\shots_trunc), explorer · explorer_webdav · batch_rename · file_tools · ftp · smb · smb_find 시험 통과, analyze 문제 없음, l10n 빠짐 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 04:09:02 +09:00
RyuJongJin 11d709a97b Merge commit '63b92b6' into next974 2026-10-18 03:30:27 +09:00
RyuJongJin 63b92b6956 WIP 보안 검토 6: 설정 "SMB 서명 · 암호화 필수" (처음 끔) · 서명도 암호화도 안 되는 연결은 탐색기 탭에 ⚠ (검토 대기)
관리자 결정 (10/18):
- 설정 > SMB [SMB 서명 · 암호화 필수] (smbRequireSecure, 처음 끔 - 오래된 NAS 가 붙지 않을 수 있음, 틀린 값은 끔).
  켜면 Android 다리 (smbj) 가 서명을 요구하고 (withSigningRequired), 로그인 뒤 세션이 서명도 암호화도 안 되면 닫고 막는다
  → "서명 · 암호화가 되지 않는 연결이라 열지 않았습니다 (설정 …)". 설정을 바꾸면 열려 있던 연결을 닫는다 (다음 연결부터).
- 서버마다 처음 연결이 되면 info 를 한 번 물어 (세션의 shouldEncryptData · isSigningRequired) 서명도 암호화도 안 되면 탐색기 · Rsync 탭에 ⚠ (DavPath.mark, 꺼 두어도).
  info 의 "encrypted" 는 협상 가능 여부 (supportsEncryption) 가 아니라 이 세션이 실제로 암호화되는지로 바꿈. [연결 확인] 경고도 서명 여부를 따라 두 가지.
- 서버 목록에서 빠지거나 설정이 바뀐 서버는 ⚠ 기억도 지운다.

시험: smb_test (새 1: 처음 끔 · 틀린 값 · 연결 전 🗄 · 처음 한 번만 info · ⚠ · 서명만 되면 ⚠ 없음 · 필수를 다리에 넘김 · 막힌 이유) · smb_find · explorer_webdav 11 통과,
analyze 문제 없음, l10n 빠짐 0, APK 빌드 (Kotlin 컴파일) 성공. 실제 NAS (서명 · 암호화 켬 / 끔) 확인은 기기에서.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:16:57 +09:00
RyuJongJin f6bdc35920 Merge commit '19d4f7b' into next974 2026-10-18 02:59:15 +09:00
RyuJongJin 5038a60b87 Merge commit '546b915' into next974 2026-10-18 02:59:08 +09:00
RyuJongJin 546b915b55 WIP X-plore 숨기기 후속: 지우기 · 옮기기 · 이름 바꾸기를 따라감 · 설정의 [목록에서 숨긴 항목] · 위 막대 ⋮ 에도 보이기 (검토 대기)
관리자 결정 (10/18, 9f758ac 의 판단에 대해):
- 이름 바꾸기 (하나 · 일괄) · 옮기기 (다른 창으로 · 붙여넣기 · 끌어 놓기 · 되돌리기 - 작업이 끝나면) 를 하면 숨긴 목록의 경로도 새 경로로 (그 안의 것도).
  옮기기는 원래 자리에 없고 새 자리에 있는 것만 (같은 이름이라 바꾼 것 · 실패는 그대로).
- 영구로 지운 것 (그 안 포함, 실제로 없어진 것만) 은 목록에서 뺀다. 내 판단: 휴지통 (Windows · 앱 휴지통) 으로 보낸 것은 남긴다 - [되돌리기] 로 되살리면 그대로 숨김이 되게.
- 환경 설정 > 파일 탐색기 [목록에서 숨긴 항목 (n개)] → 목록 (이름 · 폴더) 과 하나씩 [숨기기 풀기] · [모두 풀기] (lib/ui/hidden_items_dialog.dart). 풀면 열려 있는 탐색기에 바로 보인다 (설정 바뀜을 듣는다).
- 위 막대 ⋮ 메뉴에도 [목록에서 숨긴 항목 보이기 (n개)] · [다시 숨기기] (큰 폴더를 펼쳐 목록 맨 아래가 멀 때).

시험: explorer_test (새 3: 이름 바꾸기 → 새 경로 · 영구 삭제 → 뺌 / 다른 창으로 옮기기 → 새 자리 / ⋮ 보이기 · 다시 숨기기 · 설정 창에서 풀기 → 바로 보임) 포함 68 통과, analyze 문제 없음, l10n 빠짐 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 02:57:16 +09:00
RyuJongJin 19d4f7bf3d WIP 보안 검토 10 · 3 보충: Wi-Fi 공유는 디스크를 비동기로 · 설정 "Tailscale 에서도 열기" (검토 대기)
관리자 결정 (10/18):
- 10: 요청마다 하던 경로 확인 (링크 · 폴더 밖) · 폴더 목록 · 파일 크기를 비동기 IO 로 (같은 망의 기기가 큰 폴더를 요청해도 화면 스레드가 멈칫하지 않게). 켤 때의 폴더 확인도.
- 3 보충: Tailscale (100.64/10) 주소는 계속 열되, 공유 화면에 [Tailscale 에서도 열기] (처음 켬, wifiShareTailscale). 끄면 같은 Wi-Fi · 유선 주소에만 연다. 틀린 값은 처음 값 (켬).

시험: net_security_test (Tailscale 끔 · 처음 값 · 틀린 값) · wifi_share · wifi_share_page · settings_store 22 통과, analyze 문제 없음, l10n 빠짐 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 02:48:38 +09:00
RyuJongJin 00e9685a33 Merge commit '4ae6845' into next974 2026-10-18 02:32:33 +09:00
RyuJongJin 7c068ede3e Merge commit '9f758ac' into next974 2026-10-18 02:32:23 +09:00
RyuJongJin 4ae6845513 WIP 새 네트워크 기능 보안 고침: 원격 이름 경로 벗어나기 · FTPS 주입 · Wi-Fi 공유는 Wi-Fi · 유선 주소에만 · 찾기 범위 · SMB 강제 DNS (검토 대기)
관리자 지시 2 (10/18, SFTP · SMB · FTP · Wi-Fi 공유 · 스트리밍 다리 · mDNS/훑기 검토) 의 고침:
1 (P0, 로컬 데이터) 악성 · 탈취된 서버가 목록 이름을 "..\..\x" 로 보내면 임시 사본이 앱 임시 폴더 밖에 쓰이고 맞추기 (--delete) 가 위 폴더를 지울 수 있었다
  → vList: 그 폴더 바로 아래의 평범한 이름만 (".." · "." · "\" · NUL · 다른 폴더 버림, 모든 원격 목록이 거침) · DavPath.parse 는 ".." 마디 거부 · vLocalCopy 는 임시 폴더 안인지 확인 (서버에 묻기 전에)
2 FTPS 명시: 234 뒤에 평문으로 끼워 넣은 줄이 있으면 끊는다 (STARTTLS 주입)
3 Wi-Fi 공유: 0.0.0.0 이 아니라 화면에 보이는 Wi-Fi · 유선 · Tailscale 주소에만 따로 연다. 모바일 데이터 (rmnet · ccmni 등 - 통신사 10.x · 100.x) · 가상 어댑터 (WSL · Hyper-V · VirtualBox · VMware · Docker) · 다른 VPN 은 뺀다.
  주소가 없으면 켜지 않고 알림. 캡처에서도 172.24.240.1 (WSL) · 192.168.56.1 (VirtualBox) 이 주소 목록에 보였음.
4 SMB 찾기: Wi-Fi · 유선 연결만 훑는다 (isLanInterfaceName - 3 과 같은 기준)
5 SMB: 서버 이름을 FTP · SFTP 와 같은 DNS 설정 (강제 DNS) 으로 풀어 주소로 넘긴다 (Android 다리의 시스템 DNS 로 새지 않게)
8 FTP: \r · \n · NUL 이 든 명령은 보내지 않는다 (이름으로 명령 끼워 넣기)
11 mDNS: 사설망 주소만 받는다
15 [마스터 초기화] 확인 글에 SFTP · SMB · FTP · SFTP 키도 (실제로 지우는 것과 같게)
같이: Wi-Fi 공유 캡처 시험 (integration_test/windows_wifi_shot_test.dart) - 시험용 주소는 WifiShare.debugAddresses 로 (1차 캡처에서 화면이 다시 그려지지 않아 이 PC 의 실제 망 주소가 찍혔음)

남김 (보고서에): 6 SMB 서명 필수 · 암호화 안 될 때 표시 (Kotlin · 실기기), 7 FTPS 사설 CA 체인의 지문 고정 (사설 CA 서버 시험 필요), 10 Wi-Fi 공유 동기 IO.
괜찮음: 9 원격 임시 사본은 정리 창 "작업 임시 파일" 이 지움, 비밀 값 기록 · 설정 · 백업 · 오류 · 알림 · 경로 복사 없음, 인증서 · 호스트 키 건너뛰기 없음, 다리는 127.0.0.1 · 비밀 주소.

시험: test/net_security_test.dart (새 7) + 전체 902 통과 (17 건너뜀), analyze 문제 없음, l10n 빠짐 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 02:29:58 +09:00
RyuJongJin 9f758ac386 WIP X-plore 숨기기: 고른 파일 · 폴더를 목록에서만 숨기기 · 맨 아래 [숨긴 항목 보이기] (검토 대기)
관리자 지시 (10/18, X-plore 비교표 P3):
- 길게 누르기 메뉴 [목록에서 숨기기] (표시한 것이 여럿이면 "n개 목록에서 숨기기"). 앱 설정 explorerHiddenItems 에 경로 목록으로만 둔다 - 파일 · 폴더 자체 (속성 · 이름) 는 바꾸지 않는다.
- 펼친 폴더 안에 숨긴 것이 있으면 목록 맨 아래 (X-plore 자리) 에 [숨긴 항목 n개 보이기] → 흐리게 (불투명도 0.5) 보이고 [숨긴 항목 n개 다시 숨기기]. 보이기는 이번 실행 동안 · 모든 창 (내 판단: 다시 켜면 숨김).
  트리 (두 창 · 한 창) · 폴더 + 파일 목록 배치의 오른쪽 목록 모두.
- 보이는 숨긴 것의 메뉴는 [숨기기 풀기].
- 숨긴 것은 지우기 · 이동 대상에서 빠지지 않는다 (폴더를 지우거나 옮기면 안의 숨긴 것도 함께). 지우는 폴더 안에 숨긴 것이 있으면 확인 창에
  "지우는 폴더 안에 목록에서 숨긴 항목 n개가 있습니다 - 함께 지워집니다".
- 숨긴 것은 모두 고르기 · 빠른 필터 결과에서 빠진다 (보이는 것만 - 76 과 같게).
- 내 판단: 지우거나 이름이 바뀐 항목의 경로는 목록에 남는다 (같은 이름이 다시 생기면 숨김). 설정 화면에서 목록 보기 · 지우기는 아직 없음.
  트리는 Temp 처럼 큰 폴더를 펼쳐 두면 맨 아래가 멀다 (X-plore 와 같은 자리) - 필요하면 가운데 버튼 줄에도 둘 수 있음.

시험: explorer_test (새 2: 숨기기 → 목록에서 빠짐 · 파일 그대로 · 설정에 경로 · 보이기 → 흐리게 · 풀기 / 숨긴 것이 든 폴더 지우기 확인 창 알림 · 다른 파일은 알리지 않음) 57 통과,
settings_store_test 통과, analyze 문제 없음, l10n 빠짐 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 02:21:26 +09:00
RyuJongJin e8baa846bb Merge commit 'd29593b' into next
# Conflicts:
#	assets/l10n/en.json
#	assets/l10n/ja.json
#	assets/l10n/zh-Hans.json
2026-10-18 02:02:22 +09:00
RyuJongJin d29593b2e6 WIP P3 보충: 폴더 속성 · 파일 [정보] 에 만든 때 · 숨김 · 읽기 전용 · 시스템 (보기만) (검토 대기)
관리자 지시 (10/18). lib/core/file_attributes.dart: Windows 는 FFI GetFileAttributesExW (kernel32, file_ops 의 GetDriveTypeW 와 같은 꼴), 그 밖 (Android) 은 이름이 점으로 시작하면 숨김 · 만든 때는 모름. 바꾸기는 넣지 않음.
폴더 속성 창: 만든 때 · 속성 (없으면 없음). 파일 [정보] 창: 만든 날 · 속성 (원격은 뺌).
시험: file_attributes_test 2 (시험 파일에만 attrib +h +r 을 켜고 끝에 끔 - 숨김 · 읽기 전용 · 폴더 · 없는 경로 null · 만든 때) · file_tools · explorer P3 통과, analyze 문제 없음, l10n 빠짐 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 01:47:45 +09:00
RyuJongJin 8eb1674382 WIP X-plore P3 보충 (캡처에서 찾음) · 경로 막대 누르기로 위 폴더 고르기 (검토 대기)
캡처 (integration_test/windows_p3_shot_test.dart - 해시 · 비교 · 폴더 속성 · 16진, 412/960 × ko/en/ja, release\test\shots_p3_fix) 에서 찾아 고침:
- 16진 보기: 폭 412 에서 한 줄 16 바이트면 끝의 글자 칸이 화면 밖으로 잘렸다 → 폭 560 미만은 한 줄 8 바이트 (line(per:), 처음 값 16 그대로)
- 해시 창: 닫자마자 글 칸 컨트롤러를 dispose 해 닫히는 동안 "A TextEditingController was used after being disposed" (닫을 때마다) → 닫힌 뒤 dispose
관리자 지시 3 (X-plore 비교표의 작은 것): 위 막대의 경로를 누르면 지금 폴더 · 위 폴더들 (창의 맨 위까지, 가까운 것부터) 이 나와 고르면 그리로 (X-plore 4.4x 경로 막대).
지금 폴더는 고를 수 없게 흐리게.

시험: explorer_test (새: 경로 막대 - 지금 폴더 못 고름 · 바로 위 = left · 고르면 하나 적어짐) · file_tools_test 통과, analyze 문제 없음, l10n 빠짐 0, 캡처 시험 6 통과.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 01:43:17 +09:00
RyuJongJin 4070f8d2ee Merge commit '88379f1' into next 2026-10-18 01:18:36 +09:00
RyuJongJin 88379f16f4 WIP X-plore j 보충: SMB 찾기에 mDNS (_smb._tcp.local) 를 먼저 (검토 대기)
관리자 지시 (10/18): 훑기보다 먼저 mDNS 로 빠르게 찾기.
- lib/core/mdns_smb.dart (새, 패키지 없음): "레거시 유니캐스트" 질의 (RFC 6762 6.7) - 빈 포트에서 224.0.0.251:5353 으로 PTR (QU) 을 묻고
  응답자가 그 포트로 바로 답한다. Android 의 멀티캐스트 받기 (MulticastLock, Kotlin) 없이도 받을 수 있게 고른 방식 (내 판단).
  PTR → 인스턴스, SRV → 호스트 이름, A → IPv4 (이름 압축 읽기). 1.5초 모으고, 못 찾으면 빈 목록 (오류 없음). 묻기만 하고 알리지 않음
- 찾기 창: mDNS 먼저 → 이어서 포트 훑기 (mDNS 를 안 하는 NAS 도). 같은 주소는 하나로 (이름은 mDNS 것), 주소 순서. 안내 글도 고침

시험: mdns_smb_test 3 (질의 꼴 · 손으로 만든 응답 읽기 - 압축 이름 · SRV · A · 합치기) · smb_find_test - 4 통과, analyze 문제 없음, l10n 빠짐 0.
실제 NAS 의 mDNS 응답은 기기 · 사무실 망에서 확인 필요 (Synology 는 기본으로 _smb._tcp 를 알림).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 01:13:11 +09:00
RyuJongJin 8d6f288fab Merge branch 'smb_find' into next
# Conflicts:
#	assets/l10n/en.json
#	assets/l10n/ja.json
#	assets/l10n/zh-Hans.json
2026-10-18 01:03:14 +09:00
RyuJongJin fefe972937 Merge branch 'xplore_p3' into next 2026-10-18 01:02:55 +09:00
RyuJongJin f28af04f77 Merge branch 'ftp' into next
# Conflicts:
#	assets/l10n/en.json
#	assets/l10n/ja.json
#	assets/l10n/zh-Hans.json
2026-10-18 01:02:49 +09:00
RyuJongJin 7e38ad8aec Merge branch 'zip_aes' into next
# Conflicts:
#	assets/l10n/en.json
#	assets/l10n/ja.json
#	assets/l10n/zh-Hans.json
2026-10-18 01:02:39 +09:00