Commit Graph

12 Commits (e82c34a0b83dabcae2abdd224420f143220acb08)

Author SHA1 Message Date
RyuJongJin 5a65dbf693 W DangerDialog: 확인 창 두 벌 (confirm.dart · confirm_dialog.dart) 을 confirmDialog 하나로 + 체크해야 켜짐 · 첫 초점 [취소] 를 공용으로
- 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>
2026-10-25 11:05:26 +09:00
RyuJongJin 2d9968929d W JjField 2: 도움 글 글 칸을 JjField 하나로 (SecretField 도 그 위) + 캡처 흔들림 b6 · p3 · xptools 고정
- lib/ui/jj_field.dart: 칸 이름 짧게 · 도움 글 칸 아래 3줄까지 (helperLines 로 늘림) · 오류 글 · 칸 끝 단추 · 여러 줄 · 테두리 · 가림.
  WebDAV · FTP · SFTP · SMB 서버 창 · AI 서비스 · 해시 비교 · 시드 · 패턴으로 고르기 · 동기화 일정 · 이름 틀이 부르기만 한다.
  SecretField 는 JjField 위에 눈 단추만 더한다
- 바뀐 동작: 패턴으로 고르기 · 동기화 일정 창의 도움 글이 한 줄에서 "…" 로 잘리던 것이 3줄까지 보임 (F2 와 같은 결함)
- 시험: jj_field_contract_test · field_places_shot_test (패턴 · 일정 창, 캡처가 없던 곳)
- 시험 쪽 고정: b6 · p3 · xptools 도 고정 폴더 · 시각 (pinTestTimes 가 만든 · 바뀐 · 열어 본 시각 모두)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 22:53:11 +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 2eb5f335db W NoticeBand 다듬기: 제목은 짧게 · 긴 설명은 아래 · ⚠ 빼기 (관리자 10/24) + 캡처 흔들림 3장을 시험 쪽에서 고정
- FTP 평문 띠: 제목 "평문 FTP: 암호화 안 됨" (굵게) · 설명은 아래 보통 굵기 · 글 앞 ⚠ 뺌 (자물쇠 아이콘 하나). 라디오 이름 "⚠ 평문 FTP (암호화 안 됨)" 은 띠가 아니라 그대로
- 동영상 오류 띠: 제목 "실패" (있던 사전 글) · 오류 글은 아래 설명 (골라 복사)
- 다른 띠: 탐색기 · 실시간 동기화는 이미 짧은 제목 + 설명, AI 그림 안내 · AI 서비스 경고는 한 문장 (그대로)
- 사전 en · ja · zh: 새 제목 3 · 설명은 예전 번역에서 ⚠ 만 뺌 (빠진 번역 0)
- 캡처 흔들림 (시험 쪽에서만, lib 그대로): check_shot 의 위 막대 CPU % (실제 값 5% ↔ 7%) → 시험이 늘 같은 값을 내는 사용량 원천을 조립에 넘김 ·
  FTP 960 의 창 스크롤 막대가 사라지는 중간에 찍힘 → 찍기 전 1.5초 기다림 · 커서 깜빡임 고정 (debugDeterministicCursor)
- 새 기준: notice_places · ftp_shot · check_shot 을 두 번 찍어 이번에 바뀐 자리 모두 0px (check_shot 의 37 · 65 · 94 는 실행마다 임시 이름 · 시각이 달라 예전부터 흔들림)

사용자가 보게 될 동작: FTP 평문 경고 띠의 제목이 짧아지고 설명이 아래로 · 동영상 오류 띠의 제목이 "실패"

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 18:48:58 +09:00
RyuJongJin 9b03f20d8f W NoticeBand 2: 나머지 안내 띠 다섯 곳을 공용 띠로 (관리자 10/24 ① - 모양을 하나로)
- 옮긴 곳: 실시간 동기화 카드 (멈춤 · 마스터 기다림) · AI 그림 화면 안내 2 · AI 서비스 창 경고 · FTP 평문 경고 · 동영상 오류 상자
- NoticeBand 더한 것: 설명은 없어도 됨 · selectable (오류 원문을 골라 복사 - 설명이 없으면 제목) · margin (부르는 쪽이 정함)
- 글 · 단추 · 색의 뜻은 그대로 (경고 = warning · 오류 = danger/alert · 안내 = accent). 새 화면 글 없음
- 범위 밖: Tor 상태 줄 · 브라우저 띠 (진행 막대가 든 상태 줄 - 안내 띠가 아님)
- 시험 기대값 바꿈 1곳: sync_problem_test 의 '대상 파일은 지우지 않았습니다.' 를 따로 된 글이 아니라 띠 설명 안의 글로 찾음
  (textContaining - 그 문장이 보인다는 뜻은 그대로)

캡처 (바꾸기 전 판 dac47bd 2회 · 바꾼 판 2회, 전후 18장: M:\jj_tmp\dev\7f\nb_compare):
- 바뀐 것은 옮긴 화면 18장뿐 (AI 그림 4 · FTP 평문 6 · 새 캡처 notice_places 8), 다른 화면은 그대로. 412 폭 넘침 없음
- 새 캡처 8장은 바뀐 판 두 번 0px. AI 그림 넓은 2장 · FTP 평문 960 2장은 바꾸기 전에도 흔들리던 장 (글 칸 커서)

사용자가 보게 될 동작: 안내 띠가 모두 같은 모양 (연한 바탕 · 테두리 · 아이콘 · 굵은 제목 · 작은 설명 · 단추). FTP 평문 경고는 빨간 글 상자에서 빨간 띠로

확인: analyze 0 · 단위 1525 ×2 · 통합 6/6 ×2 (b · c) · base10 214장 0px
(nb3 통합 a 에서 412 지우기 "시험 휴지통 폴더가 없어짐" 이 다시 남 - 이 고침과 무관, 이제 step_check 가 늘 %TEMP% 감시를 켬)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 17:48:23 +09:00
RyuJongJin e93b0b0be6 SecretGate.passIf: "비밀 값이 있으면 문을 지나야 함" 을 한 곳에서 (관리자 10/24)
- SecretGate.passIf(hasSecret, force): 비밀 값이 없으면 묻지 않고 지나감, 있으면 pass 의 답
- 모은 곳 (같은 꼴의 복사 9곳): 원격 등록 requireSecretGate · 플레이어 (WebDAV 머리) · 그림 AI (API 키) ·
  WebDAV · FTP · SFTP · SMB 설정 · AI 서비스 설정 (저장된 비밀 값이 있는 것을 고치기 전). 오류 종류 · 닫기는 그대로
- 그대로 둔 것 (같은 꼴 아님): 사용자가 직접 누른 일 앞에서 다시 묻는 8곳 (탐색기 · 폴더 고르기 · 다시 시도 · 보관함 · 자막 찾기 등),
  OpenSubtitles (비밀 값 조건 없이 늘 문 - 따로 보고)
- 약속 시험 한 줄 (remote_registry_contract: 묻는지 · 답 · force)

사용자가 보게 될 동작: 바뀌는 것 없음

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 15:35:07 +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 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 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 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 dd9e93b4fe WIP l FTP · FTPS: 탐색기 원격 탭 (WebDAV · SFTP 와 같은 길) - dart:io 로 직접, 처음 값 FTPS (검토 대기)
관리자 지시 (10/17, l): FTP · FTPS 를 탐색기 원격 탭으로. 평문 FTP 는 "암호화 안 됨" 경고, 처음 값은 FTPS, 비밀번호는 안전 저장소.
- lib/core/ftp.dart (새, 패키지 없음 - ftpconnect 3.0.0 은 dartssh2 ^3 에 묶여 우리 dartssh2 4.1.0 과 함께 못 씀):
  · 명령 채널 RawSocket → 명시 FTPS 는 AUTH TLS 뒤 RawSecureSocket.secure (같은 연결을 TLS 로), 암시 FTPS (990) 는 연결하자마자 TLS. PBSZ 0 · PROT P
  · 목록 MLSD (FEAT 에 MLST 가 있으면) 아니면 LIST (유닉스 꼴), 정보 · 만들기 · 지우기 (안쪽까지) · 옮기기 (RNFR/RNTO)
  · 받기 · 올리기는 따로 연결 (REST 로 부분 읽기 - 동영상 건너뛰기 · 이어 받기). 자료 연결의 TLS 는 명령에 150/125 를 받은 뒤
  · 자료 연결 주소는 명령 채널의 서버 주소로만 (PASV 가 알려 준 다른 주소로 가지 않음 - FTP 바운스 막기). EPSV 먼저
  · FTPS 로 고른 서버가 평문만 되면 몰래 평문으로 내려가지 않고 이유를 알림
  · 자체 서명 인증서: SFTP 호스트 키처럼 처음 한 번 지문 (SHA-256) 을 보이고 믿을지 묻고 (TOFU), 바뀌면 막음. 공인 인증서는 그대로
  · DNS 강제를 따름 (FtpRegistry.resolveWithDns - SFTP 와 같게)
- vfs: ftp://<서버 id>/<경로> (isFtp · noStreamUrl → 받아서 열기, 표시 📂 · 평문은 ⚠, 임시 폴더 jj_ftp)
- 설정: ftpServers (비밀번호는 ftp.pw.<id> 안전 저장소, 설정 파일 · .bak · 보관본에서 뺌), 마스터 초기화에서 지움
- 화면: 환경 설정 > 파일 탐색기 > FTP · FTPS (추가 · 고치기 · 지우기 · 연결 확인, 암호화 고르기 - 평문은 빨간 경고),
  탐색기 위 줄 탭 (평문은 ⚠ 이름) · [FTP 서버 추가] · 좁은 창 메뉴 · 길게 누르기 고치기 · 인증서 지문 안내 [지문 확인하고 연결]

시험: test/ftp_test.dart 7 - 설정의 비밀번호 (안전 저장소 · 보관본), 목록 줄 읽기, 실제 서버 (tool/ftp_test_server.py = pyftpdlib 2.2.0 ·
pyOpenSSL 26.4.0, 시험용 파이썬에만 - 앱에 안 들어감): 명시 FTPS (인증서 TOFU · 바뀐 인증서 막기 · 폴더 · 쓰기 · 목록 · 부분 읽기 · 옮기기 · 지우기),
암시 FTPS, 평문 FTP (+ FTPS 서버가 평문만이면 이유), 틀린 비밀번호 · 비밀번호 없음 · 닿지 않음.
sftp · master_lock · settings_store · webdav · explorer_webdav · explorer · sftp_explorer · licenses 와 함께 98 통과, analyze 문제 없음, l10n 빠짐 0.
시험 서버 메모: pyftpdlib 2.2.0 + pyOpenSSL 26 은 자료 연결 TLS 닫기에서 끝없이 되풀이해 STOR 가 끝나지 않는다 - 시험 서버에서만 덮어씀.
못 한 것: 실제 NAS (Synology 등) FTPS · TLS 세션 재사용을 요구하는 서버 (vsftpd require_ssl_reuse) 는 확인 못 함 (Dart 는 자료 연결의 TLS 세션 재사용을 못 함),
FTP 스트리밍 재생 (sftp_next 의 다리와 합칠 때 FtpRemote.openReadFrom 을 넣으면 됨), 경로 복사의 ftp:// 꼴.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 00:45:33 +09:00