Skip to content

feat - 온보딩 화면 업데이트#7

Merged
mark77234 merged 8 commits intodevfrom
feat/6
Feb 8, 2026
Merged

feat - 온보딩 화면 업데이트#7
mark77234 merged 8 commits intodevfrom
feat/6

Conversation

@mark77234
Copy link
Collaborator

작업내용

  • 온보딩 화면 추가
  • Paperlogy 폰트 추가

Copilot AI review requested due to automatic review settings February 8, 2026 08:56
@mark77234 mark77234 linked an issue Feb 8, 2026 that may be closed by this pull request
1 task
@mark77234 mark77234 merged commit 60cc04e into dev Feb 8, 2026
2 checks passed
@mark77234 mark77234 deleted the feat/6 branch February 8, 2026 08:56
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

온보딩 플로우를 실제 페이지 기반 UI로 교체하고(Pager), 앱 전반 텍스트 폰트를 Paperlogy 커스텀 폰트로 전환하기 위한 PR입니다. 멀티플랫폼(UIKit/AppKit) 지원을 위해 스플래시 비디오/온보딩 이미지 렌더링도 분기 처리되었습니다.

Changes:

  • 온보딩 화면을 6개 페이지(TabView .page) + 마지막 CTA 버튼 구조로 추가/연결
  • Paperlogy 폰트 리소스 추가 및 AppFont를 커스텀 폰트 API로 변경(등록 로직 포함)
  • 스플래시/온보딩 이미지 표시를 UIKit/AppKit 양쪽에서 동작하도록 분기 처리 및 관련 프로젝트 설정 업데이트

Reviewed changes

Copilot reviewed 30 out of 54 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
KillingPart/Views/Screens/Splash/SplashView.swift UIKit/AppKit 분기 추가 및 macOS용 AVPlayerLayer 뷰 구현
KillingPart/Views/Screens/RootFlowView.swift onboarding 라우팅을 OnboardingContainerView로 변경
KillingPart/Views/Screens/Onboarding/OnboardingContainerView.swift 페이지형 온보딩 컨테이너/진행 표시/CTA 구성
KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage1View.swift 온보딩 1페이지 추가
KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage2View.swift 온보딩 2페이지 추가
KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage3View.swift 온보딩 3페이지 추가
KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage4View.swift 온보딩 4페이지 추가
KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage5View.swift 온보딩 5페이지 추가
KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage6View.swift 온보딩 6페이지(마지막 문구) 추가
KillingPart/Views/Screens/Onboarding/OnboardingView.swift 기존 임시 온보딩 뷰 제거
KillingPart/Views/Screens/Onboarding/Components/OnboardingImageCardView.swift 온보딩 이미지 카드(UIKit/AppKit 로딩) 추가
KillingPart/Views/Screens/Onboarding/Components/OnboardingProgressView.swift 진행 표시 컴포넌트 추가
KillingPart/Views/Screens/Onboarding/Components/OnboardingSkipButton.swift 스킵 버튼 컴포넌트 추가
KillingPart/Views/Screens/Onboarding/Components/OnboardingNextButton.swift 다음 버튼 컴포넌트 추가
KillingPart/Views/Screens/Main/MainTabView.swift 메인 탭 텍스트 폰트 Paperlogy로 변경
KillingPart/Views/Screens/Auth/LoginView.swift 로그인 타이틀 폰트 Paperlogy로 변경
KillingPart/Views/Components/PrimaryButton.swift 버튼 폰트 Paperlogy로 변경
KillingPart/Resources/Fonts/AppFont.swift Paperlogy 폰트 등록/사용 API로 변경
KillingPart/KillingPartApp.swift 앱 초기화 시 Paperlogy 폰트 등록 호출
KillingPart/Info.plist UIAppFonts에 Paperlogy 폰트 파일 등록
KillingPart/KillingPart.entitlements entitlements 내용을 빈 dict로 변경
KillingPart/Assets.xcassets/kpGray600.colorset/Contents.json 신규 컬러 에셋 추가
KillingPart/Assets.xcassets/kpGray300.colorset/Contents.json 신규 컬러 에셋 추가
KillingPart/Assets.xcassets/Onboarding/** 온보딩 이미지 에셋 추가
KillingPart.xcodeproj/project.pbxproj Info.plist 지정, 샌드박스/빌드 설정 등 프로젝트 설정 업데이트

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 3 to +4
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
</dict>
<dict/>
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

macOS 샌드박스 관련 entitlement 키들이 entitlements 파일에서 제거되어() 실제 코드사인 entitlement가 기대와 다르게 빠질 수 있습니다. 빌드 설정(ENABLE_APP_SANDBOX/ENABLE_USER_SELECTED_FILES)로 자동 주입을 의도한 것이라도, 팀에서 사용하는 배포/CI 환경에서 동일하게 적용되는지 확인하거나 기존 키를 entitlements 파일에 유지하는 쪽이 안전합니다.

Copilot uses AI. Check for mistakes.
{
"images" : [
{
"filename" : "onboarding)5.png",
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

onboarding_5.imageset의 1x 파일명이 "onboarding)5.png"로 되어 있어 다른 스케일 파일명 규칙(onboarding_5.png)과 불일치합니다. 의도된 것이 아니라면 리소스 파일명/Contents.json을 정리해 두는 편이 추후 관리(교체/자동 스크립트/디자이너 전달)에서 안전합니다.

Suggested change
"filename" : "onboarding)5.png",
"filename" : "onboarding_5.png",

Copilot uses AI. Check for mistakes.
Comment on lines +138 to +142
func makeNSView(context: Context) -> SplashPlayerNSView {
let view = SplashPlayerNSView()
view.playerLayer.videoGravity = .resizeAspectFill
view.playerLayer.player = player
return view
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

macOS(AppKit) 경로에서 makeNSView에서 view.playerLayer에 접근하기 전에 wantsLayer가 아직 true가 아니라 layer가 nil일 수 있어 강제 캐스팅(layer as! AVPlayerLayer)에서 크래시가 날 수 있습니다. makeNSView에서 wantsLayer = true를 먼저 설정하거나(NSView 초기화 시점/override init), playerLayer를 안전하게 준비한 뒤에 videoGravity/player를 설정하도록 수정하세요.

Copilot uses AI. Check for mistakes.
Comment on lines +45 to +54
.overlay {
if shouldShowSwipeHint {
HStack {
swipeHintArrow(systemName: "chevron.left")
Spacer()
swipeHintArrow(systemName: "chevron.right")
}
.padding(.horizontal, AppSpacing.s)
.allowsHitTesting(false)
}
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스와이프 힌트용 화살표 오버레이가 VoiceOver에 노출될 수 있습니다(allowsHitTesting(false)만으로는 접근성 제외가 되지 않음). 시각적 힌트라면 overlay 컨테이너 또는 각 Image에 accessibilityHidden(true)를 적용해 보조기기 사용자에게 불필요한 포커싱이 가지 않도록 해주세요.

Copilot uses AI. Check for mistakes.
Comment on lines +8 to +9
Text("이제 첫번째 **킬링파트**를 기록할 시간이예요!")
.font(AppFont.paperlogy5Medium(size: 30))
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

문구 오타/띄어쓰기: "첫번째" → "첫 번째", "시간이예요" → "시간이에요"가 자연스러운 표기입니다(사용자 노출 문자열).

Copilot uses AI. Check for mistakes.
Comment on lines +3 to +15
struct OnboardingSkipButton: View {
let action: () -> Void

var body: some View {
Button {
action()
} label: {
Text("건너뛰기")
.font(.system(size: 14, weight: .medium))
.foregroundStyle(.secondary)
}
.buttonStyle(.plain)
}
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OnboardingSkipButton이 현재 코드베이스에서 참조되지 않습니다(검색 결과 정의 파일 외 사용처 없음). 실제 온보딩 플로우에서 사용할 계획이 없다면 불필요한 코드이므로 제거하고, 사용할 계획이면 OnboardingContainerView 등에 연결해 사용처가 명확해지도록 해주세요.

Copilot uses AI. Check for mistakes.
Comment on lines +3 to +10
struct OnboardingNextButton: View {
let action: () -> Void

var body: some View {
PrimaryButton(title: "다음") {
action()
}
}
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OnboardingNextButton이 현재 코드베이스에서 참조되지 않습니다(검색 결과 정의 파일 외 사용처 없음). 실제로 사용할 컴포넌트라면 OnboardingContainerView에 연결하고, 아니라면 중복 컴포넌트(PrimaryButton 래핑)로 남지 않도록 제거하는 편이 유지보수에 좋습니다.

Copilot uses AI. Check for mistakes.
Comment on lines 419 to 421
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = KillingPart/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "킬링파트";
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

커스텀 Info.plist(KillingPart/Info.plist)를 추가했는데, 타겟 설정에서 GENERATE_INFOPLIST_FILE = YES가 그대로라 생성된 Info.plist가 사용되면서 파일의 UIAppFonts 설정이 반영되지 않을 수 있습니다. 커스텀 plist를 사용할 의도라면 GENERATE_INFOPLIST_FILE를 NO로 전환하거나(권장), 생성 plist에 UIAppFonts를 포함시키는 방식으로 정리해 주세요.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat - 온보딩화면

1 participant