fix(1.5-p10): 위젯·워치의 건강 다짐 색 미반영 — 스냅숏 폴백을 healthColorHex 우선으로, 빌드 8

- 위젯 QuestCellSnapshot: 분홍 #E0558C 하드코딩 → 지정 색 우선(②③④·잠금 공유 경로)
- 워치 스냅숏: 건강 다짐이 초록 폴백이던 잠복 버그까지 함께 수정(지정 색→기본 분홍)
- ④ 그리드 실측: 걸음=지정 파랑·나머지=기본 분홍, 3종 빌드 그린. 스키마 무변경

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
This commit is contained in:
songyc macbook 2026-08-23 11:38:35 +09:00
parent 8b1236d6a9
commit 5ce9dfdd6d
5 changed files with 23 additions and 11 deletions

File diff suppressed because one or more lines are too long

View File

@ -189,3 +189,5 @@
- 구현: **Quest 신규 필드 `healthColorHex`(기본 "")** + `targetColor` 건강 분기(빈 값=시스템 분홍 → 다크 적응 유지, 값 있으면 hex 고정 — 꼬리표 색과 같은 문법). 편집기 건강 섹션에 '다짐 색'(프리셋 12=AppTheme.tagPresets+컬러 피커), 저장 시 기본 분홍 그대로면 ""로 정규화, 행동·꼬리표 전환 시 "" 정리. targetColor가 단일 공급 지점이라 전 표면 자동 반영.
- ⚠️ **CloudKit 스키마 추가** — DiaryPageItem 전례에 따라 **배포(개발 내보내기→콘솔 Deploy)가 빌드 7 설치보다 선행**. 절차: 아리나 시뮬 내보내기 → 사용자 콘솔 Deploy → 그다음 업로드·설치. 구버전 기기는 분홍 폴백(표시 차이만 — 안전).
- 시드: -seedHealthQuest 걸음 다짐에 #3E7CB1 시드(신규·멱등 재실행 모두 — 렌더 검증+스키마 내보내기 트리거 겸용). 도움말·whats-new 3언어 갱신, l10n 0/0.
- 후속(빌드 8): 위젯·워치 스냅숏이 targetColor 미경유(자체 폴백 — 위젯 분홍 하드코딩, 워치는 초록 폴백[1.5 잠복 표시 버그]) → healthColorHex 우선·기본 #E0558C로 통일. ④ 그리드 실측(걸음 파랑/기본 분홍). 스키마 무변경 — 콘솔 작업 불필요.

View File

@ -601,7 +601,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = IOS/Haru_Danim.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 7;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
@ -643,7 +643,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = IOS/Haru_Danim.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 7;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
@ -686,7 +686,7 @@
CODE_SIGN_ENTITLEMENTS = "Haru_DanimWatch Watch App/Haru_DanimWatch Watch App.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 7;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
@ -722,7 +722,7 @@
CODE_SIGN_ENTITLEMENTS = "Haru_DanimWatch Watch App/Haru_DanimWatch Watch App.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 7;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
@ -758,7 +758,7 @@
CODE_SIGN_ENTITLEMENTS = Haru_DanimWatchWidgets/Haru_DanimWatchWidgetsExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 7;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Haru_DanimWatchWidgets/Info.plist;
@ -794,7 +794,7 @@
CODE_SIGN_ENTITLEMENTS = Haru_DanimWatchWidgets/Haru_DanimWatchWidgetsExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 7;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Haru_DanimWatchWidgets/Info.plist;
@ -827,7 +827,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = Widgets/Haru_DanimWidgets.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 7;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Widgets/Info.plist;
@ -853,7 +853,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = Widgets/Haru_DanimWidgets.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 7;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Widgets/Info.plist;

View File

@ -109,8 +109,13 @@ final class WatchSyncManager: NSObject {
id: quest.uuid,
name: quest.targetName,
symbolName: quest.targetSymbol,
// : (#E0558C) (1.5(8)
// : )
colorHex: quest.targetAction?.sortedTags.first?.colorHex
?? quest.targetTag?.colorHex ?? "#2F6B4F",
?? quest.targetTag?.colorHex
?? (quest.isHealthQuest
? (quest.healthColorHex.isEmpty ? "#E0558C" : quest.healthColorHex)
: "#2F6B4F"),
dayRatio: day.ratio,
weekRatio: week.ratio,
monthRatio: month.ratio,

View File

@ -148,8 +148,13 @@ struct QuestCellSnapshot: Identifiable {
id: quest.uuid,
targetName: quest.targetName,
symbolName: quest.targetSymbol,
// : (healthColorHex, 1.5(8)) targetColor .
// (#E0558C)
colorHex: action?.tags.sorted { $0.createdAt < $1.createdAt }.first?.colorHex
?? quest.targetTag?.colorHex ?? (quest.isHealthQuest ? "#E0558C" : "#2F6B4F"),
?? quest.targetTag?.colorHex
?? (quest.isHealthQuest
? (quest.healthColorHex.isEmpty ? "#E0558C" : quest.healthColorHex)
: "#2F6B4F"),
ratio: isRestDay ? 0 : (fulfilled ? 1 : result.ratio),
displayRatio: isRestDay ? 0 : (fulfilled ? 1 : result.displayRatio),
isAtMost: quest.direction == .atMost,