37 Commits

Author SHA1 Message Date
songyc macbook
1758cc3a25 feat(complications): 워치 페이스 컴플리케이션 3종 (CLAUDE.md §9.2)
- 현재 현황: 측정 중 대표 행동 + 실시간 타이머 + 추가 측정 +N(없으면 생략),
  미측정 시 '실행 중 아님'
- 목표 달성률: 목표·기간(하루/주간/월간) 선택, 원형 게이지/진행바/인라인
- 다짐 달성률: rectangular는 세 기간 모두 표기, '이하 유지(한도형)' 다짐은
  게이지 대신 한도 안/초과 상태로 별도 표현
- accessoryCircular/Rectangular/Inline/Corner 지원 + 페이스 갤러리 추천(recommendations)
- 워치 앱이 캐시한 스냅숏 사용, 갱신 시 reloadTimelines로 실시간 리프레시
- pbxproj: WatchShared 3개 타깃 연결, 위젯·컴플리케이션 뷰를 앱 타깃에도 포함
  (DEBUG 미리보기용, @main 제외), WATCHOS_DEPLOYMENT_TARGET 26.0
- DEBUG 미리보기: -complicationPreview YES, -complicationScroll YES

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013yKDMhuF39GVYy3FMcGHh7
2026-07-10 09:00:15 +09:00
songyc macbook
f9f1898d15 feat(watch): 애플워치 앱 + WCSession 실시간 연동 (CLAUDE.md §9.1)
- WatchShared/WatchPayload: iOS·워치·워치위젯 3개 타깃이 공유하는 Codable 스냅숏
  (꼬리표/행동/목표·다짐 진행률/측정 중 대표 행동 + 추가 개수/프리미엄)
- iOS WatchSyncManager: 워치의 실행·새로 고침 명령 처리(ActionRunner 공용) 후
  Live Activity·홈 위젯 갱신, 데이터 변경 시 updateApplicationContext로 푸시
- 워치 앱: 꼬리표 목록 → 행동 목록 → 탭으로 실행(시간형 토글/횟수형 +1),
  측정 중 실시간 타이머, 대표 행동 표시는 다이나믹 아일랜드 설정과 동일 기준
- 미결제 시 프리미엄 잠금, iPhone 연결 불가 안내
- 수신 스냅숏을 워치 App Group에 캐시 (컴플리케이션용)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013yKDMhuF39GVYy3FMcGHh7
2026-07-10 09:00:01 +09:00
songyc macbook
ed8b52792a feat(widgets): 홈/잠금화면 위젯 6종 + Interactive Widgets (CLAUDE.md §8)
- 행동 실행(A): 소형1/중형3/대형4칸, Button(intent:)로 앱 없이 즉시 실행,
  측정 중 실시간 타이머 + 노란 테두리, 표시 기간(오늘/이번 주/이번 달) 옵션
- 목표 진행률(B): 하루/주간/월간 가로 진행바, 소형1/중형2/대형4
- 다짐 진행률(C): 원형 링 + 기간 옵션, 단일 행동 다짐은 눌러서 실행,
  '이하 유지'는 한도 지킴/초과로 표현
- 다짐 현황(D): 목표명 + 원형 링 그리드 (소형 2x2 / 중형 최대 8 / 대형 목표 2개)
- 통계: 행동 최대 3개 꺾은선 그래프, 앱 통계 탭과 동일 산식·색,
  소형은 '한 달 일별' 제외 (스펙 §8.3)
- 잠금화면: circular/rectangular/inline, 표시 방식 3종(게이지/숫자/다짐 점)
- 전 위젯 프리미엄 게이트 (미결제 시 잠금 안내)
- DEBUG 미리보기 화면: -widgetPreview YES|lock, -widgetPreviewScroll B|C|D|S

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013yKDMhuF39GVYy3FMcGHh7
2026-07-10 08:59:47 +09:00
songyc macbook
18f49bc0db feat(intents): 시리 단축어용 App Intents 구현 (CLAUDE.md §10)
- 엔티티: ActionEntity/GoalEntity/QuestEntity (목록 제안 + 이름 검색)
- 인텐트 6종: 시간 측정 시작/종료, 횟수 추가, 행동 누적값, 목표/다짐 진행률 조회
  — 조회 인텐트는 값을 반환해 단축어에서 변수로 활용 가능
- RunActionIntent: 인터랙티브 위젯 버튼용 토글(시간형 시작/종료, 횟수형 +1)
- ActionRunner: 실행 로직 공용화 (짧은 기록 무시 규칙 포함)
- 모든 인텐트에 프리미엄 게이트, 실행 후 위젯 타임라인 갱신
- IntentHooks: 앱 프로세스에서 Live Activity 갱신 주입
- 시리 대표 문구 4종 (AppShortcutsProvider)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013yKDMhuF39GVYy3FMcGHh7
2026-07-10 08:59:31 +09:00
songyc macbook
f468fdf296 feat(data): SwiftData 저장소를 App Group으로 이관하고 CloudKit 동기화 지원
- DataStore: App Group 컨테이너의 HaruDanim.store 사용, 기존 default.store 1회 자동 이관
- 프리미엄 + 동기화 토글 시 CloudKit(.private) 구성으로 컨테이너 생성, 실패하면 로컬 폴백
- CloudKit 요건(모든 관계 optional)에 맞춰 to-many 관계를 optional 저장 + 기존 이름
  접근자로 리팩터링 (originalName 매핑으로 기존 데이터 유지)
- Tag/Action/Goal/Quest에 uuid 추가 (시리 단축어·위젯·워치 식별자) + 중복 보정
- 모델 레이어(Models/Settings/DayMath/QuestProgress/Formatters/Theme)를 Shared/로 이동
  — 위젯 확장과 공유
- 집계 설정(주 시작 요일·하루 시작 시간·대표 시간·짧은 기록 무시)을 App Group defaults로
  이관해 위젯·워치와 공유, 설정의 '기기 간 동기화' 토글 활성화
- Goal.combinedSpanRatio 공용화 (모음 탭 카드·위젯·시리가 동일 산식 사용)
- DEBUG 검증 인자: -cloudSync YES, -settingsScrollPremium YES

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013yKDMhuF39GVYy3FMcGHh7
2026-07-10 08:59:15 +09:00
songyc macbook
26410006a6 feat(premium): 프리미엄 아키텍처 도입 (EntitlementProvider/PremiumManager/PremiumGate)
- EntitlementProvider 프로토콜로 권한 조회 추상화 — StoreKit 2 도입 시 구현체만 교체
- PremiumManager(@Observable): 앱 UI의 단일 진입점, canAddAction/Goal/Quest 게이트
- PremiumGate: 위젯·워치·인텐트용 App Group defaults 동기 캐시 (기존 값 1회 이관)
- 행동/목표/다짐 개수 제한 체크를 @AppStorage 직접 참조에서 매니저 경유로 교체
- 앱 entitlements: App Group / iCloud(CloudKit) / Siri
- DEBUG 검증 인자: -premium YES/NO

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013yKDMhuF39GVYy3FMcGHh7
2026-07-10 08:58:58 +09:00
songyc macbook
0509285a04 feat(goals): add drag-and-drop reordering and hide completed goals
- Implement drag-and-drop functionality for users to reorder the active goals list
- Ensure the custom order of goals is persistently saved and loaded
- Filter out completed goals from the main active list to reduce visual clutter
- Add a 'View Completed Goals' button to navigate to a dedicated screen for finished items
2026-07-10 04:41:11 +09:00
songyc macbook
ecc4c016f7 feat(main): implement snap-scrolling carousel for goal widgets with unified display options
- Remove the maximum limit for selected goal widgets on the main tab
- Unify the display format (aggregate vs. individual) to apply globally across all selected goals
- Redesign the horizontal scrolling into a full-width snap carousel (pagination style)
- Ensure only one widget is fully visible at a time with no adjacent cards partially showing
- Apply snap scrolling so light swipes firmly transition to the next or previous widget
2026-07-10 04:11:14 +09:00
songyc macbook
352be3e29b feat(main): allow displaying up to 3 goals on the top progress widget
- Update the goal progress widget in the main tab to support up to 3 selected goals
- Add multi-selection capabilities to the widget settings menu
- Implement a horizontal or scrollable layout for multiple goals to optimize screen space
- Maintain existing routing to specific goal detail screens upon tap
2026-07-10 03:52:51 +09:00
songyc macbook
ce5f239025 project file fix 2026-07-10 03:06:51 +09:00
songyc macbook
954dbeb308 change Expiranner project xcode file 2026-07-10 03:02:37 +09:00
songyc macbook
520e625377 change folder Haru_Danim -> HaruDanim 2026-07-10 03:02:15 +09:00
songyc macbook
ce3cb00fcc feat(main): add 'view statistics' to action long-press menu
- Add 'View Statistics' option to the context menu when long-pressing an action icon in the main tab
- Route the user directly to the independent Statistics tab upon selection
- Automatically apply the selected action as a filter when entering the Statistics tab, mirroring the 'View Records' behavior
2026-07-09 22:52:11 +09:00
songyc macbook
810e4d6373 feat(action): enhance icon UI and add memo prompt options
- Enlarge the count number displayed on the main tab action icon
- Enhance the click feedback animation on the main tab for better visibility
- Add an option to toggle memo prompts during action creation
- Conditionally show memo prompts based on settings when stopping a timer or incrementing a count
2026-07-09 20:42:15 +09:00
songyc macbook
c6cab66374 change Expiranner project xcode file 2026-07-09 19:27:02 +09:00
songyc macbook
3a46505451 start Expiranner project and first demo app build 2026-07-09 19:23:40 +09:00
songyc macbook
2d9e7ad20b remove old project 2026-07-09 19:07:01 +09:00
songyc macbook
7c85cadd8e feat(filter): revamp filter selection logic and group actions by tags
[Filter UI & Logic]
- feat: implement toggle behavior for the 'Select All' button
- feat: group actions under their respective parent tags in the filter menu
- feat: auto-select all child actions when a parent tag is selected

[Bug Fixes & Calculation]
- fix(records): resolve rendering issue when only partial actions are selected
- fix(stats): calculate tag statistics using only explicitly selected actions instead of all actions
2026-07-09 19:02:30 +09:00
songyc macbook
ad9af22e9d feat(stats): replace general averages with per-action and per-tag metrics
- Remove unnecessary overall totals and general average metrics below weekly and monthly bar charts
- Add detailed summary sections displaying the sum and average calculated for each specific action and tag
- Ensure the new summary metrics dynamically update based on the selected filters
2026-07-09 15:53:25 +09:00
songyc macbook
acdddbb670 fix(nav): resolve routing bug when target tab is hidden inside 'More' tab
- Fix an issue where navigating to Records via long-press stops at the 'More' tab menu
- Update navigation logic to automatically route through the 'More' tab and land directly on the target screen
- Ensure action filters are correctly applied when deep-linking to nested tabs
2026-07-09 04:45:37 +09:00
songyc macbook
5475590a47 feat: extract stats tab and enhance progress tracking UI
[Main Tab & Routing]
- feat(main): add options for goal widget to show aggregate or individual (up to 3) resolutions
- fix(main): route long-press 'view records' directly to the filtered Records tab

[Statistics & Charts]
- feat(stats): separate Statistics into an independent main tab and remove from Records
- feat(stats): add multi-select filters for tags and actions (default: all)
- feat(stats): add daily horizontal bar charts for tag ratio comparison
- feat(stats): add weekly line charts by day and cumulative bar charts
- feat(stats): add monthly line charts (by day and week) and cumulative bar charts

[Core Logic]
- feat(goals): update logic for 'maintain below' targets to show 100% if met, 0% if exceeded
2026-07-09 04:36:14 +09:00
songyc macbook
afb7435656 feat: enhance records with charts/filters and update main tab UI
[New Features]
- feat(records): add line charts for weekly/monthly trends and averages
- feat(records): implement multi-select filters for specific tags and actions
- feat(main): add 'view records' option to the action icon long-press menu
- feat(main): display goal progress widget with customizable settings

[UI/UX & Bug Fixes]
- fix(ui): expand touchable areas globally, especially in record lists
- chore(main): rename main tab top title from '하루다님' to '모음'
- feat(nav): route to goal detail screen when tapping the goal widget
2026-07-09 02:22:04 +09:00
songyc macbook
045f0b6f74 feat(action): enhance icon UI and add memo prompt options
- Enlarge the count number displayed on the main tab action icon
- Enhance the click feedback animation on the main tab for better visibility
- Add an option to toggle memo prompts during action creation
- Conditionally show memo prompts based on settings when stopping a timer or incrementing a count
2026-07-08 16:40:59 +09:00
songyc macbook
f6e2963c88 feat: major app overhaul with new features, UI fixes, and branding
[Bug Fixes]
- fix: correct delete popup positioning
- fix: hide bottom tab bar in detail menus to prevent UI overlap
- fix: expand touchable area for icon selection buttons
- fix: localize date display in the record tab based on device settings

[New Features]
- feat: open calendar popup when clicking the date in the record tab
- feat: add memo option upon timer completion and display in records
- feat: pin favorite actions to top and add tag-based ordering
- feat: allow goal reordering and add collapse/expand toggle for sub-goals

[Refactoring & Settings]
- refactor: streamline bottom navigation to max 4 tabs with a 'More' tab
- feat: allow users to customize visible tabs and count in settings

[Branding]
- chore: update app name to 'Haru Danim' (하루다님)
- chore: add '당신의 하루에 다녀가다' slogan to the splash screen
2026-07-08 16:27:12 +09:00
songyc macbook
3000ce6713 Complete free features and prototype; testing to follow 2026-07-08 02:32:13 +09:00
songyc macbook
c854c8f265 complete prototype app(하루다님) 2026-07-07 15:20:53 +09:00
songyc macbook
7a53bb9ce4 new feature Quest(다짐) pogress and Fix an issue in 횟수측정 Action(행동) where count and time are recorded but not reflected in the icon 2026-07-07 14:29:11 +09:00
songyc macbook
c35f50fa73 feat: add Goal(목표), Quest(다짐), and history tracking features
- Implement Goal(목표) and Quest(다짐) functionality
- Add a new feature for tracking and recording history
- TODO: Fix an issue in 횟수측정 Action(행동) where count and time are recorded but not reflected in the icon
2026-07-07 02:37:16 +09:00
songyc macbook
da740ade03 feat: Implement basic features for tag(꼬리표) and action(행동) 2026-07-06 17:24:57 +09:00
songyc macbook
52f45dba2b Setting claude code and basic layout 2026-07-06 00:56:00 +09:00
songyc macbook
9aa5cc5414 Start HaruDanim Project 2026-07-03 22:01:08 +09:00
songyc macbook
1fe3386d55 remove TallyFlow Project 2026-07-03 21:58:43 +09:00
songyc macbook
b209199c2d feat: Setup app shell, SwiftData models, and real-time tracking engine
- Initialize iOS project with 6-tab navigation structure
- Configure custom Light/Dark themes and AppColors
- Define SwiftData models for Tasks, Tags, Goals, and TrackingRecords
- Setup relationships (Super/Sub tags) and cascade delete rules
- Implement Observable TrackingEngine for real-time timer updates
2026-06-26 03:32:29 +09:00
songyc macbook
b5be034b19 remove DeepWorkTimer Project 2026-06-26 02:19:38 +09:00
songyc macbook
a63ed44e49 remove LemonLime Project 2026-06-26 01:14:51 +09:00
songyc macbook
479b8bab8a restore project and add 2026-06-19 19:53:54 +09:00
songyc macbook
4e4016533e restore code files 2026-06-19 19:27:11 +09:00