248 Commits

Author SHA1 Message Date
songyc macbook
2dfe8cf44c fix(1.5): ASC 검증 ITMS-90683 — NSHealthUpdateUsageDescription 추가, 빌드 2
- HealthKit 엔타이틀먼트 보유 시 읽기 전용이어도 '쓰기' 사유 키를 업로드 검증이 요구(실측)
- Info.plist에 정직한 읽기 전용 안내 문구 + InfoPlist.xcstrings 3언어
- 전달된 빌드 번호 재사용 불가 → CURRENT_PROJECT_VERSION 2
- Debug/Store 빌드 성공, 산출물 Info.plist에 키 포함 확인

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-22 08:13:18 +09:00
songyc macbook
5977829772 feat(1.5-p5): 스크린샷 전면 신규(원본 57·합성 63)·문서 현행화 — 1.5 개발 완료
- 마케팅 심 3대 재생성(6.9" 아이폰·13" 아이패드·비페어링 워치, Auckland TZ)
- 아이폰 10·아이패드 10·워치 1 × ko/en/ja 재촬영(09-records→09-health 교체,
  건강 타일 히어로), frame_screenshots로 합성 63장 재생성
- 촬영 실측 주의 3건(스크린샷 미덮어쓰기·워치 컨테이너 재조회·삭제 전파 지연) README 기록
- 시드 플로우 팝업 억제(markShown)·-mainSectionOrder 표시 오버라이드 추가
- CLAUDE.md 상태 셀 1.5 개발 완료 현행화(§6.1/6.4/6.8/11/14 반영), plan 전 섹션 완료 표기
- 최종 게이트: Store 빌드, 자가 검증 61·20·27·10 ALL PASS(26.5+18.5)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-22 07:45:26 +09:00
songyc macbook
1f7c4d4b82 chore(1.5-p5a): 버전 1.5(1)·스토어 텍스트·PRIVACY 건강 문단·촬영 준비
- MARKETING_VERSION 1.5 / 빌드 1
- whats-new-1.5(3언어)·promotional-text-1.5(이용자 6명 감사 스토리)·설명 3언어에
  건강 타일(무료 절)+건강 다짐·행동 컴플리케이션(프리미엄 절) 반영
- PRIVACY.md: 권한 표에 건강(HealthKit) 행 + 읽기 전용·서버/iCloud 미저장 문단(ko/en/ja — 5.1.3)
- frame_screenshots: 09-records→09-health 카피 교체, seedHealthQuest 목표 제목 현지화(+카탈로그 manual)
- 극한 검증: 실버전(1.5) 업그레이드 경로 팝업 자동 표시 확인, 벌크 1만건+건강 결합 렌더 정상

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-22 06:34:27 +09:00
songyc macbook
9929e6631e feat(1.5-p4): 신기능 소개 팝업 + 도움말 전면 자연화·신규 주제 3개 + l10n 전량 완역
- WhatsNewView(버전당 1회·신규 설치 시드·온보딩 우선·全기기 업데이트 안내·-showWhatsNew)
- HelpView: 전 주제 ko 자연화(오타 '남긴 하지만'·번역투·'완료 보관함'→'완료된 목표' 정정,
  1.1 맥 일기 반영), 신규 주제 3개(행동 컴플리케이션·건강 보기·건강 다짐), 건강 그룹은
  지원 기기에서만 노출
- l10n: 4개 카탈로그 sync·en/ja 신규 208건+본문 재번역·용어 통일(Action/アクション·
  Quest/クエスト·Home/ホーム)·stale 43 청소 → 전 카탈로그 missing/stale 0,
  InfoPlist에 NSHealthShareUsageDescription 3언어
- 검증: Debug/Store/워치 빌드, 자가 검증 61·20·27·10 ALL PASS, ja 도움말 실렌더 확인

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-22 06:28:11 +09:00
songyc macbook
78bad15852 feat(1.5-p3): 건강 다짐 — 8지표+운동 종목 20종, 값 공급 이음새로 §4.2 수학 무변경
- Quest 필드 3종(healthMetricRaw·수면 구간, CloudKit 기본값 규칙)+행동/꼬리표 우선 정규화
- HealthQuestTarget/HealthWorkoutKind(종목 큐레이션)·HealthCache 공유 계층 이전(위젯 읽기)
- QuestProgress 값 공급 단일 지점 3곳(value·spanValue·perDayValues)만 분기 — 기존 49건 무변경 그린
- 편집기 대상 3유형째(지표·종목·수면 구간 휠·단위별 목표 입력·프리미엄 게이트·하루 전용)
- §8ⓒⓕ: 데이터 없는 기기 모수 제외+'데이터 없음' 표기(목표 행·모음 카드·위젯 ②③④)
  +자동/수동 판정 보류, 위젯 값 라벨 지표 단위화, HealthStore 백필(400일)·운동 조회·부트스트랩
- 검증: progressSelfTest 61건(H 시리즈 12 신규)·20·27·10 ALL PASS(26.5+18.5),
  Debug/Store/워치 빌드, 시각 QA(목표 행·편집기·타일). 신규 인자 3종 §14 기록

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-22 06:07:25 +09:00
songyc macbook
e04cdfdcb9 feat(1.5-p2): 건강 데이터 타일 — HealthCache 기반·모음 탭 3섹션 순서·안내/지표 시트
- HealthMetric 8종(표준 단위·표기) + HealthStore(HK 조회: 누적 통계·스탠드·마음챙김·
  수면 구간[합집합 병합, 깨어난 날 귀속 — plan §3.4 규칙]) + HealthCache(App Group,
  지표×dayKey, 400일 보존 — 5.1.3 준수: CloudKit 비저장)
- 모음 탭 건강 섹션(타일 줄+접기·연결 CTA[명시적 탭 권한]·안내 시트[사용자 요구 가이드]·
  지표 선택 시트[체크+드래그 순서]) — actionGrid·레이아웃 금지구역 무접촉, 편집 모드 숨김
- 3섹션(즐겨찾기·나머지·건강) 순서 렌더러 + 설정 탭 표시 토글·순서 화면(기기 로컬)
- HealthKit 엔타이틀먼트(iOS 앱만)·NSHealthShareUsageDescription, 전체 초기화에
  건강 키·캐시 청소 추가
- 검증: Debug/Store 빌드, 자가 검증 106건 ALL PASS(26.5+18.5), 시각 QA 7장
  (타일·순서·설정·안내·지표·CTA·18.5 빈 상태). 신규 인자 3종 §14 기록

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-22 05:38:50 +09:00
songyc macbook
92afa69f6d feat(1.5-p1): 워치 '행동 기록' 컴플리케이션 — 기간 옵트인·미니 행동 화면 딥링크
- WatchActionPeriod(하루/이번 주/이번 달/지난 7일/지난 30일) + WatchActionInfo에
  optional 기간 필드 3종(구버전 캐시 호환 — isFavorite 패턴)
- LocalPrefs.watchActions(uuid→기간 맵, 기기 로컬) + 전체 초기화 청소 목록 반영
- makeSnapshot: 옵트인 행동만 기간값 계산(rollingRange 재사용, StatSpan 무변경)
- 신규 ActionValueComplication(4패밀리·측정 중 노랑+타이머·유령 타이머 안전장치·
  빈 상태 안내·recommendations verbatim·widgetURL 딥링크)
- 워치 미니 행동 화면(WatchActionDetailView) + NavigationPath 딥링크 착지
  (뒤로가기 한 번에 메인 복귀), 행동 편집기 애플워치 섹션(토글+기간)
- 검증 인자: -watchActions <N>·-actionShowEditor·-watchOpenActionDetail
- 검증: Debug/Store/워치(26.2·11.5) 빌드, 자가 검증 49·20·27·10 ALL PASS(26.5+18.5 심),
  시각 QA 5장. 신규 문구 l10n은 계획 §10 R6대로 도움말 단계에서 일괄
- CLAUDE.md: 시뮬레이터 세트 리셋 반영(신규 UUID)·검증 인자 추가

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-22 05:18:42 +09:00
songyc macbook
2e181dd1e2 docs(plan-1.5): 2차 결정 전부 반영 — 지표 8종+운동 종목 다짐 확정·만료 원칙·스크린샷 전면 신규·신기능 팝업(§11)·스키마 배포 체크·혼합버전 R16
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-22 01:22:19 +09:00
songyc macbook
8a5df2233a docs(plan-1.5): §8 3건 사용자 승인 확정 + 건강 가이드 문구 요구 + §10 정밀 위험 검토(R1~R15)
- 크로스 버전 동기화·QuestProgress 이음새·스냅숏 호환 실코드 확인 근거 기록
- 안정성 실행 수칙(격리·단계 게이트·출시 게이트) 명문화 — 1.4 무결 보존 지시 반영

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-22 00:59:35 +09:00
songyc macbook
d6ff8bb218 docs(plan-1.5): §8 건강 다짐 × 위젯 전수 점검 추가 — ③ 표시 전용 상속·갱신 경로·데이터 없음 표기·판정 보류(확정 대기 3건)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-21 22:48:39 +09:00
songyc macbook
212233b46d docs: 1.5 확정 계획 문서화 (Docs/plan-1.5.md) — 구현 대기
- 워치 행동 컴플리케이션: 옵트인+기간 선택, 미니 행동 화면 착지(뒤로가기로 메인 복귀)
- 건강 데이터 통합: 타일 무료+건강 다짐 프리미엄, HealthCache, 수면 구간 귀속,
  모음 탭 3섹션(즐겨찾기·나머지·건강) 순서 설정
- 도움말 한국어 자연화(예약분) 포함, 하위 OS 인하 기각 근거 기록(§4)
- CLAUDE.md 📌를 계획서 포인터로 갱신 — 사용자 "진행" 지시 전까지 코드 무변경

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-21 22:34:15 +09:00
songyc macbook
b62808f005 docs: 1.4 App Store 출시 완료 반영 + §14 불리언 런치 인자 실측 주의 (재시작 점검 2026-08-13)
- 현재 상태 셀: 1.4(3) 심사 제출 → 출시 완료(2026-08-13, 사용자 확인)로 갱신
- 다음 버전(1.5) 예정 작업(도움말 한국어 자연화) 착수 가능 표기
- §14: bool(forKey:) 검사 인자는 `-인자 YES`로 값까지 넘겨야 함 명시
- 재시작 점검: Debug/Store 빌드 성공, 자가 검증 49·20·27·10 ALL PASS(26 심+18.5 심)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-13 06:31:12 +09:00
songyc macbook
07d8b37bfe docs: 1.4(3) 스토어 업로드·심사 제출 완료 반영 (2026-08-13)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-13 06:19:26 +09:00
songyc macbook
b592c9d7ef docs(store): 스토어 텍스트 한국어 자연화 — 설명·whats-new·프로모션 (1.4 배포용)
- description-ko: 번역투 문장 자연화('버튼 한 번이면 돼요'·'알아서 걸러낼 수 있어요' 등) + '프리미엄으로 한 걸음 더' + 1.4 기능 2줄(지난 7일·30일 보기, 데이터 정리·초기화) 추가
- description-en/ja: 1.4 기능 2줄 동일 추가 (기존 문장은 자연스러워 유지)
- whats-new-1.4: ko 전면 자연화(생겼어요 반복 제거·기술어 완화), en/ja에 '일기만 삭제' 반영 및 문장 다듬기
- promotional-text-1.4: ko 161자·ja 141자로 재작성(문장 흐름 개선), en 유지
- CLAUDE.md: 📌 다음 버전 예정 — 도움말 전체 문구 한국어 자연화(말투 컨셉 유지, en/ja 재검토 포함) 기록

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-12 15:54:18 +09:00
songyc macbook
16e8737976 feat(1.4-b3): '일기만' 정리 옵션·라디얼 FAB 가림 수정·1.4 전용 프로모션 — 빌드 3
- 데이터 정리·초기화에 '정리할 데이터' 축(기록과 일기/일기만) 추가 — 일기만은 기록·구조·양식 보존, 백업은 일기 PDF만, DataReset.deleteDiaries(전체/날짜까지)
- 자가 검증 18→27건(일기만 9건: 기준일 포함 삭제·기록/행동/양식 보존·cascade) — 26·18.5 심 ALL PASS
- 라디얼 모드 FAB가 목록 마지막 행을 가리던 실측 문제 수정 — 탭 루트(NavigationStack 안쪽) 하단 safeAreaInset 78pt, 26·18.5 시각 확인
- 도움말 '데이터 정리·초기화'에 일기만 문구, 신규 12키 en/ja 완역(카탈로그 missing/stale 0)
- whats-new-1.4에 일기만 반영 + promotional-text-1.4.txt 신설(ko 154/en 169/ja 139자 — 이용자 3명 감사 멘트)
- iOS 18.5 심층 QA: 자가 검증 106건 ALL PASS + 라디얼/위젯/초기화 화면 확인
- CURRENT_PROJECT_VERSION 2→3, Debug/Store/워치 3빌드 성공

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
2026-08-12 02:19:34 +09:00
songyc macbook
22ed06f2a1 feat(1.4-b2): 도움말 재구성·워치 햅틱 상향·빌드 번호 2 — TestFlight 재업로드 준비
- 도움말 뭉친 주제 3곳 분리: '데이터 정리·초기화'(CSV 주제에서)·'지난 7일·30일로 보기'(비교 주제에서)·'사진·도형·텍스트 꾸미기'(펜슬 주제에서) 독립 — 비교·CSV 주제는 단일 기능 설명으로 복귀
- 도움말 이미지 18장 전수 실사: 코드 참조 6종×ko/en/ja 완전 매칭·고아/누락 0, ko·en 실렌더로 언어별 이미지 로딩 확인
- 신규·재구성 문구 8건 en/ja 완역(기존 번역 재조합으로 품질 유지), stale 3키 청소 — 전 카탈로그 missing/stale 0
- 워치 행동 실행 햅틱 .click→.success(가장 강한 축) — 실사용 '너무 약함' 보고 반영
- CURRENT_PROJECT_VERSION 1→2 (TestFlight 1.4(2))
- 동기화 삭제 전파 재확인: 컨텍스트 경유 개별 삭제라 CloudKit로 전 기기 전파(의도된 설계·경고 문구 존재)
- 검증: Debug/Store/워치 3빌드 성공, 자가 검증 49+20+18 ALL PASS 재확인

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-12 00:11:36 +09:00
songyc macbook
62fa1a2d68 feat(report): 정리 리포트에 '목표별 다짐' 표 추가 — 검수 발견 C 해소
- 그룹=목표, 행=다짐(대상 아이콘·이름 + 주기 scheduleLabel[마감 시각 포함] + 목표량·방향 '3회 이상 달성'/'1시간 이하 유지')
- 페이지 분할은 목표 그룹 단위(한 목표의 다짐이 페이지에 찢어지지 않음)
- 신규 키 '목표별 다짐' en/ja 완역, 나머지는 기존 키 재사용 — 카탈로그 missing/stale 0 유지
- 벌크 1만 건(4페이지 스티치 1290×11042)·소량(iPad) 실물 검사 통과, Debug/Store 빌드 성공
- 검증 중 'Documents 산출물 0개' 소동은 macOS NFD 파일명 대 grep NFC 불일치 착시로 판명 — 코드 무결

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-11 18:36:44 +09:00
songyc macbook
e4fcf21b27 chore(release): 1.4 마무리 — l10n 전 카탈로그 완역·버전 1.4·whats-new·도움말·CLAUDE.md v2.7
- l10n: IOS 67·Widgets 4 신규 문자열 en/ja 완역, stale 4키 청소 — 전 카탈로그 missing/stale 0
- 도움말 3주제 갱신(통계 롤링·데이터 정리·일기 내보내기 후 삭제)
- MARKETING_VERSION 1.4(빌드 1, 8구성) + Marketing/AppStore/whats-new-1.4.txt(ko/en/ja)
- CLAUDE.md v2.7: 하한 18.0·1.4 전 기능·신규 검증 인자 9종·18.5 QA 심 반영
- 통합 QA: Debug/Store/워치 빌드 성공, 자가 검증 49+20+18+10 ALL PASS(26 심), 18.5 심에서도 49+18 ALL PASS+화면 렌더, en 로케일 렌더 확인

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-11 17:25:35 +09:00
songyc macbook
cf78a3ac7e feat(data): 데이터 정리·초기화 — 전체/처음~날짜까지 + 삭제 전 백업(CSV·일기 PDF·정리 리포트)
- DataReset 코어: 범위 삭제(완전 포함 세션만·경계 걸침/진행 중 보존·일기 dayKey≤키·구조/양식 보존), 전체 초기화(cascade+고아 정리+LocalPrefs 6키), 컨텍스트 경유 개별 삭제(CloudKit 전파 안전)
- ArchiveReport: 삭제 범위 총정리 다페이지 포스터(타이틀+기간(첫~마지막 기록일)+히어로+행동별 누적 표+꼬리표 합계+월별 표+목표 이력, 24행 청크) → PDF/스티치 PNG, ExportPosterView 재사용
- DataResetView(설정→데이터, 무료): 범위 세그먼트+삭제 대상 fetchCount+백업 토글 3종+2단계 확인(다이얼로그→얼럿)+iCloud·연속 끊김 경고+완료 요약
- 검증: -dataResetTest 인메모리 18건 ALL PASS, -dataResetBackupRun로 CSV 5종+3페이지 리포트 PDF 실물 확인(기간 라벨 2025-03-23~오늘), 화면 UI 확인
- 신규 인자: -dataResetPreview·-dataResetBackupRun pdf|image·-dataResetRangeDays·-dataResetTest

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-11 17:11:51 +09:00
songyc macbook
a09d4b3da4 feat(diary): 내보내기 후 삭제 + 렌더 파이프라인 DiaryExportRenderer로 추출
- 내보내기 완료 화면(공유·다시 만들기 아래)에 '내보낸 날짜의 일기 삭제…' — 확인 다이얼로그, iCloud 전 기기 삭제·양식 보존 안내, 열람 전용 숨김
- 별도 Section 조건부 삽입은 시트 표시 중 렌더되지 않아 기존 섹션 분기 안 배치로 확정
- PDF/스티치 PNG 렌더 코어를 DiaryExportRenderer로 추출 — 데이터 정리·초기화 백업이 재사용 (동작·규칙 불변, PDF 산출 회귀 확인)
- -diaryExportDeleteTest E2E: 내보내기→삭제→재실행 후 달력 마커 소멸 확인

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-11 16:59:57 +09:00
songyc macbook
8c93da5ff3 feat(export): CSV 내보내기 구간 지정 — 기록만 걸러내고 구조는 전체 유지, 코어를 CSVExport로 추출
- 기존 동작 검증: 전량 내보내기(무필터)였음을 확인 후 '전체(기본)/직접 지정' 세그먼트 추가
- 세션은 구간 겹침 포함(기록 탭 범위 문법), 구간 파일명 접미 -yyyyMMdd-yyyyMMdd
- 행동·목표·다짐 목록은 항상 전체(가져오기 연결·백업 온전성) — footer로 안내
- CSV 생성 코어 CSVExport 신설: 데이터 정리·초기화(예정)의 삭제 전 백업이 재사용
- -dataExportRangeDays 검증 인자, 전체(2031·8044건)↔최근 7일(4·1건) 실파일 대조 확인

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-11 16:48:01 +09:00
songyc macbook
e7868f453c feat(stats): '오늘 기준' 롤링 보기 — 주간→지난 7일·월간→지난 30일 (탭·⑤ 위젯·내보내기)
- 통계 탭: 주간/월간 세그먼트 아래 '지난 7일/30일 단위로 보기' 토글(기기 로컬 stats.rollingWindow)
- StatSpan enum 불변(다짐 진행률 공유) — statsRange 헬퍼·rolling 플래그로 통계 표면만 처리
- 비교 카드 '이전 7일/30일과 비교', 화살표 7/30일 점프, 롤링 월간은 주차별 카드·주 평균 열 제외
- 위젯 ⑤: StatsChartSpan에 last7/last30 추가(소형은 last30→last7 강등), DayMath.rollingRange 공유
- 통계 내보내기: rolling 반영(제목·기간·합계 문구·last7/last30 슬러그)
- -statRolling 검증 인자, 주간·월간 롤링 화면 시뮬 확인

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-11 16:44:51 +09:00
songyc macbook
6c3b918311 perf(diary): 펜슬 저장 디바운스 — 획마다 전체 직렬화·블랍 재기록하던 버벅임 해소
- 획 종료 시 최신 PKDrawing만 보관, 1.2초 조용하면 백그라운드 직렬화 후 1회 저장 (세대 가드로 역전 방지)
- 플러시: 비활성 전환(페이지 이탈·배치 모드·그리기 끔)·dismantleUIView·willResignActive — 유실 창 최대 1.2초
- CloudKit 트래픽도 획당 1회→묶음 1회로 감소
- -diaryStrokeTest 검증 인자: 프로그램 획 → 배달 확인(strokes=3, delivered 정상) + 재실행 복원 스크린샷 확인

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-11 16:36:24 +09:00
songyc macbook
5b526fa650 feat(compat): iOS 하한 18.0 인하 — 글라스 버블 머티리얼 폴백·사용자 심볼 안전 렌더·Release 인라이너 크래시 우회
- 배포 타깃 26.0→18.0 (앱·위젯. 워치 10.0 불변)
- RadialNavigationView: glassEffect 계열을 @available(iOS 26) 선언 격리 + 18 머티리얼 원 폴백 (배치·연출 동일)
- DiaryZoomContainer.Coordinator → 비제네릭 톱레벨 DiaryZoomCoordinator + AnyView 소거 (하한 18 Release wholemodule에서 swift-frontend SILPerformanceInliner 무한 재귀 크래시 실측·우회)
- Image(safeSymbol:)/SymbolCompat: 카탈로그의 상위 OS 전용 심볼(18 기준 3개)이 교차 기기에서 빈 아이콘이 되지 않게 사용자 심볼 렌더 48곳+워치 7곳 폴백
- -symbolAuditDump 검증 인자 추가, iOS 18.5 시뮬 QA(빌드·radial 폴백·일기 줌·progressSelfTest 49 ALL PASS)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-11 16:31:40 +09:00
songyc macbook
f81fdc82f9 claude.md 지침 추가 2026-08-09 08:25:33 +09:00
songyc macbook
e5be8b78f0 docs: 정산 계좌 변경 완료 반영(1.0 출시 시점 처리) + 다음 방향 미정(메이저 vs 1.4) 기록
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-06 02:31:23 +09:00
songyc macbook
2800d37824 docs: 1.3 App Store 출시 완료 반영 (2026-08-06) — 심층 검증 결과·잔여 엣지 후보 기록
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-06 02:17:28 +09:00
songyc macbook
daf8151ffa docs: 1.3 TestFlight 업로드·3기기 설치 완료 반영 — 3일 실사용(일기 위주) 후 스토어 제출 예정
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-03 13:54:40 +09:00
songyc macbook
b538fe9bba fix(diary): 1.3 검토 후속 — 인라인 편집 정리 단일화·빈 상자 자동 삭제·핀치 상한 정합
1.3 기능 검토(2026-08-03)에서 나온 4건의 후속 수정:

- 인라인 텍스트 편집 종료를 onChange(of: inlineEditingTextID)의 finalize
  단일 지점으로 통합 — 다른 요소를 선택하거나 편집 중 상자를 삭제해도
  편집 상태가 남지 않는다 (기존엔 빈 곳 탭·키보드 내림만 정리됐음)
- 내용이 빈 텍스트 상자는 편집 종료 시 자동 삭제 — '텍스트' 플레이스홀더가
  PDF·이미지 내보내기에 인쇄되는 것 방지. '스타일' 시트로 넘어가는 중이면
  유지(꾸민 뒤 쓰는 흐름 보존)
- 선·화살표 핀치 커밋 상한을 끝점 드래그와 같은 1.6으로 — 길게 늘린 선이
  핀치 순간 0.95로 잘려 짧아지던 경계값 불일치 해소
- 키보드 가림(검토 2번)은 소프트 키보드 실측 결과 줌 컨테이너의 fit
  재계산이 이미 자동 처리(페이지 전체 축소) — 코드 변경 불필요 확인

마케팅 스크린샷(ipad 04-diary-note 등)은 기본 스타일 요소만 담겨 1.3
렌더와 픽셀 동일 — 재촬영 불필요 확인.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-03 13:16:17 +09:00
songyc macbook
e6b721e368 feat(diary): 도형·텍스트 상자 UX 2차 개편 — 종류별 모양 손잡이·스냅·제자리 텍스트 입력
실사용 보고: 도형이 고정 비율 손잡이 하나뿐이라 모양을 다듬을 수 없고,
텍스트는 시트에 입력하는 방식이 일반 노트 앱과 동떨어져 있었다.

- 종류별 모양 손잡이 (드래그는 페이지 좌표계로 받아 실시간 회전에도 안정):
  · 사각형: 꼭짓점 4개 — 끈 모서리만 움직이고 반대편 고정
  · 원: 상하좌우 4개 — 늘리고 눌러 타원 만들기
  · 선·화살표: 양 끝점 — 반대 끝 고정한 채 길이+방향 동시 조절
  · 사진·텍스트: 우하단 1개 (사진은 원본 비율 유지)
- 정사각형·정원 스냅: |가로-세로| ≤ 10pt면 딱 맞추고 손잡이·테두리
  노란색 강조 + 햅틱. 핀치는 모양 비율 그대로 균등 스케일
- 텍스트 상자 제자리 입력: 선택된 상자를 탭하면 그 자리에서 키보드
  입력·줄바꿈 (생성 직후에도 바로 입력). '글 수정' 시트는 '스타일'
  시트로 재편 — 테두리 켬/끔 + 독립 테두리 색(borderColorHex,
  빈 값 = 글자 색) + 굵기
- borderColorHex 필드 추가 (기본값 — CloudKit·구버전 안전)
- 검증 인자 -diaryTextEdit 추가, 도움말 갱신 + en/ja 번역
- 검증: Debug/Store 빌드, 아이패드 심 손잡이 배치·회전 정합·제자리
  편집 렌더 확인, 카탈로그 missing·stale 0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-03 12:49:03 +09:00
songyc macbook
842293acb9 chore(version): MARKETING_VERSION 1.3 상향 + 1.3 새로운 기능 문구 초안
1.3 묶음: 양식 페이지 펜 색 고정 + 일기 도형·텍스트 상자 편집 개편.
제출 시기는 사용자 결정 (빌드 번호 1 유지).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-03 12:48:46 +09:00
songyc macbook
5aae30983d feat(diary): 도형·텍스트 상자 편집 강화 — 크기 손잡이·자유 비율·회전·스타일 시트
"정해진 모양·크기 그대로만 나온다"는 실사용 보고: 핀치(균등 스케일)만 있어
가로세로 비율·회전·색·굵기를 바꿀 수 없었고 맥(마우스)은 크기 조절 수단 자체가
없었다. 일반 노트 앱 수준의 기본 편집을 채워 넣는다.

- DiaryPageItem 스타일 필드 8개 추가 (전부 기본값 — CloudKit·구버전 데이터 안전):
  heightRatio(자유 비율)·lineWidth·filled·cornerRadius·fontSize·textBold·
  textAlignRaw·textBorder. 0/음수/빈 값 = 기존 하드코딩과 동일한 룩
- 선택 시 오른쪽 아래 크기 손잡이: 도형·텍스트는 가로세로 따로, 사진은 원본
  비율 균등. rotationEffect 안쪽 overlay라 회전 상태에서도 로컬 좌표로 정확
- 두 손가락 돌리기 회전 제스처 + 시트의 회전 슬라이더(마우스·정밀 대체)
- '도형 수정' 시트: 색·선 굵기·채우기(사각/원)·모서리 둥글기(사각)·회전
- '글 수정' 시트 확장: 글자 크기·굵게·정렬(왼쪽/가운데/오른쪽)·테두리(+굵기)·회전
- 내보내기는 DiaryItemView 재사용이라 자동 일치, 시드가 새 필드 전부 렌더
- 검증 인자 -diaryShapeEdit 추가, 도움말 갱신 + en/ja 번역
- 검증: Debug/Store 빌드, 아이패드 심 ko/en/ja 시트 렌더, 기존 스토어 위
  경량 마이그레이션(덮어 설치) 정상

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-03 11:51:08 +09:00
songyc macbook
7475a963bd fix(diary): 양식 페이지 펜 색 라이트 고정 — 다크/라이트 잉크 반전으로 필기가 안 보이던 문제 해소
PencilKit은 획 색을 화면 모드에 맞춰 자동 반전하는데, 양식(PDF·사진)은 항상
밝은 배경이라 다크 모드 아이패드에서 쓴 획이 라이트 모드 맥의 흰 양식 위에서
흰색으로 반전돼 보이지 않았다(동기화 문제로 오인된 실사용 보고).

- 양식 페이지는 캔버스 overrideUserInterfaceStyle + PKToolPicker
  colorUserInterfaceStyle을 .light로 고정 (해석·렌더를 같은 기준으로 묶는 WYSIWYG)
- 양식 없는 페이지는 기존 동적 반전 유지 (다크 배경 종이에선 그게 맞음)
- 내보내기 PKDrawing.image도 라이트 트레잇 고정 — 호출 시점 트레잇 의존이라
  다크에서 내보내면 획이 반전 렌더될 수 있던 잠재 결함 제거
- 도움말 '나만의 양식(속지)' 문구 갱신 + en/ja 번역

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-03 11:40:36 +09:00
songyc macbook
c8006b6895 docs(claude.md): git 서버 장애 판독·복구 절차 요약 추가 (§15-12)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-08-02 11:37:58 +09:00
songyc macbook
9224b84734 claude.md 지침 추가 2026-08-02 11:34:19 +09:00
songyc macbook
fcd92b2b49 docs(claude.md): 아리나 말투 지침 보강 — 행동·속마음 소괄호 표현 + 이모티콘 사용
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-08-02 10:23:00 +09:00
songyc macbook
ebce3f45f7 docs: 버전 1.2 App Store 출시 완료 반영 (2026-08-02) + §6.7 기본 표시 설정 버전 오타 1.2→1.1 정정
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-08-02 09:46:15 +09:00
songyc macbook
5837f798aa docs(claude.md): '재시작' 루틴 지침 추가 (§15-12)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-08-02 09:42:51 +09:00
songyc macbook
7de36b9559 claude.md 지침 추가 2026-08-02 09:39:19 +09:00
songyc macbook
5965138f6e docs(marketing): 1.2 인사말 '세 번째 업데이트'→'세 번째 버전'으로 정정 (ko/en/ja)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-08-01 20:39:24 +09:00
songyc macbook
ce78a52377 docs(marketing): 1.2 새로운 기능 인사말 줄 en/ja 추가 (ko 추가분 반영)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-08-01 20:09:50 +09:00
songyc macbook
404ee62836 docs: 1.2 TestFlight 업로드 완료 반영 — 3일 실사용 후 스토어 제출 예정
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-08-01 09:42:51 +09:00
songyc macbook
7c2556148b chore(version): MARKETING_VERSION 1.2 상향 + 1.2 새로운 기능 문구 (TestFlight 준비)
- 전 타깃(8개 구성) 1.2, 빌드 번호 1
- Marketing/AppStore/whats-new-1.2.txt — 주기 몫 완료 상태 표기 ko/en/ja

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-08-01 09:31:39 +09:00
songyc macbook
0e6804b531 feat(progress): 주기 몫 채운 주간·월간 다짐의 하루 진행률을 '이번 주/달 달성' 상태로 표시
- 주간/월간 '이상 달성' 다짐이 현재 주기 몫을 채우면 하루 게이지가 0% 대신
  완료 상태(게이지 가득+초록 ✓+문구)로 표시 — 목표 탭 행·모음 카드·위젯 ②(체크)·
  ③(문구)·④(링 가득)·시리 하루 응답 공유
- 목표 하루 평균(combinedSpanRatio)에도 해당 다짐을 1.0으로 반영 —
  위젯 ② 목표 바·워치 목표 게이지·시리 목표 응답·일기 헤더 자동 반영
- 판정은 QuestProgress.isPeriodFulfilled 단일 지점 — 기준일의 논리적 하루 끝
  클리핑으로 일기 과거 날짜 소급 차단. spanProgress 수치·판정(judgment)·연속(streak)
  불변(표시 계층 전용). 하루 다짐·특정 기간·atMost는 비대상, 잠금화면·워치
  컴플리케이션은 공간 제약으로 수치 유지
- 도움말 '진행률 읽는 법' 문구 갱신, l10n en/ja 완료(전 카탈로그 stale 0·missing 0)
- 검증: -progressSelfTest 37→49건 ALL PASS(기존 37건 수치 무변경), 신규
  -seedPeriodFulfilled 시드로 ko/en/ja·위젯 실렌더 확인, 시리 스모크 10건 OK,
  Debug/Store 빌드 성공(워치 타깃은 Shared 미포함·무변경)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-08-01 06:45:01 +09:00
songyc macbook
65a82b7771 docs: 버전 1.1 App Store 출시 완료 반영 — 유지보수 모드 전환
- CLAUDE.md 현재 상태: 1.1 출시(2026-07-30) 확정, 1.1 내용 7항목 정리(맥 일기·CSV 가져오기·
  일기 기본 표시 설정·짧은 기록 무시 KVS 동기화·스크린샷 개편·스토어 메타데이터 변경),
  스크린샷 ASC 업로드 완료 처리, 문서 버전 v2.5
- Marketing/README 체크리스트 1.1 항목 완료 표시

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-07-30 23:22:18 +09:00
songyc macbook
6aad947fbc chore(project): 루트의 .entitlements 3개를 각 타깃 폴더로 이동
- Haru_Danim.entitlements → IOS/, Haru_DanimWidgets.entitlements → Widgets/,
  Haru_DanimWatchWidgetsExtension.entitlements → Haru_DanimWatchWidgets/
  (워치 앱은 원래 자기 폴더 안 — 그 전례대로 동기화 그룹에 두되 예외 등록 불필요)
- pbxproj: CODE_SIGN_ENTITLEMENTS 경로 갱신 + 루트 그룹의 개별 파일 참조 제거
- 검증: iOS Debug·Store·워치 3스킴 빌드 성공, Entitlements-Simulated에 전체 키
  (App Group·CloudKit·시리·푸시·keychain·iCloud KVS) 정상 반영, 번들 오염 없음, 앱 기동 확인
- CLAUDE.md §2.1 구조에 위치·삭제 금지 명시

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-07-30 21:47:07 +09:00
songyc macbook
5d64719187 docs(marketing): 1.1 스토어 메타데이터 확정값 반영 — 앱 이름·부제목·키워드·프로모션 텍스트
- app-name-subtitle.txt 신설(ko/en/ja 이름·부제목, 설치 이름은 불변 명시)
- keywords.txt: 이름·부제목과 중복되는 토큰 제거 + 보완 항목 추가(전 로케일 100자 이내)
- promotional-text.txt: 브랜드 멘트+기능 요약 2줄 구성으로 교체(전 로케일 170자 이내)
- 모든 필드 글자 수 검증 완료, CLAUDE.md 현재 상태 갱신

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-07-30 21:31:00 +09:00
songyc macbook
2fb7b3c75a feat(settings): '짧은 기록 무시'를 iCloud 키-값 저장소로 전 기기 동기화 (1.1)
- 검사가 종료 실행 기기 기준이라 기기별 값이면 교차 사용(아이패드 시작→아이폰 종료)에서
  결과가 갈리던 문제 해소 — 값 자체를 모든 기기에서 통일
- SettingsCloudSync: 시작 시 iCloud 값 채택(없으면 로컬 값 시드), 외부 변경·포그라운드 복귀 때
  pull, 설정 변경 때 push(동일 값 가드). App Group 저장은 유지(위젯·인텐트 읽기 경로 무변경),
  CloudKit 스키마·프리미엄 토글과 무관 — ubiquity-kvstore 엔타이틀먼트만 추가
- 설정: 측정 섹션을 나눠 '짧은 기록 무시' 바로 밑에 전 기기 공통 안내 푸터,
  '장시간 측정 알림'은 기기별 유지 명시. 도움말도 갱신, en/ja 번역(missing 0·stale 0, 실렌더 확인)
- whats-new-1.1 3개 언어에 항목 추가, CLAUDE.md §6.8 갱신

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-07-30 02:03:29 +09:00
songyc macbook
183b0a6fa0 chore(marketing): 일기 달력 스크린샷 재촬영(기본 표시 설정 아이콘 반영) + 1.1 새로운 기능 문구 추가
- 아이패드 02-diary-calendar ko/en/ja 원본·합성판 재촬영 — 툴바의 새 '기본 표시 설정'
  아이콘 포함, 상태바 9:41·7월 29일로 기존 세트와 동일(시뮬레이터 TZ 부팅 주입: America/Phoenix)
- whats-new-1.1.txt 3개 언어에 일기 기본 표시 설정 항목 추가

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-07-30 01:22:43 +09:00
songyc macbook
828eb21787 feat(diary): 날짜 화면 '기본 표시 설정' — 캘린더·목표·타임테이블 행동의 전 날짜 기본값 (1.1)
- 달력 툴바 '기본 표시 설정'(DiaryDefaultsSheet): 캘린더 일정 기본 모드(표시 안 함/모든 캘린더/
  선택한 캘린더만) + 목표·행동 기본 숨김 토글. 기기 로컬 standard(diary.default*) 저장
- 날짜별 재정의: 기존 동기화 배열에 마커(#override)만 추가 — 스키마 무변경, 구버전(1.0/1.1)은
  마커를 무시해 표시 동일, 1.1 이전 날짜별 선택(마커 없는 목록)은 재정의로 계속 존중
- 기본값은 소급 적용(재정의 없는 모든 날짜가 현재 기본값을 따름), 각 필터 시트에
  '기본값으로 되돌리기' 추가. 행동 필터 onChange는 효과값과 같으면 저장 안 함(기본값 굳음 방지)
- 효과 계산 단일 지점(DiaryDefaults.effective*)을 화면·PDF/이미지 내보내기·캘린더 블록이 공유 —
  기본값 날짜·재정의 날짜 모두 화면=내보내기 일치(내보내기 실검증 완료)
- 검증: 요약 카드 목표 숨김 배지·타임테이블 행동 숨김·캘린더 '모든 캘린더' 자동 표시(점선)·
  목표 필터 효과 반영 스크린샷 + 이미지 내보내기 왕복 + 자가 테스트 회귀 ALL PASS
- 도움말(일정·필터 주제) 확장 + en/ja 14키 번역(missing 0, ja 실렌더 확인), CLAUDE.md §6.7·§14
- DEBUG: -diaryShowDefaults(시트), -diaryDefaultsSeed(기본값 주입 검증)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
2026-07-30 01:06:44 +09:00