Commit Graph

22 Commits (9d1883311fb423179e9b0209ed6496b7c41dcf7e)

Author SHA1 Message Date
RyuJongJin 9d1883311f modular_sync F5: 화면에 보이는 실행 옵션 글 = 실제 실행 인수 (runOptionsText 하나)
- core/sync_preview.dart runOptionsText: 실행 인수 (rsyncArgs · robocopyRuns) 와 같은 규칙 - 원본 지우기 옵션은 빼고 이동일 때만 그 방법의 것,
  robocopy 는 앱이 붙이는 것 (이동의 /MOVE /IS /IT /IM · 링크 /XJ · 더 새것 건너뛰기 /XO) 까지
- 부르는 곳: 모니터링 "실제 실행" · 실행 전 미리 보기 (effectiveRunText) · 탐색기 복사 · 이동 확인 창 · 실시간 동기화 [최종 정리] 창
- 고친 어긋남 (15 검토 F5): 탐색기 확인 창이 robocopy 이동을 /MOVE 로만 보였다 · [최종 정리] 창이 모니터링에서 고친 옵션이 있어도 늘 -avHPOg 로 보였다
- 약속 시험: 보이는 글 = 실제 인수 (robocopy 4 · rsync 4 · 현재 방식)

사용자가 보게 될 동작: 탐색기의 robocopy 이동 확인 창에 실제 옵션이 모두 보임 · [최종 정리] 창에 실제로 실행할 옵션이 보임

확인: analyze 0 · 단위 1482 ×2 · 통합 6/6 ×2 · base10 214장 0px · lsync_p0_shot ×2 · rsync_page ×2
(rsync_page 1회는 시작 3초 만에 시험 앱이 끝남 - media_kit 디버그 기록 파일의 PID 겹침, 이 고침과 무관 · 따로 보고)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 10:15:30 +09:00
RyuJongJin 512c9d8b14 M2-b: Windows 휴지통 주입 (전역 recycleBinForTest 없앰)
- recycle_bin: RecycleBinBackend 약속 + WindowsRecycleBin (이 기기의 휴지통). 전역 recycleBinForTest · recycle() · restoreRecycled() 없앰
- delete_ops: deletePaths(bin:) · undoRecycle(bin:) - 처음 값 WindowsRecycleBin
- ExplorerDevice.recycleBin → ExplorerFlows · ExplorerDeleteFlow(recycleBin:)
- 시험: useTestRecycleBin(device) 가 시험 기기에 시험 폴더 안의 휴지통을 넣음. 영구 삭제만 하는 약속 시험 4개는
  휴지통으로 보내면 실패하는 것을 넘김 (사용자 휴지통에 닿지 않게). 넘겨받은 휴지통 약속 시험 1개 더함
- 시험용 휴지통: 자기 폴더가 없어졌으면 다시 만들지 않고 그대로 알림 (진단)
- 전부터 있던 실패 2개 고침 (E6 부터 Windows 처음 모양이 Total Commander 라 이름 · 확장자가 다른 칸):
  windows_check_shot_test · windows_b3_shot_test 가 X-plore 모양을 직접 고름

확인: analyze 0 · 단위 1472 ×2 · 통합 6/6 ×2 · base10 214장 0px · windows_check_shot ×2 · windows_b3_shot ×2
(첫 확인의 통합 1회에서 412 지우기가 '경로를 찾을 수 없음' 으로 11장 벗어남 - 다시 4회 모두 0px, 원인 미확인)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:22:23 +09:00
RyuJongJin beb8107d81 M2-a: LocalFs (목록 · 저장 장치 · 드라이브) 주입 + 빈 목록 경합 고침
- lib/app/local_fs.dart: LocalFs 약속 (list · volumes · probe), RealLocalFs = 이 기기 그대로
- ExplorerDevice.listVolumes/probeDrive → ExplorerDevice.fs (LocalFs)
- ExplorerController(fs:) → loadDir(list:) (처음 값 listEntries)
- 빈 목록 경합: reloadOpen 이 끝날 때, 시작할 때 읽어 둔 것 중 닫힌 것만 잊음
  (예전: 시작할 때 찍은 열린 목록으로 지워, 다시 읽는 동안 펼친 폴더가 비어 보였다)
- 결정적 시험 explorer_reload_race_test: 다시 읽기를 붙잡는 느린 LocalFs 를 생성자로 넘김
  (실제 폴더 · 실제 목록). 예전 판에서는 실패 (펼친 폴더 [] ), 고친 판에서는 통과

확인: analyze 0 · 단위 1471 ×2 · 통합 6/6 ×2 · base10 214장 0px

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:43:25 +09:00
RyuJongJin 6f9d8f6284 목록에서 두 번 누르면 도로 나오던 것 고침 · TC Enter = 열기
- 원인 (실제 앱): 목록 줄 (TC · '폴더 + 파일 목록') 의 폴더 · '..' 는 한 번에 열려, 두 번 누르면 두 번째 누르기가 같은 자리의 '..' 에
  맞아 도로 나왔다
- TC 모양: 폴더 · '..' 도 한 번 = 고르기, 두 번 = 열기 (ClickPolicy doubleOpens - Total Commander 와 같게)
- TC 모양: Enter = 열기 (폴더는 들어가기, 파일은 열기) - 바꿀 수 있는 키 동작 'open', 처음 키는 TC 모양일 때만 Enter
- '폴더 + 파일 목록': 한 번 열기는 그대로, 연 직후 두 번 누르기 시간 (300ms) 안의 다음 누르기는 버림 (마지막 틀 시각으로 잼)
- 약속 시험: 누르기 표 (TC) · TC 한 번 / Enter / '..' 두 번 · 목록 배치 곧바로 두 번째 누르기 · 시간 지난 '..' 한 번
- 점검 시험: TC 를 두 번 누르기 · Enter 로 되돌림 (실제 시간에서 들어가기 · 나오기 됨), 목록 배치 단계 더함 - 214장 2회 같음 (base10)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:48:45 +09:00
RyuJongJin afe15620bd E6 보충 (관리자 결정 10/23): 지운 뒤 초점 · 좁은 TC 줄의 확장자 · TC 전용 점검 단계
- 지운 뒤 초점: 지운 줄의 다음 줄로, 마지막이었으면 앞 줄로 (TC · X-plore 같음) - focus_after_delete (순수 함수, 약속 시험 4) +
  지우기 흐름이 부름. 실제 화면 시험: TC 목록에서 F8 단추로 지우면 다음 줄이 지금 줄
- TC: 확장자 칸이 없으면 (좁은 줄 · 좁아 숨긴 열) 이름에 확장자를 붙인다 ('notes.txt') - 정보를 숨기지 않게.
  기존 큰 글자 시험 3곳의 TC 기대를 'a' → 'a.txt' 로 (이 결정에 따른 것, 주석에 적음)
- 탐색기 점검 시험: TC 전용 단계 (Backspace 로 맨 위 · 메뉴 [열기] 로 들어가기 · Backspace 로 나오기 · F5 · F6 · F8 · 지운 뒤 초점,
  단계마다 폴더 시각 다시 고정 + Ctrl+R). 두 번 누르기는 이 실제 시간 시험에서 열기로 잡히지 않아 단위 약속 시험이 본다
- 확인: 단위 1461 ×2 · 통합 6/6 ×2 · 캡처 201장 2회 0px 같음 (base9) · X-plore 는 '삭제 확인' 3장만 바뀜 (초점)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 10:30:21 +09:00
RyuJongJin ae3365bff1 E6 2 · 3: Total Commander 모양 (창마다 목록 · '..' · 아래 F3~F8 · 남은 공간) · 좁은 창의 줄 모양 (공용 줄 부품)
- TC 모양: 트리 대신 지금 폴더의 목록 (paneListRows - '폴더 + 파일 목록' 의 목록과 같은 함수, 목록의 스크롤).
  사용자가 고른 '폴더 + 파일 목록' 배치 · Rsync 화면은 그대로 트리
- tc_key_bar: F3 보기 · F4 편집 · F5 복사 · F6 이동 · F7 새 폴더 · F8 삭제 - 이미 있는 동작을 부름
- tc_drive_space: 창 위 남은 공간 / 전체 - ExplorerDevice.diskSpace 로 받음 (시험은 TestExplorerDevice.space)
- 좁은 창 (창 폭 200 아래, narrowRowWidth): 아이콘 칸 줄임 · 끌기 손잡이 숨김 · 열 대신 이름 먼저 (크기 · 날짜는
  두 줄이 들어가는 줄 높이에서 이름 아래 - TC 26 은 이름만) · 열 머리도 이름만. X-plore · TC 가 같은 ExplorerRowView
- 약속 시험 explorer_tc_look_test 4개. 점검 시험은 X-plore · TC 두 모양을 찍는다 (폴더 시각 · 남은 공간 고정)
- 확인: 단위 1456 ×2 · 통합 6/6 ×2 · 캡처 180장 2회 정확히 같음 (base8) · X-plore 1920 · 960 은 base7 과 같음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 07:48:42 +09:00
RyuJongJin 20f9d083b2 E6 1: 탐색기 모양 처음 값을 기기마다 (Windows = Total Commander) · 예전 판이 저장한 X-plore 는 한 번만 묻기
- ExplorerSettings: 처음 값 defaultStyle (Windows totalcmd · Android xplore). 예전 파일에 모양 키가 없으면 그때의 X-plore.
  Windows 에서 저장된 xplore 이고 물었다는 표시 (explorerStyleV2) 가 없으면 styleAskPending (저장 안 함)
- style_ask: 탐색기를 열 때 한 번 [바꾸기] (Total Commander) / [그대로] (X-plore) - 창 밖으로 닫지 못함, 어느 쪽이든 다시 묻지 않음.
  환경 설정에서 직접 고르면 묻지 않음
- 약속 시험 explorer_style_contract_test: 새 설치 · 저장된 xplore (키 없던 예전 파일 포함) · windows/totalcmd 안 물음 · [그대로] · [바꾸기]
- X-plore 모양 (트리) 을 보는 기존 시험 14개 파일 + 공용 하네스에 style = 'xplore' 를 밝힘 (기대값 그대로, 관리자 승인 10/23)
- 설정 JSON 골든: 새 키 explorerStyleV2 한 줄 · 처음 값 출력의 Windows 모양 totalcmd 만 바꿈. 사전 4개 (en · ja · zh-Hans)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 05:39:39 +09:00
RyuJongJin d83b0b5aef 설정 A: 일반 분야 (GeneralSettings) · 남은 키 정리 - toJson · fromJson 은 분야 목록만 돈다
- 일반: 즐겨찾기 · 저장 공간 정리 · 바뀐 기본값 알림 · 안쪽 → 바깥 · 비밀번호 기억 · 휴지통 · 모든 파일 안내 (allFilesHint2)
- imageExts 는 보기 화면 분야 (ReaderSettings) 로
- 표시 cookieScopeV2 → 다운로드, robocopyLinksV1 → 복사 분야로
- AppSettings 에 남은 것: 분야 목록 · 모르는 항목 보존 · 비밀 값 빼기 · 바뀐 기본값 알림 · 실행 중 값 (webViewDataDir)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 00:15:58 +09:00
RyuJongJin c5aa8c657b 설정 A 분야 13: 화면 · 앱 모양 (DisplaySettings) - 키 13 · clampUiScale → DisplaySettings.clampScale
- ComponentManifest 의 자기 필드 components 는 그대로 (같은 이름이라 잘못 바뀐 것을 되돌림)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 00:06:30 +09:00
RyuJongJin 8d26d1af1e 설정 A 분야 12: 원격 서버 (RemoteSettings) - WebDAV · SFTP · SMB · FTP 목록 · 쉬는 시간 · WebDAV 외부 열기, 키 7
- 비밀 값 처리 (webdavServers 의 plainSecrets · 새 비밀 값은 평문으로 쓰지 않음) 그대로, 설명 주석도 함께 옮김

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 23:37:49 +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 a35293271e 설정 A 분야 10: 암호 보관함 (VaultSettings) - 키 3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 23:30:18 +09:00
RyuJongJin 6054daf17a 설정 A 분야 6: 보기 화면 (ReaderSettings) - 키 9 · zipComicV2 표시
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 23:16:46 +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 428fe99a82 설정 A 분야 1: 파일 탐색기 (ExplorerSettings) - 키 31 · 옮김 표시 3
- lib/app/settings/explorer_settings.dart: 탐색기 설정의 이름 · 처음 값 · 읽기 · 쓰기를 한 곳에
- AppSettings 는 explorer 분야를 갖고 분야 목록을 돌며 합치기만 (toJson · fromJson 에서 탐색기 키를 지움)
- 부르는 곳: s.explorerLayout → s.explorer.layout 꼴 (옛 이름 getter 없음), 저장 키 이름은 그대로
- 고침: fromJson 이 바뀐 기본값 알림 (_migrated) 을 분야를 읽기 전에 계산하던 것 - 분야를 먼저 읽음
- JSON 약속 시험: 알림 목록 (__migrated) · 옛 판 설정 경우를 더함, 기준은 옛 판 (db45f80) 에서 다시 만듦

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 22:08:55 +09:00
RyuJongJin 79f2a2151f E5d-6: 권한 · 안내 · 보기 창 · 찾기 · 이름 · 도구 · 끌어 놓기 · 키 · 배치를 모듈로 (explorer_page 2,032 → 474)
- explorer/access_flow.dart: ExplorerAccess (모든 파일 권한 · 시스템 폴더 · 루트 · 다시 연결)
- explorer/pane_notices.dart: ExplorerNotices (목록 위 안내: 읽기 전용 · 권한 · 읽지 못함 · 서버 키 · 만들다 만 파일)
- explorer/view_dialogs.dart: 정렬 · 즐겨찾기 · 내역 · 창 배치 · 버튼 구성
- explorer/search_flow.dart · rename_flow.dart · tools_flow.dart (저장 공간 · Wi-Fi) · drop_flow.dart
- explorer/key_flow.dart: ExplorerInput (단축키 · 글자로 빠른 필터 · 마우스 앞뒤)
- explorer/explorer_layout.dart · explorer_body.dart · explorer_bars.dart: 배치 규칙 · 창 배치 · 위 막대들
- explorer/explorer_flows.dart: 흐름 모듈 묶음 (버튼 · 메뉴 · 키 · 끌어 놓기가 같이 씀)
- 빠른 보기 · MKV 목록 넣기는 open_flow, 창 틀은 pane_view (ExplorerPaneFrame)
- ExplorerCommands 16 → 3 (context · otherDir · dual)
- 약속 시험: test/explorer_page_modules_contract_test.dart
- 동작은 그대로 (전체 단위 2회 · 점검 통합 2회 · 픽셀 비교)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 13:48:49 +09:00
RyuJongJin 4b3ccb0c4f E5d-5: 줄 메뉴 · 지우기 · 옮기기 · rsync · 파일 열기 흐름을 모듈로 (explorer_page 3,531 → 2,032)
- explorer/write_guard.dart: ExplorerGuard (압축 안 · 시스템 폴더 · 루트는 읽기 전용, 압축에서 꺼내기)
- explorer/explorer_jobs.dart: ExplorerJobs (도는 복사 · 이동 · rsync 목록, 끝나면 잠깐 뒤 내림, 이어받기)
- explorer/transfer_flow.dart: ExplorerTransfers (복사 · 이동 · 담기 · 붙여넣기 · 확인 창 · rsync 실행 파일)
- explorer/rsync_flow.dart: ExplorerRsyncFlow (Rsync 화면 → ← ⇄)
- explorer/delete_flow.dart: ExplorerDeleteFlow (휴지통 · 앱 휴지통 · 영구 삭제 · 되돌리기 · 휴지통 열기)
- explorer/open_flow.dart: ExplorerOpener (file_opener 의 길대로 실제로 열기 · 보기 · 재생 · 압축 · PDF · 공유)
- explorer/item_menu.dart · item_actions.dart: ExplorerItemMenu · 정보 · 경로 복사 · 숨기기 확인 · .nomedia · 아이콘 줄
- explorer/name_dialog.dart: askName
- ExplorerSelect.targets 더함, ExplorerCommands 24 → 16
- 약속 시험: test/explorer_flows_contract_test.dart (버튼 약속 시험은 실제 흐름으로)
- 동작은 그대로 (전체 단위 2회 · 점검 통합 2회 · 픽셀 비교)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 13:07:19 +09:00
RyuJongJin 77d962bcdf E5d-4: 기능 버튼 · 버튼 줄 · 표시 막대 · 진행 패널을 모듈로 (explorer_page 4,229 → 3,532)
- explorer/explorer_buttons.dart: ExplorerButton (옮김) · ExplorerCommands 약속 · ExplorerButtons (누르기 · 길게 = 짝 동작)
- explorer/toolbar.dart: ExplorerToolbar (버튼 줄 · 더 보기 · 고정)
- explorer/marks_bar.dart: ExplorerMarksBar · markPattern · PatternDialog
- explorer/transfer_panel.dart: ExplorerTransferPanel · TransferProgressChip / explorer/job_view.dart: TransferJobView
- ExplorerSelect.clearMarks 더함 (표시 지우기)
- 화면의 일은 이름을 공개로 바꿔 ExplorerCommands 를 바로 채움 (전달 코드 없음)
- 약속 시험: test/explorer_buttons_contract_test.dart
- 동작은 그대로 (전체 단위 2회 · 점검 통합 2회 · 픽셀 비교)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 12:29:35 +09:00
RyuJongJin b5b1b13d61 E5d-3: 창 머리 · 창 보기 · 경로 입력 · 서버 흐름을 모듈로 (explorer_page 4,857 → 4,227)
- explorer/pane_header.dart: ExplorerPaneHeader (뒤로 · 앞으로 · 즐겨찾기 · 필터 · 저장 장치 탭 · 끝 버튼 / 좁으면 ⋮)
- explorer/pane_view.dart: ExplorerPaneParts 약속 · ExplorerPaneView · ExplorerListView · ExplorerFilterBar · ExplorerExtraRow · 열 배치 · 줄 키 · 안내 높이
- explorer/path_dialog.dart: PathDialog · checkEnteredPath · SMB 주소 도우미
- explorer/server_flows.dart: ExplorerServers (WebDAV · SFTP · FTP · SMB 추가 · 고치기 · 경로 입력)
- 약속 시험: test/explorer_pane_view_contract_test.dart
- 동작은 그대로 (전체 단위 2회 · 점검 통합 2회 · 픽셀 비교)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 11:57:37 +09:00
RyuJongJin e6e4499f22 E5d-2: 줄 위젯 · 누르기/고르기 작은 컨트롤러 · 썸네일을 따로 (explorer_page 는 부르기만)
관리자 승인 E5d 6단계 중 2. 동작은 바꾸지 않음 (ExplorerController 에는 더하지 않음 - 관리자 지시)
- lib/ui/explorer/explorer_select.dart ExplorerSelect (242줄): 줄 누르기 · 두 번 · ✔ · Rsync 고르기 · Shift 범위 · Ctrl 고르기 ·
  펼치기/접기 · 선택 모드. 규칙은 ClickPolicy · Selection 이 가지고 여기는 화면 상태에 이어 주기만. 파일 여는 일은 부르는 쪽 콜백
- lib/ui/explorer/row_view.dart ExplorerRowView (323줄): 줄 하나 그리기 - 컨트롤러 둘 + 콜백 (메뉴 · 끌기 · 놓기) 만 받음
- lib/ui/explorer/file_thumbs.dart (174줄): 동영상 정보 · 썸네일 · 큰 썸네일 (빠른 보기도 씀)
- 줄 위젯으로 옮기며 생긴 회귀 하나를 고침: 좁은 폴더 트리의 이름 두 줄 판단에서 목록 글자 배율을 두 번 곱함 (줄 위젯은 이미
  배율을 곱한 MediaQuery 안) → 150% Total Commander 에서 2px 넘침 (explorer_text_scale_test 40). 배율을 다시 곱하지 않게 해
  원래 계산과 같게. E5d-1 판에서 그 시험이 2회 통과함을 확인한 뒤 고침
- explorer_page 5,497 → 4,857

확인: analyze 0 · 전체 단위 2회 통과 1,335 · 건너뜀 18 · 실패 0 · 점검 통합 시험 (1920 · 960 · 412) 2회 통과.
캡처 픽셀 비교 (고정 기준 E5a): 90장 중 88 · 89장 픽셀까지 같음, 다른 1 · 2장은 기준끼리도 다른 움직이는 장면 (이동 확인)
약속 시험 test/explorer_select_contract_test.dart 3 (실제 시험 폴더 · Host 는 실제 화면 · 시각 주입)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 11:14:31 +09:00
RyuJongJin 4279747371 E5d-1: 탐색기 상태 · 화면 밖의 일을 ExplorerController 로, 화면 부탁은 ExplorerHost 로
관리자 승인 E5d 6단계 중 1. 동작은 바꾸지 않음
- lib/ui/explorer/explorer_controller.dart ExplorerController (448줄): 창 두 개 · 지금 창 · 저장 장치 · 드라이브 · 폴더 크기 ·
  압축 · 목록에서 숨기기 · 읽기 · 정렬 · 이동 · 뒤로/앞으로 · 기억 · 새로 고침. 일은 이미 있는 모듈 (PaneState · NavHistory ·
  dir_loader · tree_rows · volumes · archive_browse · app_hidden · folder_size) 에 맡기고 묶어 부르기만
- lib/ui/explorer/explorer_host.dart ExplorerHost: 일이 화면에 부탁하는 것 (떠 있는지 · 알림 · 스크롤 · 다음 그리기).
  탐색기 화면 상태가 구현
- lib/ui/explorer/explorer_pane.dart ExplorerPane: PaneState + 화면 부품 (스크롤 · 빠른 필터 칸) - explorer_page 의 _Pane
- explorer_page 는 컨트롤러를 부르기만: 5,922 → 5,497. 줄 누르기 · 고르기는 E5d-2 (줄 위젯과 함께)

확인: analyze 0 · 전체 단위 2회 통과 1,332 · 건너뜀 18 · 실패 0 · 점검 통합 시험 (1920 · 960 · 412) 2회 통과.
캡처 픽셀 비교 (고정 기준 E5a): 두 회 모두 90장 중 88장 픽셀까지 같음, 다른 2장은 기준끼리도 다른 움직이는 장면 (이동 확인)
약속 시험 test/explorer_controller_contract_test.dart 3 (실제 시험 폴더 · Host 는 실제 화면 - 실제 ScaffoldMessenger 알림 ·
실제 다음 그리기). 탐색기 화면 자신이 Host 로 하는 일은 explorer_test 의 화면 시험이 실제로 확인

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 10:26:22 +09:00
RyuJongJin 067746223b E5c: 압축 보기 · 여는 길 · 목록에서 숨기기 · Rsync 실행을 모듈로 + 점검 통합 시험
관리자 승인 E5 계획 (E5a~E5e). 동작은 바꾸지 않음
- lib/app/archive_browse.dart ArchiveBrowser: 압축을 폴더처럼 (읽기 · 바뀌면 다시 읽고 잊음 알림 · 안의 목록 · 하나 꺼내기),
  archive_ops 를 부르기만, 7-Zip 실행 파일은 부르는 쪽이 줌
- lib/app/file_opener.dart openRouteFor: 열 때 어느 길 (플레이어 · 압축 풀기 · 그림 · PDF · ZIP · HWP · 문서 · 바깥 앱) - 순수
- lib/core/app_hidden.dart HiddenList: 목록에서 숨긴 경로 (대소문자 · 옮기면 따라감 · 실제로 없어진 것만 뺌)
- lib/app/rsync_runner.dart RsyncRun: Rsync 화면 실행 (막는 조건 · 작업 · 옵션 (⇄ 의 ← 는 지우지 않음 · -u) · 미리 보기 ·
  차례로 실행) - sync_preview · sync_tools · rsync_filter · CopyCenter 를 부르기만 (modular_sync 는 rc2 그대로라 겹침 없음,
  15 의 RsyncPlan · RsyncLaunch 가 생기면 그것을 부르게 맞춤)
- lib/ui/explorer/rsync_run_dialog.dart: Rsync 확인 창 위젯 (RsyncRun 만 부름)
- integration_test/explorer_use_check_test.dart: 탐색기 점검 통합 시험 (관리자 승인) - 시험 폴더 이름 · 파일 시각 고정
  (픽셀 비교 기준), 시험 폴더만 씀
- explorer_page 6,267 → 5,922

확인: analyze 0 · 전체 단위 2회 통과 1,329 · 건너뜀 18 · 실패 0 (E5b 에서 고친 explorer_test
"X-plore e: Android 앱 휴지통 - 지우기 = 휴지통으로 · [되돌리기] · [휴지통] 화면에서 되살리기" 도 이 2회 통과) ·
점검 통합 시험 (1920 · 960 · 412) 2회 통과.
캡처 픽셀 비교 (고정 기준 = E5a 를 두 번 찍은 것, 기준끼리 87장 같음): 90장 중 87 · 88장 픽셀까지 같음,
다른 2 · 3장은 기준끼리도 다른 움직이는 장면 (이동 확인 · 선택 끝)
약속 시험 (실제 시험 폴더 · 실제 ZIP · 실제 폴더 비교): test/explorer_modules_e5c_contract_test.dart 5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 09:51:34 +09:00