- confirm_dialog.dart 하나: confirmAction (글만 묻는 꼴) 은 confirmDialog 를 부른다 (confirm.dart 지움, 16 파일 import 바꿈).
빨강은 테마 위험 색 (danger) 하나로 - 지우기 · 덮어쓰기 확인의 빨강이 다른 지우기 단추와 같아짐 (FF5252 → FF5C6C)
- 새 약속: cancelFirst (빨강이 아니어도 되돌리기 어려운 일은 첫 초점 [취소] - Enter 로 실행 안 됨) · canConfirm (체크 · 두 비밀번호가
같아야 [확인] 켜짐). 시스템 폴더 · 루트 보기 켜기 (설정), 루트 탭 경고 (탐색기), 보관함 비밀번호 바꾸기가 부르기만 한다.
창마다 글 · 단추 이름은 그대로
- confirmAction 도 같은 규칙: danger 면 첫 초점 [취소], 아니면 [확인] (관리자 결정 10/22)
- 시험: confirm_dialog_contract_test 에 cancelFirst · canConfirm · confirmAction 3개 (관리자 10/25 조건)
- 주입: LiveSync(now:) (처음 값 실제 시계 - 카드의 "마지막: HH:MM"). 시험 쪽 고정: b3 (폴더 · 시각 · CPU · 디스크) ·
lsync_p0 (폴더 · 시각 · 대상 디스크). b3_52 의 받는 중 파일 (.jjpart) 시각은 실제 복사가 만든 때라 그대로 (흔들림 2장 남음)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 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>
- lib/ui/jj_header_row.dart: 아이콘 · 제목 (titleLines 줄까지, "…") · 설명 (넓으면 옆, 좁으면 제목 아래 - 숨기지 않음) ·
단추 (늘 오른쪽 끝에 다 보임, 좁으면 narrowActions). 다운로드 창 · 재생 목록 판 · 즐겨찾기 판 · 작업 현황 판 ·
저장 공간 정리 창 · 화면 · 색 보정이 부르기만 한다
- F11 (7247aeb): 화면 · 색 보정 제목 줄 - 560 미만이면 안내 글은 제목 아래, [모두 초기화] 는 같은 이름의 아이콘 단추, ✕ 늘 보임
- G1 (a22832d): 다운로드 종료 창 제목 두 줄까지 · ✕ 늘 보임
- G2 (a22832d): jjTitleBar 에 lowerActions - AI 비교는 600 미만이면 원본 / 올린 것 고르기만 둘째 줄 가운데, [저장] 은 그대로.
앱 안 폴더 고르기는 단추 셋이 함께 둘째 줄로
- 시험: jj_header_row_contract_test · windows_hdr360_shot_test (a22832d 에서 옮김 - 앞 판은 360 에서 47px 넘쳐 실패)
- 캡처 흔들림 고정 (시험 쪽): bigtext (폴더 · 기록 시각 · 대상 디스크) · magnet (움직이는 "준비 중…" 막대, TickerMode)
- 주입: AppController.note(at:) (처음 값 지금) · PlatformServices.diskSpace + DiskSpaceInfo(space:) (처음 값 실제 디스크)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Tor: debugRunning · executable 없앰 → 떠난 뒤 잠시 켜 두기를 IdleStop 모듈로 (schedule · cancel · stopNow).
환경 설정 > Tor 는 IdleStop 을 받음 (처음 값 = 앱의 Tor), [지금 끄기] = stopNow
- Wi-Fi 공유: debugLoopbackOnly · debugAddresses · loopbackOnly 인자 없앰 → WifiShareNet 주입 (열 주소 · 설정 열기).
WifiSharePage(net:) 가 debugLaunch 를 대신함. debugFail 없앰 - 시험이 실제 다른 루프백 주소 (127.0.0.x) 에서 틀린 코드를 보냄
- 관리자 권한: Elevation.debugElevated 없앰 → PlatformInfo.elevated (조립 주입), CefView(elevated:)
- CEF 시작 시간: 바꿀 수 없게 (const) - 시험은 가짜 시간을 넘김
- 단일 실행: debugStopListening 없앰 - 시험이 instance.json 을 아무도 듣지 않는 포트로 (받는 곳이 죽은 첫 창)
- SMB 찾기: 전역 debugFindSmbServers 없앰 → PlatformServices.findLanSmb 주입
- 남은 @visibleForTesting (들여다보기만): browser_page · tor_page debugNav, secret_store dpapiAt, reader_page dropMissingFiles
확인: analyze 0 · 단위 1473 ×2 · 통합 6/6 ×2 · base10 214장 0px · windows_wifi_shot ×2 · windows_smbfind_shot ×2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 로그인 쿠키 파일 쓰기 (Edge · Chrome 이 따로 하던 것) 를 writeLoginCookies 하나로
- 살려 둔 웹뷰 · Chrome 시작 제한 시간은 그 모듈이 갖는다 (CefView.startTimeout)
- 약속 시험: NavWatch · writeLoginCookies · deleteExportedCookies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>