Commit Graph

527 Commits (rc2)

Author SHA1 Message Date
RyuJongJin 722edc8ed1 WIP 177 Rsync 실행 전 비교 (미리 보기 · 지울 목록) 가 옵션의 거르기 (--exclude · --include · --exclude-from · --filter · --delete-excluded) 를 실제 rsync 와 같게 따름 (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 21:09:13 +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 6366a2f880 WIP 글 뷰어: 줄바꿈 없는 큰 파일은 화면 폭에 맞춰 나눠 그려 멈추지 않게 (검토 대기)
관리자 지시 (10/19, 사용자 "오늘 못했던 것 진행" 2번 - 데이터 검토에서 남긴 작은 점):
줄바꿈 없는 큰 파일 (한 줄 수십만 자) 을 한 Text 로 그려 잠깐 멈췄다.
- 화면 한 줄에 드는 글자 수 (고정폭 글꼴 · 글자 크기 · 줄 번호 칸) 를 보고, 그 8배보다 긴 줄만 4배 (화면 네 줄쯤) 씩 나눠 그린다.
  보통 줄은 그대로 (화면에서 저절로 줄바꿈). 줄 번호는 첫 조각에만. 이모지 같은 두 단위 글자는 반으로 자르지 않는다.
- 나눈 줄은 글 · 한 줄 글자 수가 같으면 다시 만들지 않는다 (viewerRows).

시험: xplore_tools_test (새 2: viewerRows - 글 그대로 · 줄 번호 · 8배까지 그대로 · 이모지 / 200KB 한 줄 파일을 412 폭에서 여러 짧은 조각으로) 4 통과,
임시 폴더 흔적 0 (tool/test_temp_check.ps1), analyze 문제 없음.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 20:50:59 +09:00
RyuJongJin 53f5c432bb WIP 압축 펼치기: 펼친 뒤 압축 파일이 바뀌면 (크기 · 바뀐 때) 펼치거나 새로 고칠 때 목록을 다시 읽음 (검토 대기)
관리자 지시 (10/19, 사용자 "오늘 못했던 것 진행" 1번 - 압축 펼치기의 알려진 한계):
읽어 둔 압축 목록을 계속 써서, 다른 프로그램이 압축을 바꿔도 접었다 펼치거나 새로 고쳐도 예전 목록이 보였다.
- 압축을 읽을 때의 (크기, 바뀐 때) 를 기억하고, 다시 펼칠 때 · 새로 고침 (F5 · [새로 고침] · 앱으로 돌아옴) 때 비교해 다르면
  그 압축의 목록과 모든 창의 그 안 폴더 목록을 잊고 다시 읽는다.
- 압축이 없어졌으면 목록을 잊고 그 안은 빈 목록으로 (예전 것을 보이지 않게).

시험: explorer_test (새 1: 펼친 뒤 압축을 바꾸고 F5 → 새 항목 · 예전 항목 없음) 62 통과, 임시 폴더 흔적 0 (tool/test_temp_check.ps1), analyze 문제 없음.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 20:47:58 +09:00
RyuJongJin a74e7be59b 버전 2026.10.18_001
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 12:03:22 +09:00
RyuJongJin 6567d8a5b4 WIP 시험 흔들림: batch_test "186 · 187" - 실제 시간으로 기다리기 · 한도 4분 · 임시 폴더 지우기 다시 시도 (검토 대기)
976 직전 전체 시험 (50bd2bf) 에서 PC 가 바쁠 때 정해진 횟수 (400 × 25ms) 안에 v1 이 시작하지 않아 30초 한도에 걸렸고,
그때 ffmpeg 가 파일을 쥐고 있어 jj_batch186_ 임시 폴더를 지우지 못하고 남겼다. 240 (e7cd30e) 과 같은 방식으로 고침. 기대값은 그대로.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 04:52:24 +09:00
RyuJongJin 29b4365b74 WIP 압축 안 메뉴 정리: 펼친 압축 안의 것에는 [ZIP 으로 묶기] · [Wi-Fi 로 공유] · [PDF 로 만들기] 를 숨김 (검토 대기)
관리자 지시 (10/18, 데이터 검토에서 찾은 것): 펼친 압축 안의 항목은 실제 파일이 아니라 위 셋을 눌러도 없는 경로라 오류만 났다 (데이터는 다치지 않음).
→ 누른 것이나 표시한 것 중 하나라도 압축 안이면 그 셋을 메뉴에서 뺀다. 압축 밖은 그대로.

시험: explorer_test X-plore 16 통과 (f 에 덧붙임: 압축 안 폴더 메뉴에 ZIP · Wi-Fi 없음 · 밖의 폴더에는 ZIP 있음), analyze 문제 없음.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 04:47:12 +09:00
RyuJongJin 50bd2bf259 WIP 데이터 검토: 대소문자만 다른 이름으로 바꿀 때 대소문자를 가리는 폴더의 다른 파일을 덮던 것 (검토 대기)
관리자 지시 (10/18, cd 의 X-plore e~i · 칸 그림 데이터 안전 검토) 중 찾음:
FileOps.rename 은 a.txt → A.txt 처럼 대소문자만 바뀌면 "같은 파일의 대소문자 바꾸기" 로 보고 같은 이름 확인을 건너뛰었다.
대소문자를 가리는 곳 (Android 앱 폴더 · ext4 · 일부 NAS 를 로컬로 붙인 것 · Windows 의 대소문자 구분 폴더) 에 A.txt 가 따로 있으면
File.rename 이 그 파일을 말없이 덮었다 (이름 변경 · 일괄 이름 바꾸기 · [D][T] 모두 이 길).
→ 대소문자만 다를 때는 폴더 목록에 정확히 그 이름이 따로 있는지 보고, 있으면 "같은 이름이 이미 있습니다" (목록을 못 읽으면 막음).
대소문자를 가리지 않는 보통 Windows 폴더에서 a.txt → A.txt 는 그대로 된다.

시험: file_ops_test (새 1: 보통 폴더는 바뀜 · fsutil 로 만든 대소문자 구분 폴더에서는 막고 두 파일 그대로 - 고치기 전에는 A.txt 를 덮어 실패) ·
batch_rename · batch_rename_date · app_trash · xplore_tools 34 통과, analyze 문제 없음.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 04:39:24 +09:00
RyuJongJin 25e3123aac Merge commit 'e4de7ed' into next 2026-10-18 04:32:12 +09:00
RyuJongJin e4de7ed28e WIP 960 캡처: 가운데 버튼 [좌우 ⇆] 의 en 이름이 두 줄로 꺾이던 것 - "Columns ⇆" · "Rows ⇅" (검토 대기)
관리자 지시 (10/18, 960 폭 사진 점검): en "Side by side ⇆" 가 버튼 줄에서 "Side by side / ⇆" 두 줄로 꺾였다.
→ en 만 짧은 짝으로: 좌우 ⇆ = "Columns ⇆", 위아래 ⇅ = "Rows ⇅", 묶음 = "Columns ⇆ / Rows ⇅".
업데이트 안내 글 (migration_notice) 의 버튼 이름도 같은 것으로 (전에는 "Top and bottom" 으로 달랐음). ko · ja · zh 는 그대로.

확인: windows_xplore 캡처 (release\test\shots_trunc\windows_xplore_orient, 960 에서 한 줄) 4 통과, i18n_test 통과, l10n 빠짐 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 04:26:42 +09:00
RyuJongJin 160bfe85e0 Merge commit '565ad3b' into next 2026-10-18 04:25:04 +09:00
RyuJongJin 565ad3bd17 WIP 960 캡처: 탐색기 동영상 줄의 "크기 · 날짜" 가 넓은 창에서도 잘리던 것 - 동영상 정보와 한 줄 글로 (검토 대기)
관리자 지시 (10/18, next e8baa84 의 960 폭 캡처에서 찾음): X-plore 모양 트리의 동영상 줄이 "5KB · 2026-10-18 03:…" 로 잘렸다.
크기 · 날짜 글과 동영상 정보 (_MetaText) 가 Flexible 둘이라 폭을 반씩 나눴고, 정보가 비어 있어도 반을 차지했다.
→ _MetaText 가 앞글 (크기 · 날짜) 과 정보를 한 Text.rich 로 그린다 (넘치면 끝을 줄임). 동영상이 아닌 줄은 그대로.

확인: windows_xplore 캡처 (release\test\shots_trunc\windows_xplore_meta - 960 에서 "5KB · 2026-10-18 04:13" 다 보임) 4 통과, explorer_test 56 통과, analyze 문제 없음.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 04:22:08 +09:00
RyuJongJin 6b6c23dc49 Merge commit '53a7418' into next 2026-10-18 04:11:01 +09:00
RyuJongJin 02a79839da WIP 시험 흔들림: folder_size_test "화면에서 사라진 폴더" - 조건이 될 때까지 실제 시간으로 기다리기 · 한도 2분 (관리자 지시) (검토 대기)
전체 시험 중 PC 가 바쁘면 정해진 횟수 (300 × 10ms) · 고정 시간 (20 · 100ms) 안에 계산이 끝나지 않아 흔들렸다 (11d709a 관리자 확인).
idle 을 실제 시간 (최대 30초) 으로, 고정 기다림은 조건 (읽기 시작 · busy 가 풀림) 으로. 기대값은 그대로.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 38f53e70cc WIP 시험 흔들림: sftp_explorer_test 는 실제 시간으로 기다리고 시험 서버는 포트가 받는 것을 본 뒤 시작 (검토 대기)
관리자 지적 (10/18): "처음 연결: 지문 안내 → … → 지문은 설정에 저장" 이 전체 시험 (wt_mgr 00e9685) 에서만 실패.
시험 서버 (paramiko) 는 PORT 를 찍기 전에 listen 하므로, 무거울 때 걸리는 것은 settle 의 횟수 (300번 ≈ 10~15초) 였다 - 키 교환이 그보다 오래 걸림.
- settle: 횟수 대신 실제 시간 (처음 90초) 까지 조건을 기다린다.
- SftpTestServer.start: PORT · FINGERPRINT 줄을 기다리는 시간을 정하고 (60 · 30초, 서버가 죽으면 끝없이 기다리지 않게), 포트가 연결을 받는 것을 본 뒤 돌려준다.

시험: sftp_explorer · sftp_stream · sftp_test 10 통과.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:00:02 +09:00
RyuJongJin f6bdc35920 Merge commit '19d4f7b' into next974 2026-10-18 02:59:15 +09:00
RyuJongJin f10858c68c Merge commit '8ca9184' into next974 2026-10-18 02:59:13 +09:00
RyuJongJin 5038a60b87 Merge commit '546b915' into next974 2026-10-18 02:59:08 +09:00
RyuJongJin e7cd30ef41 WIP 시험 흔들림: batch_test P0 (931) 묶음을 239 처럼 조건이 될 때까지 기다리기 · 한도 4분 (관리자 지시) (검토 대기)
전체 시험 중 PC 가 바쁘면 (Windows 통합 시험과 겹침) "240 집계" 가 정해진 횟수 (800 × 25ms) 안에 v2 가 시작하지 않아
기본 30초 한도에 걸렸다. 시간으로 기다리고 (최대 90초), 이 묶음 세 시험의 한도를 4분으로. 기대값은 그대로.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 02:58:16 +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 8ca9184fdc WIP 보안 검토 7: FTPS 사설 CA 체인 시험 - 지문은 서버 인증서 (잎) 것 (검토 대기)
관리자 지시 (10/18): 사설 CA → 서버 인증서 체인을 시험 서버에 만들어 (tool/ftp_test_server.py --chain, cryptography 로 시험 전용 CA · 잎, 서버는 use_certificate_chain_file 로 체인 전체를 보냄)
onBadCertificate 가 넘기는 인증서가 잎인지 확인했다 → 잎이다 (고칠 것 없음). 이것을 시험으로 남긴다:
- 처음 연결: FtpCertException 의 지문 = 잎 지문 (CA 지문 아님), subject 에 127.0.0.1
- CA 지문을 믿고 있으면 "바뀜" 으로 막는다 (같은 CA 가 서명한 다른 인증서를 받지 않게)
- 잎 지문을 믿으면 명령 · 자료 연결 (PROT P) 모두 됨
시험 서버는 잎 지문 (FINGERPRINT) 과 함께 CA_FINGERPRINT 를 알린다.

시험: ftp_test (새 1) 통과.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 02:40:50 +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 6434eb85d4 Merge commit '71c995e' into next974 2026-10-18 02:32:15 +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 71c995ee13 WIP SMB 찾기 화면 캡처 시험 (검토 대기)
integration_test/windows_smbfind_shot_test.dart - [같은 망에서 찾기] · 찾는 중 · 찾은 목록 · 고른 뒤 · 못 찾음, 412/960 x ko/en/ja (가짜 찾기, 실제 망은 훑지 않음).
결과 release	est\shots_smbfind_88379f1 (30장, 6 통과). 412 폭의 주소 안내 잘림은 next 의 17c1ea7 (helperMaxLines 3) 로 고쳐짐.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 02:06:52 +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 a854299dda Merge commit '752707b' into next
# Conflicts:
#	lib/ui/ftp_settings.dart
2026-10-18 02:02:06 +09:00
RyuJongJin 7e2dc34b8d Merge commit '17c1ea7' into next 2026-10-18 02:01:50 +09:00
RyuJongJin 17c1ea7a04 WIP 서버 창 예시 글: 폰 세로 (412) 에서 잘리던 것 - FTP · SFTP · SMB · WebDAV 모두 세 줄까지 (검토 대기)
15 FTP 캡처에서 찾음 (관리자 지시 10/18, hint_fix = next 위). 서버 주소 · 시작 폴더 · 공유 이름 · WebDAV 주소 칸의 helperText 에 helperMaxLines: 3. 글은 그대로.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 01:50:07 +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 752707b842 WIP l FTP 캡처 (15): 412 에서 서버 주소 · 시작 폴더 칸의 예시 글이 잘리던 것 - 세 줄까지 (검토 대기)
캡처 시험 integration_test/windows_ftp_shot_test.dart (목록 · 추가 창 · 평문 경고 · 인증서 지문 창, 412/960 × ko/en/ja, release\test\shots_ftp_dd9e93b, 6 통과).
목록의 평문 ⚠ · 처음 값 FTPS · 평문 빨간 경고 · 지문 창은 세 언어 모두 문제 없음. 같은 꼴의 SFTP · SMB 창 예시 글도 잘리지만 이 브랜치에서는 FTP 만 고침.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 01:44:56 +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 9f94d8ea2c WIP next: FTP 동영상 스트리밍 다리 · 경로 복사 ftp:// (합친 뒤 고침, 관리자 지시) (검토 대기)
- 스트리밍 다리 (remote_stream): ftp:// 의 부분 읽기를 FtpRemote.openReadFrom (REST) 로 - 예전에는 처음부터 읽으며 건너뛰어
  동영상 건너뛰기가 느렸다 (15 가 알린 것). 시험: ftp_test "동영상 스트리밍 다리".
- 경로 복사: FTP 는 ftp://아이디@서버:포트/시작 폴더/경로 (암시 FTPS 990 은 ftps://, 처음 값 포트는 빼고, 비밀번호 없음).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 01:06:38 +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
RyuJongJin 49990c4120 Merge branch 'secret_test' into next 2026-10-18 01:02:29 +09:00
RyuJongJin 4bd0226efb Merge branch 'sftp_next' into next 2026-10-18 01:02:23 +09:00
RyuJongJin 12c041eed0 Merge branch 'wifi_89' into next
# Conflicts:
#	assets/l10n/en.json
#	assets/l10n/ja.json
#	assets/l10n/zh-Hans.json
#	assets/licenses/THIRD_PARTY_NOTICES.txt
#	assets/licenses/THIRD_PARTY_NOTICES_ANDROID.txt
#	lib/ui/explorer_page.dart
2026-10-18 01:01:31 +09:00
RyuJongJin 3a1a6391ca WIP X-plore j: [SMB 서버 추가] 창에 [같은 망에서 찾기] (검토 대기)
관리자 지시 (10/18): cd 의 lan_scan.dart (xplore b6e4717) 를 묶음7_88 (88 SMB) 위로 가져와 SMB 추가 창의 [찾기] 에 붙인다.
- lib/core/lan_scan.dart · test/lan_scan_test.dart: b6e4717 의 것 그대로 (cd 작성 - 사설 /24 의 445 포트에 연결만 해 보고 닫음, 64개 동시, Tailscale 은 훑지 않음)
- SMB 추가 · 고치기 창: 서버 주소 아래 [같은 망에서 찾기] → 찾는 창 (무엇을 하는지 안내 · 진행 "n / 254 확인" · [취소]).
  찾은 서버를 누르면 서버 주소 칸에 이름 (역방향 조회, 모르면 주소), 이름 칸이 비었으면 이름 앞부분을 채움. 못 찾으면 직접 넣으라는 안내
- 누를 때만 훑는다 (저절로 훑지 않음 - 내 판단: 망 전체에 연결을 시도하므로 사용자가 고를 때만)
- mDNS (_smb._tcp) 는 아직 (관리자 "더하면 좋음") - 포트 훑기로 찾은 것의 이름은 역방향 DNS

시험: smb_find_test (가짜 찾기 - 실제 망을 훑지 않음: 고르면 주소 · 이름 채움, 이름 모르면 주소, 못 찾음 안내, 추가 창 유지),
lan_scan_test (127.0.0.1 만), smb_test - 7 통과, analyze 문제 없음, l10n 빠짐 0. Android 실제 망에서는 기기 확인 필요.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 00:59:10 +09:00
RyuJongJin d5e705152a Merge branch 'xplore' into next
# Conflicts:
#	assets/l10n/en.json
#	assets/l10n/ja.json
#	assets/l10n/zh-Hans.json
2026-10-18 00:59:10 +09:00