Commit Graph

16 Commits (modular)

Author SHA1 Message Date
RyuJongJin d1081f337e W JjChip: 고르기 칩 21곳을 JjChip 하나로 + 여럿 고르기 목록은 withPicked 하나로 + 모니터 캡처 흔들림 고정
- lib/ui/jj_chip.dart: 아이콘 없는 칩은 Material 처음 꼴 (고르면 앞에 ✓), 아이콘 칩은 고르면 그 자리에 ✓ 만 (62ba78d 규칙 -
  예전에는 화면 · 색 보정 비율 칩 한 곳만 손으로). multi 면 FilterChip. 화면 · 색 보정 · 압축 · 찾기 · 일정 · 저장 공간 · 보기 ·
  정리 · 받기 설정 · 즐겨찾기 · 자막 찾기 · 복사 방식 · 원본 정리 등 21곳이 부르기만 한다. 탐색기 왼쪽 / 오른쪽 창 고르기 칩은
  고르기가 아니라 탭이라 그대로
- lib/core/picked_list.dart withPicked: 여럿 고르기 목록 켜고 끄기 (설정 3곳에 같은 코드가 있던 것)
- 시험: jj_chip_contract_test (아이콘 ✓ 바꾸기 · 처음 꼴 · multi · 못 누름 · withPicked)
- 앞 · 뒤 캡처 9 묶음 132장 각 두 번: 앞 · 뒤 0px (보이는 것은 그대로)
- 시험 쪽: monitor_shot 도 고정 폴더 · shotServices (CPU · 메모리 · 디스크 · 대상 디스크)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 09:06:21 +09:00
RyuJongJin 36069a8707 W JjField 1: 비밀 칸 6곳을 SecretField 하나로 + 캡처 흔들림 (check_shot 37·65·94 · sshkey) 을 시험 쪽에서 고정
- lib/ui/secret_field.dart: 비밀번호 · API 키 · 키 암호 칸 (처음 늘 가림, 눈 단추로 켜고 끄기, 자동 고침 · 추천 끔,
  바깥 가리기로 칸 여럿을 단추 하나로). WebDAV · FTP · SFTP · SMB · AI 서비스 · 압축이 부르기만 한다
- 눈 단추 모양 · 툴팁을 하나로 (AI 창의 채운 24 아이콘 → 다른 곳과 같은 테두리 18, 툴팁 '보이기/가리기'),
  쓰지 않게 된 사전 글 '비밀번호 보기/숨기기' 를 en · ja · zh 에서 뺌
- 시험: secret_field_contract_test (처음 가림 · 켜고 끄기 · 칸 여럿 · 300/412 · 배율 2 넘침 없음)
- 시험 쪽 고정: testFixedTempDir · pinTestTimes (폴더 이름 · 파일 · 폴더 시각), 시험 SFTP 서버 fixedPort · fixedHostKey

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 20:19:59 +09:00
RyuJongJin 828d978812 설정 A 분야 11: 탐색기 도구 (ExplorerToolSettings) - 시스템 폴더 · 루트 · Wi-Fi 공유 · ZIP 수준, 키 6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 23:32:25 +09:00
RyuJongJin 059c8cba59 설정 A 분야 4: 복사 · 이동 · rsync · 실시간 동기화 (CopySettings) - 키 16 · 도우미 _method 함께
- 부르는 곳: s.copyTasks → s.copy.tasks 꼴 (RsyncRun 의 자기 필드 copySkipNewer 는 그대로 - 같은 이름이라 잘못 바뀐 것을 되돌림)
- 문서 주석 [AppSettings.x] → [CopySettings.x] 등

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 23:10:42 +09:00
RyuJongJin a907b3d25e rc2: after_1020 f67e1e3 (15) + xplore_p3b 4ebc4f2 (d3) - 10.20_001 다음 정식 판 후보 (시험판 · 태그 없음, 관리자 지시 10/21)
둘 다 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>
2026-10-21 17:47:59 +09:00
RyuJongJin 808300b69e WIP ⑦ 밝은 화면 (나) 1: 파일 탐색기 · 주의 색 · 캡처 시험 밝은 화면 (검토 대기)
관리자 지시 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>
2026-10-21 15:59:16 +09:00
RyuJongJin 9324e4100f WIP X-plore 비교 5-1 ⑦ 밝은 테마 바탕: 색이 테마를 따름 · 설정 "화면 밝기" (시험) (검토 대기)
관리자 지시 10/21 (⑦ (가) 바탕): 처음 값은 어둡게 (예전 색 그대로), 설정 "화면 밝기: 어두운 화면 / 밝은 화면 / 기기 따라" 에 "시험" 표시.
- JjColors 를 두 벌 (JjPalette.dark = 예전 값 그대로 · light) 에서 고르는 값으로. 그래서 JjColors 를 쓰던 const 는 뺐다 (기계적으로, 62개 파일 294곳)
- 밝기를 바꾸면 테마와 함께 화면 조각 전체를 다시 그림 (상태는 그대로) - JjColors 를 직접 읽는 곳도 바로 새 색
- 기기 따라: 기기 밝기가 바뀌면 따라감. 모르는 값 · 없는 값은 어둡게
- 밝은 색은 바탕 · 칸 위 글 · 흐린 글 · 강조 · 경고 · 성공 대비 4.5:1 이상 (시험으로 확인)
- 화면별 맞추기 ((나): 탐색기 → 보기 → 설정 → 나머지) 는 다음 커밋들에서

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:08:47 +09:00
RyuJongJin 53389baa64 F1 비밀번호 · 키 칸 이름은 짧게, 괄호 설명은 칸 아래 도움 글로 · 131 쿠키 안내 글을 다른 설명 글과 같은 크기 · 색으로 (관리자 지시 10/21, 15 찾음)
- 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>
2026-10-21 02:52:22 +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 16f33b3b71 WIP zip_aes: 비밀번호 ZIP (AES-256) 만들기 · 한글 비밀번호 ZIP 풀기 고침 (검토 대기)
관리자 지시 (10/17, k): 86 [ZIP 으로 묶기] 창에 "비밀번호" 칸. 비밀번호는 기억 · 기록하지 않음.
- 창: [비밀번호 (선택)] (보기 · 숨기기) → 넣으면 [비밀번호 다시 넣기], 같아야 [암호로 묶기]. 잊으면 못 푼다 · 이름 목록은 암호화 안 됨 안내
- 영문 · 숫자 · 기호 비밀번호: 동봉 7-Zip (Windows 7z.exe · Android lib7zz) 로 -tzip -mem=AES256 -mcu=on, 비밀번호는 표준 입력으로만.
  흘려 가며 암호화해 큰 동영상도 메모리에 다 올리지 않음. 넣을 파일은 앱이 고름 (링크 · junction 빼고, 고른 것 기준 상대 이름)
- 한글 등 영문 밖 글자 비밀번호: Windows 7-Zip 은 받지 않는다 (표준 입력 · 명령 줄 모두 "매개 변수가 틀립니다", 10/17 시험)
  → archive 의 AES-256 (WinZip AE) 으로. 파일을 통째로 메모리에 올리므로 512MB 넘는 파일이 있으면 미리 알리고 묶지 않음 (내 판단).
  창에 "이 앱에서는 풀리지만 7-Zip 등 다른 프로그램에서는 풀리지 않을 수 있음" 안내 (막지는 않음)
- 버그 고침: archive 4.3.0 은 비밀번호를 password.codeUnits 를 바이트로 잘라 써서 한글이 깨졌다 (다른 프로그램과 맞지 않음).
  UTF-8 바이트로 넘기고 (zipPasswordBytes), 풀 때는 UTF-8 로 먼저 · 틀리면 예전 방식으로 한 번 더
- -mcu=on: 7-Zip 이 만든 ZIP 의 한글 이름을 UTF-8 로 (안 하면 앱 · Android 에서 이름이 깨졌다 - 시험에서 찾음)

따로 알릴 것 (이 커밋에서 고치지 않음): 86 의 7z · RAR 풀기도 비밀번호에 한글이 있으면 Windows 7-Zip 이 표준 입력을 받지 않아 실패할 것 (관리자 판단 필요).

시험: archive_ops (영문 비밀번호 → 7-Zip, 한글 비밀번호 → archive: 앱 풀기 · 틀린 비밀번호 · 7-Zip 풀기, 취소 · 실패 · 빈 비밀번호),
archive_ui (두 번 같아야 누름 · 한글 안내 · [취소] 는 아무 일 없음), licenses - 25 통과, analyze 문제 없음, l10n 빠짐 0.
위젯 시험 안에서는 7-Zip 이 가짜 시간 때문에 끝나지 않아 창 동작만 본다 (만들기 · 풀기는 단위 시험). 7z 의 표준 입력 비밀번호는 실제 7z.exe 로 확인.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 00:09:10 +09:00
RyuJongJin 9a786f3496 WIP 88 SFTP 2/3: 화면 - 환경 설정 SFTP 서버 · 탐색기 탭 · 처음 키 확인 · 고르는 곳 · 라이선스 고지 (미완)
- 환경 설정 > 파일 탐색기 > SFTP (lib/ui/sftp_settings.dart): 추가 · 고치기 · 지우기 (쓰는 곳 알림), 서버 주소 · 포트 · 아이디 ·
  비밀번호 · 개인 키 파일 고르기 (내용만 안전 저장소에, 원래 경로는 저장하지 않음) · 키 암호 · 시작 폴더 · 오래된 ssh-rsa 허용,
  [연결 확인] 에서 처음 보는 키는 지문을 보이고 [믿고 연결], 믿은 키 보기 · [믿은 키 지우기] (마스터 비밀번호 뒤).
- 파일 탐색기 · Rsync 화면: SFTP 서버 탭 (🔑), 탭 길게 누르기 = 고치기, 끝 버튼에 [SFTP 서버 추가] (좁으면 ⋮ 메뉴에).
  처음 연결: 목록 대신 "처음 연결하는 서버입니다 · 지문" 안내와 [지문 확인하고 연결] → 확인 창 [믿고 연결] → 지문을 설정에 저장하고 읽음.
  바뀐 키: 막고 예전 · 지금 지문, [서버 설정 고치기]. 경로 복사는 sftp://아이디@서버:포트/경로 (비밀번호 없음).
- 실시간 동기화 · 모니터링의 폴더 고르기에 SFTP 서버도. 화면 경로 "🔑 서버 › 폴더".
- WebDAV 에만 맞던 글 6개를 "WebDAV · SFTP" 로 (풀기 · ZIP · 분석 · MKV 목록 · Rsync 안내 · 빠른 보기). 탐색기 ⋮ 이름 "경로 입력 · 네트워크 서버".
- 파일 고르기: 확장자 목록이 비면 모든 파일 (확장자가 없는 개인 키 파일 - Windows · Android).
- 라이선스: dartssh2 4.1.0 (MIT) 를 두 고지에 (pointycastle · pinenacl · asn1lib 원문은 패키지 라이선스 화면), 판이 바뀌면 시험이 알림.
- 번역 en · ja · zh-Hans (빠진 번역 0).
- 시험: sftp_explorer_test (시험 서버로 처음 연결 → 지문 → 믿고 연결 → 목록 · 지문 저장), test/support/sftp_server.dart 로 서버 띄우기 공용,
  글이 바뀐 시험 3곳 고침. 전체: 이 4곳 말고 통과, 새로 남은 임시 폴더 0 (move_settled 1번은 powershell 실행 "액세스 거부" - 다시 돌려 통과).
- 내 판단: 끝 버튼 줄에 [SFTP 서버 추가] 아이콘을 하나 더 (WebDAV 와 따로 바로 보이게).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 22:28:35 +09:00
RyuJongJin a6b3f13e62 WIP 릴리스 전 점검 (지시 8): DNS 실패 기록에서 사이트 이름 뺌 · archive 고지 · 큰 글자 넘침 3곳 (검토 대기)
- 개인정보: DNS 강제 프록시의 "DNS 실패 (사이트): 까닭" 이 연 사이트 이름을 app.log 에 남겼다 → 까닭 (닿지 않은 DNS 서버) 만.
- 라이선스: ZIP 풀기 · 묶기의 archive 4.3.0 (MIT, Brendan Duncan) 을 두 고지 (Windows · Android) 에 이름으로. 판이 바뀌면 시험이 알림.
- 접근성 (253 시험을 묶음6 새 창으로 넓힘, 412×900 · 900×412 · 글자 1.6배, 누르는 것이 화면 폭 안인지도 봄):
  · 78 이름 일괄 창: 대소문자 고르기가 가장 긴 항목 폭이라 창을 넘음 → 한 줄 전체 (isExpanded). 낮은 화면에서 아래가 넘침 → 창 안 스크롤.
    "대소문자 무시" 글은 줄 바꿈.
  · 86 풀기 확인 창: "같은 이름이 있으면 [고르기]" 가 화면 밖으로 밀림 (넘침 오류 없이 누를 수 없었다) → 자리가 없으면 다음 줄.
  · 85 작은 표시: "복사 · 이동 멈춤 - 눌러서 보기" 가 412 를 넘음 → 두 줄까지.
버그 수정 (사용자 동작은 배치만 바뀜). 시험: 253 의 settle 이 시험 시계를 앞으로 돌리게 (열리는 움직임이 끝나야 넘침이 보임).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 16:18:14 +09:00
RyuJongJin 0f3133cc68 WIP 15 캡처 지적 ①~④: 영어 단수 · 좁은 화면 풀 곳 세로 목록 · 찾기/분석 줄은 시작한 폴더 기준 짧은 경로 · 캡처 DEBUG 띠 끔 (검토 대기)
관리자 지시 (15 캡처 지적, 버그 수정):
① 영어 "1 problems" · "1 names": englishSingular (61) 에 problems · names · paths 를 더하고,
   수와 명사 사이 꾸미는 말 하나도 넘게 ("1 incomplete files" → "1 incomplete file"). 78 영어 글 "until fixed".
② 86 풀 곳: 폭 720 미만이면 칩 대신 세로 라디오 목록 (글이 다 보임). ZIP 묶기의 넣을 곳도 같은 도우미.
③ 79 찾기 결과 · 87 큰 파일 줄: 시작한 폴더 이름부터의 상대 경로 (shortUnder), 길면 가운데 줄임 (앞 … 마지막 두 단계),
   전체 경로는 마우스를 올리거나 그 줄을 길게 누르면 (Tooltip).
④ 캡처 시험 debugShowCheckedModeBanner: false.

내 판단: ① 은 개수별 글을 따로 두지 않고 기존 61 의 단수 처리를 넓힘 (같은 꼴의 다른 글도 함께 고쳐짐).
② 를 ZIP 묶기 창에도 적용 (같은 모양).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 15:57:25 +09:00
RyuJongJin e0466d6168 WIP 86 Android: 7-Zip 25.01 을 공식 소스에서 NDK 로 빌드 (lib7zz.so) - Android 에서도 7z · RAR 풀기 (검토 대기)
- 관리자 지시 4: 7z2501-src.7z (SHA-256 2aed39b8…0181 고정, 고치지 않음) 의 CPP/7zip/Bundles/Alone2 (7zz) 를 NDK clang
  (aarch64-linux-android24) 으로 빌드 - tool/build_7zz_android.sh. 어셈블리 끔, Windows 에서 빌드할 때 makefile 이 MinGW 로
  여기지 않게 SystemDrive · SYSTEMDRIVE 를 비움, 새 clang 경고로 실패하지 않게 경고 묶음 끔. libc++ 는 정적 (libc · libm · libdl 만 씀).
  결과 third_party/7zip/android/arm64-v8a/lib7zz.so (2.8MB) + License.txt.
- APK: jniLibs 에 third_party/7zip/android, third_party_libs.txt · check_apk 목록에 lib7zz.so (check_apk 통과 - 실행 파일 5개).
- 앱: bundledSevenZip 이 Android 에서는 네이티브 라이브러리 폴더의 lib7zz.so (rsync 와 같은 방식). 있으면 "다른 앱으로 열기" 안내
  대신 실제 풀기 - 같은 검사 (zip slip · 링크 · 이름 · 공간 · 비밀번호 표준 입력) 그대로. 없으면 예전처럼 안내.
- 고지: THIRD_PARTY_NOTICES_ANDROID 에 7-Zip 25.01 (LGPL 2.1+ · BSD · unRAR 제한, 소스 주소 · 빌드 방법 · 대응 소스 = 태그).
- 시험: licenses_test (Android 고지 · 빌드 스크립트 해시 · APK 목록). Android 기기에서 실제로 푸는 것은 15 의 기기 확인 필요.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 15:17:01 +09:00
RyuJongJin c440b688ea WIP 86 보충 (관리자 · 15): 덮어쓰기에도 받는 쪽이 더 새것이면 그대로 · Windows 에서 쓸 수 없는 이름은 미리 건너뜀 · 릴리스에 7-Zip 꼭 (검토 대기)
- [덮어쓰기] 를 골라도 설정 "받는 쪽이 더 새것이면 건너뛰기" (229, 처음 켜짐) 를 따른다: 이미 있는 파일이 압축 안의 것보다
  2초 넘게 새것이면 덮지 않는다 (ZIP 은 DOS 시각, 7z 는 목록의 Modified 로 견줘 목록 파일에서 뺌). 끝 알림 "n개는 더 새 파일이라 그대로 둠".
  확인 창에 [덮어쓰기] 를 고르면 "덮어쓴 파일은 되돌릴 수 없습니다" (휴지통에 남지 않음).
- 압축 안 이름이 이 기기에서 쓸 수 없으면 (Windows: CON · NUL · ? * " < > | · 끝 점 · 빈칸 - 78 의 nameProblem) 풀기 전에 걸러
  확인 창에 "풀 수 없는 이름 n개 (건너뜀)" - 나머지는 그대로 푼다 (풀다 실패하거나 7-Zip 이 다른 이름으로 바꾸지 않게).
  Android 는 지금처럼.
- 릴리스: make_zip.ps1 이 Lib\7zip\7z.exe · 7z.dll · License.txt 가 없으면 실패. CMake 는 없으면 경고 (개발 빌드는 그대로).
- (번역 파일에는 다음 커밋 87 의 글도 함께 들어 있다 - 쓰이지 않는 열쇠)
- 시험: archive_ops_test (쓸 수 없는 이름 · ZIP 과 실제 7z 의 받는 쪽이 더 새 파일).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 14:47:39 +09:00
RyuJongJin 219510fec0 WIP 86 압축: ZIP 만들기 · 풀기, 7z · RAR 풀기 (Windows - 7-Zip 25.01 동봉), 풀기 전 검사 + 품질 올리기 다듬기 정도 설정 (검토 대기)
86 (관리자 지시 · 승인):
- ZIP 만들기 (archive 4.3.0, MIT): 길게 누르기 [ZIP 으로 묶기] (표시한 것 모두 · 바깥 것만) - 이름 · 압축 정도
  (빠르게 1 · 보통 6 (처음 값) · 작게 9, 설정 zipLevel 로 기억) · 넣을 곳 (지금 폴더 · 다른 창). 링크 · junction 은 넣지 않음.
  .jjpart 에 쓰고 다 되면 이름 바꾸기 - 취소 · 실패면 만들다 만 ZIP 이 남지 않음. 같은 이름이면 "이름 (2).zip".
- 풀기: 길게 누르기 [압축 풀기] (ZIP · 7z · RAR), 7z · RAR 은 열면 풀기, 보기의 ZIP 화면 [풀기] 도 같은 흐름.
  풀 곳 (압축 옆 새 폴더 · 압축이 있는 폴더 · 다른 창), 같은 이름 (이름 바꾸기 · 건너뛰기 · 덮어쓰기 - 처음은 복사 설정대로), 진행 창 · 취소.
- 7z · RAR: 7-Zip 25.01 (7z.exe · 7z.dll) 을 실행 파일 옆 7zip\ 에 동봉 (tool/fetch_7zip.ps1 - 공식 MSI, SHA-256 고정,
  관리자 설치로 풀기만). RAR 은 풀기만 (unRAR 라이선스) - RAR 만들기 선택지 없음.
  Android 는 아직 (lib7zz.so 빌드는 마감 뒤로) - 막지 않고 "다른 앱으로 열기" 안내.
- 보안 (관리자 판단) - 셋 다 목록을 먼저 읽고 검사:
  · 밖으로 나가는 경로 (../ · 절대 경로 · 드라이브 · UNC · ':') 는 막고 확인 창 · 끝 알림에 (zip slip).
  · 압축 안의 심볼릭 링크 · junction 은 만들지 않고 건너뛰고 알림.
  · 풀린 크기가 대상의 빈 공간보다 크면 풀기 전에 알리고 묻는다 ([그래도 풀기]).
  · 비밀번호: 보이지 않는 칸으로 묻고, 7-Zip 에는 명령 줄이 아니라 표준 입력으로만 (작업 기록 · app.log 에 없음).
    ZIP 은 가운데 목록에서 암호 표시를 읽어, 비밀번호 없이 암호 글자를 그대로 쓰지 않는다. 틀리면 다시 묻는다.
- 라이선스: assets/licenses/7ZIP_LICENSE.txt (원문 - LGPL 2.1+ · BSD 3/2-clause · unRAR 제한), 라이선스 화면 (7-Zip · LGPL),
  THIRD_PARTY_NOTICES (판 · 소스 7z2501-src.7z · RAR 은 만들지 않음), 설치 폴더 7zip\ 에 License.txt · LGPL-2.1.txt.
- 내 판단: 진행은 탐색기 진행 패널이 아니라 진행 창 (취소) - 진행 패널은 복사 · 이동 (TransferJob) 전용이라.
보충 (관리자 지시): [품질 올리기] 다듬기 정도 설정 - 약하게 0.15 / 보통 0.25 (처음 값) / 강하게 0.4. fetch 스크립트에 받은 주소 · 판 · 날짜.
- 시험: archive_ops_test (막는 이름 · 계획 · ZIP 만들기 · 풀기 · 같은 이름 · zip slip · 비밀번호 · 취소, 실제 7-Zip 목록 · 풀기 ·
  표준 입력 비밀번호 · 머리 암호 · 틀린 비밀번호), archive_ui_test (확인 창 · 취소 · 다른 앱 안내 · 묶기), licenses_test (7-Zip),
  ai_quality_test (다듬기 정도).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 14:38:26 +09:00