Commit Graph

5 Commits (4985887a5bb0ff31c21679a7b7bc91bdb35151fe)

Author SHA1 Message Date
RyuJongJin 39d81f1a73 M0: 안전 저장소를 못 읽으면 마스터 잠금을 '알 수 없음' 으로 - 문을 열지 않고 마스터를 덮어쓰지 않는다
사용자가 보게 될 동작: 기기 안전 저장소를 읽지 못하면 저장된 비밀번호를 쓰는 기능이 열리지 않고, 환경 설정 > 보안에
까닭과 [다시 읽기] 가 보인다. 다시 읽히면 평소대로 마스터를 묻는다.

- 예전: 읽지 못하면 빈 것으로 보아 마스터가 없는 것처럼 문 (SecretGate) 이 열렸고, 그 상태에서 마스터를 정하면 진짜 값을 덮어쓸 수 있었다
- MasterLock.storeUnreadable: load 가 예외 대신 표시 (앱은 켜짐). ensure 는 한 번 다시 읽고 못 읽으면 false.
  setMaster · setSuper · clearMaster · clearSuper · setAsk 는 MasterStoreUnreadable. reload()
- 보안 설정: 까닭 · [다시 읽기] (정하기 · 바꾸기 · 끄기 숨김). 보관함 [마스터로도 열기] 는 까닭을 알림
- 비밀번호 다시 저장 [다시 시도] 가 되면 마스터 잠금도 다시 읽음. settings_store 의 TODO(M0) 지움
- 약속 시험 master_store_unreadable_test 4 (읽기가 실제로 실패하는 저장소를 시험 파일 안에 - lib 흉내 플래그 쓰지 않음)
- 확인: 단위 1467 ×2 · 통합 6/6 ×2 · 캡처 214장 base10 과 같음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 19:26:02 +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 a35293271e 설정 A 분야 10: 암호 보관함 (VaultSettings) - 키 3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 23:30:18 +09:00
RyuJongJin 43c8dab04c 보관함 넣기: 넣다가 잠가 멈추면 넣지 못한 원본은 지우지 않음
- 예전부터 있던 버그: [원본 지우기 (이동)] 로 넣는 도중에 잠그면 넣기는 멈추지만, 넣지 못한 원본이 bad 에 들어가지 않아 그 원본까지 지워졌다 (데이터 잃음)
- putVaultAdd: 잠겨 멈출 때 남은 항목의 top 을 bad 에 넣는다 → 넣은 것만 원본을 지우고 나머지는 그대로
- 약속 시험 (실제 시험 폴더 · 실제 보관함): 원본 4개를 넣다가 3번째에서 잠그면 1 · 2 만 지워지고 3 · 4 는 바이트까지 그대로. 고치기 전 코드에서는 4.bin 이 지워져 실패함을 확인

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 20:07:38 +09:00
RyuJongJin e0928ea5a6 보관함 나누기: vault_page (1,095) 를 기능 모듈 3개로 (→ 375)
- lib/ui/vault/vault_session.dart (290): 작은 상태 VaultUiState · 보기 폴더 VaultViewSession · 넣기 (펼치기 · 확인 창 · 넣기)
- lib/ui/vault/vault_actions.dart (335): 파일 일 (보기 · 꺼내기 · 지우기 · 이름 변경 · 깨진 항목) · 폴더 일 · 열쇠 일 (비밀번호 바꾸기 · 마스터로도 열기)
- lib/ui/vault/vault_views.dart (319): 만들기 · 열기 칸 · 목록 · 묻는 창 (이름 · 옮길 곳 · 새 비밀번호)
- 화면은 단계 · 열고 잠그기 (틀린 횟수 · 30초 기다림 포함) 만 맡고 모듈을 부른다. 암호 처리 · 동작은 그대로
- 확인 창은 이미 있는 confirmAction (danger: false) 을 부름
- 약속 시험 test/vault_modules_test.dart (실제 시험 폴더 · 실제 보관함)

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