Skip to content

fix: 1.1.0 홈 QA#208

Merged
jihun32 merged 15 commits intodevelopfrom
fix/#200
Mar 12, 2026
Merged

fix: 1.1.0 홈 QA#208
jihun32 merged 15 commits intodevelopfrom
fix/#200

Conversation

@jihun32
Copy link
Contributor

@jihun32 jihun32 commented Mar 12, 2026

🔗 관련 이슈

📙 작업 내역

@jihun32 jihun32 marked this pull request as ready for review March 12, 2026 11:41
@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ab8d85f3-60eb-4601-93d8-853c937ee0ce

📥 Commits

Reviewing files that changed from the base of the PR and between c0cb451 and 1ded7ec.

⛔ Files ignored due to path filters (33)
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/doubt.imageset/doubt.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/fuck.imageset/fuck.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/happy.imageset/happy.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/icon_clean.imageset/icon_clean.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/icon_default.imageset/icon_default.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/icon_health.imageset/icon_health.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/icon_heartDouble.imageset/icon_heart.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/icon_heart_double.imageset/icon_heart.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/icon_laptop.imageset/icon_laptop.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/icon_pencil.imageset/icon_pencil.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/love.imageset/love.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/trouble.imageset/trouble.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=none-1.imageset/ic_statistics.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=none-1.imageset/selected=none-1.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=none-2.imageset/ic_couple.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=none.imageset/ic_home.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=selected-1.imageset/ic_statistics_selected.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=selected-1.imageset/selected=selected-1.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=selected-2.imageset/ic_couple_selected.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=selected.imageset/ic_home_selected.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust_empty_poke.imageset/illust_empty_poke.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust_keepiluv.imageset/illust_keepiluv.png is excluded by !**/*.png
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust_keepiluv.imageset/illust_keepiluv.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust_keepiluv.imageset/illust_keepiluv@2x.png is excluded by !**/*.png
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust_keepiluv.imageset/illust_keepiluv@3x.png is excluded by !**/*.png
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust_poke.imageset/illust_poke.png is excluded by !**/*.png
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust_poke.imageset/illust_poke.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust_poke.imageset/illust_poke@2x.png is excluded by !**/*.png
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust_poke.imageset/illust_poke@3x.png is excluded by !**/*.png
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/logo.imageset/logo.svg is excluded by !**/*.svg
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/logo.imageset/logo.png is excluded by !**/*.png
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/logo.imageset/logo@2x.png is excluded by !**/*.png
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/logo.imageset/logo@3x.png is excluded by !**/*.png
📒 Files selected for processing (29)
  • Projects/Feature/Home/Sources/Goal/AddGoalListView.swift
  • Projects/Feature/Home/Sources/Home/HomeReducer+Impl.swift
  • Projects/Feature/Home/Sources/Home/HomeView.swift
  • Projects/Feature/MainTab/Sources/View/MainTabView.swift
  • Projects/Feature/MakeGoal/Sources/MakeGoalView.swift
  • Projects/Feature/Onboarding/Sources/Connect/OnboardingConnectView.swift
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Illustration/icon_heartDouble.imageset/Contents.json
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=none-1.imageset/Contents.json
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=none-2.imageset/Contents.json
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=none.imageset/Contents.json
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=selected-1.imageset/Contents.json
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=selected-2.imageset/Contents.json
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected=selected.imageset/Contents.json
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust_keepiluv.imageset/Contents.json
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust_poke.imageset/Contents.json
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/logo.imageset/Contents.json
  • Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/logo.imageset/Contents.json
  • Projects/Shared/DesignSystem/Sources/Components/Bar/Navigation/TXNavigationBar.swift
  • Projects/Shared/DesignSystem/Sources/Components/Bar/TabBar/TXTabBar.swift
  • Projects/Shared/DesignSystem/Sources/Components/Calendar/BottomSheet/TXCalendarBottomSheet.swift
  • Projects/Shared/DesignSystem/Sources/Components/Calendar/Core/TXCalendar.swift
  • Projects/Shared/DesignSystem/Sources/Components/Calendar/Core/TXCalendarDateCell.swift
  • Projects/Shared/DesignSystem/Sources/Components/Calendar/Navigation/TXCalendarMonthNavigation.swift
  • Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalCardView+Configuration.swift
  • Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalCardView.swift
  • Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView+Configuration.swift
  • Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView.swift
  • Projects/Shared/DesignSystem/Sources/Modifiers/View+TxBottomSheet.swift
  • Projects/Shared/DesignSystem/Sources/Resources/Image/Images.swift

📝 Walkthrough

1.1.0 홈 화면 QA 반영 (#200)

TCA 아키텍처 및 상태 관리 개선

HomeReducer 상태 관리

  • setCalendarDate 액션에서 리프레시 버튼 표시 로직 개선
    • 기존의 단순 날짜 동일성 비교에서 Calendar.isDate(_:equalTo:toGranularity: .weekOfYear) 기반 주(week) 단위 비교로 변경
    • 선택된 날짜가 현재 주에 속하는 경우만 isRefreshHidden을 true로 설정
    • 날짜가 동일한 경우 조기 종료하여 불필요한 상태 업데이트 방지

CardHeaderView 상태 확장

  • 새로운 goalCheckOpened 구성 케이스 추가
    • 기존 goalCheckClosed 외에 확장/열린 헤더 상태를 지원하여 동적 UI 전환 활성화

UI/레이아웃 개선

HomeView

  • 빈 상태(empty state) 처리 개선
    • 조건부 렌더링으로 카드가 없을 때만 goalEmptyView 표시
    • emptyArrow 오버레이 추가로 사용자 가이드 강화

AddGoalListView

  • ScrollView로 카테고리 목록을 감싸서 수직 스크롤 활성화
  • 외부 패딩(top 20, horizontal 20, bottom 80)을 ScrollView 내부로 이동

TXCalendar 설정 확장

  • verticalPadding 속성 추가 (기본값: Spacing.spacing3)
  • 캘린더 상하 여백을 동적으로 제어하여 다양한 높이 요구사항 수용

CardHeaderView

  • 헤더 내부 레이아웃 개선
    • 아이콘 크기를 32x32에서 40x40으로 확대
    • 코너 반지름 16에서 Radius.s로 통일
    • 새로운 insideBorderEdges 속성으로 테두리 렌더링 제어

디자인 시스템 및 사용자 환경 개선

안전 영역(SafeArea) 처리

  • MakeGoalView, OnboardingConnectView에서 TXSafeArea.inset(.bottom) 제거
  • 하단 시트의 동적 패딩을 고정값으로 단순화하여 예측 가능한 레이아웃 구현

네비게이션 및 탭바

  • TXNavigationBar: 홈 스타일 정렬 조정 (offset(y: -3) 적용)
  • TXTabBar: 탭 아이템 수직 정렬 개선 (.top 정렬 추가)
  • MainTabView: 플로팅 버튼 테두리 스타일을 insideBorder에서 outsideBorder로 변경

에셋 최적화

  • 로고, 탭 아이콘(Home, Statistics, Couple) 및 일러스트레이션(keepiluv, poke) SVG로 변환
  • 래스터 기반 다중 스케일(1x, 2x, 3x)에서 단일 벡터 포맷으로 통합
  • 에셋 카탈로그에 preserves-vector-representation: true 추가

캘린더 및 UI 컴포넌트

  • TXCalendarDateCell: 테두리 렌더링을 overlay stroke에서 insideBorder로 변경
  • TXCalendarBottomSheet: 버튼 영역 하단 패딩 제거, 수직 패딩 조정 (spacing4 → spacing5)
  • TXCalendarMonthNavigation: 애니메이션 비활성화 추가

사용자 가시적 변화

  • 주간 캘린더에서 현재 주 외 날짜 선택 시 리프레시 버튼이 더 정확하게 표시/숨김
  • 빈 상태 화면 개선으로 새 목표 추가 유도 강화
  • 카테고리 목록 스크롤 추가로 더 나은 카테고리 탐색 경험
  • 개선된 캘린더 하단 시트 간격으로 보다 나은 시각적 계층 구조

Walkthrough

홈 화면의 QA 피드백을 반영하여 레이아웃 개선, 캘린더 날짜 비교 로직 개선, 빈 상태 UI 개선, 다양한 컴포넌트의 padding/offset 조정 및 이미지 자산 경로를 업데이트하는 변경입니다.

Changes

Cohort / File(s) Summary
Home 화면 레이아웃 개선
Projects/Feature/Home/Sources/Goal/AddGoalListView.swift, Projects/Feature/Home/Sources/Home/HomeView.swift, Projects/Feature/Home/Sources/Home/HomeReducer+Impl.swift
카테고리 목록을 ScrollView로 감싸 스크롤 기능 추가, 빈 목표 상태 UI 개선 및 emptyArrow 오버레이 추가, 캘린더 날짜 비교 로직을 주 단위 기반 검사로 변경하여 isRefreshHidden 계산 개선.
디자인 시스템 - 정렬/Padding
Projects/Shared/DesignSystem/Sources/Components/Bar/Navigation/TXNavigationBar.swift, Projects/Shared/DesignSystem/Sources/Components/Bar/TabBar/TXTabBar.swift, Projects/Shared/DesignSystem/Sources/Components/Calendar/BottomSheet/TXCalendarBottomSheet.swift, Projects/Shared/DesignSystem/Sources/Components/Calendar/Core/TXCalendar.swift
레이아웃 정렬 조정(offset, alignment 추가), 캘린더 컴포넌트에 verticalPadding 프로퍼티 추가 및 padding 계산 개선.
디자인 시스템 - Border/스타일 변경
Projects/Shared/DesignSystem/Sources/Components/Calendar/Core/TXCalendarDateCell.swift, Projects/Feature/MainTab/Sources/View/MainTabView.swift, Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalCardView.swift, Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView.swift, Projects/Shared/DesignSystem/Sources/Components/Card/Header/CardHeaderView+Configuration.swift
Border 렌더링 방식 변경(insideBorder ↔ outsideBorder), CardHeaderView에 새로운 goalCheckOpened configuration case 추가, border 처리 로직 개선.
Padding 조정
Projects/Feature/MakeGoal/Sources/MakeGoalView.swift, Projects/Feature/Onboarding/Sources/Connect/OnboardingConnectView.swift, Projects/Shared/DesignSystem/Sources/Modifiers/View+TxBottomSheet.swift
Bottom padding에서 TXSafeArea.inset 제거 또는 추가하여 안전 영역 처리 일관성 개선.
애니메이션 및 기타
Projects/Shared/DesignSystem/Sources/Components/Calendar/Navigation/TXCalendarMonthNavigation.swift
TXCalendarMonthNavigation에 애니메이션 비활성화 modifier 추가.
이미지 자산 참조 변경
Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/Symbol/selected\\=*.imageset/Contents.json, Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/illust\\*.imageset/Contents.json, Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/logo.imageset/Contents.json, Projects/Shared/DesignSystem/Sources/Resources/Image/Images.swift
탭 바 아이콘 파일명 변경(selected\=none.svg → ic\_home.svg 등), 일러스트 이미지를 래스터에서 벡터(SVG)로 전환 및 preserves\-vector\-representation 속성 추가, 로고 자산 경로 재구성(SharedDesignSystemAsset → IllustrationAsset).
Configuration 값 조정
Projects/Shared/DesignSystem/Sources/Components/Card/Goal/GoalCardView+Configuration.swift
GoalCardView.Configuration의 cornerRadius, emojiSize, emojiPadding 값 미세 조정.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/#200

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@clxxrlove
Copy link
Member

@coderabbitai summary

@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

✅ Actions performed

Summary regeneration triggered.

@jihun32 jihun32 merged commit 4629aa0 into develop Mar 12, 2026
8 checks passed
@jihun32 jihun32 deleted the fix/#200 branch March 12, 2026 11:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants