Conversation
feat - Swift 개발환경설정
* feat: 주요색상 추가 및 미리보기 테스트 * fix: 기존명칭 primary 워닝 제거 * feat: 앱 아이콘(default) 추가 * feat(AppIcon): 다크모드, 틴트버전 추가 * feat(SplashView): 스플래시화면 설정 * feat(project): 앱 이름 변경 * fix(project): 번들아이디 소문자로수정 * fix(project): iOS 타겟 버전 및 앱 버전 수정 * fix(SplashView): 워닝 제거
* fix(SplashView): UIkit 에러 대응 * feat(Onboarding): 온보딩화면 페이지 추가 및 구조 정의 * feat(Font): Paperlogy 폰트 추가 * feat(onboarding): 온보딩 사진 에셋 추가 및 적용 * chore(project): dead_code_stipping 허용 * feat(onboarding): gray색상 300,600 추가 및 온보딩 UI 업데이트 * feat(Onborading): 온보딩 페이지 UI 업데이트 * feat(Onboarding): 마지막페이지 UI 및 애니메이션 업데이트
There was a problem hiding this comment.
Pull request overview
iOS 앱(“킬링파트”)의 1.0.1 릴리즈 준비를 위해 앱 아이콘/폰트/스플래시/온보딩 및 기본 앱 플로우(스플래시→온보딩→로그인→메인)를 추가하고, 기존 backend/frontend 폴더의 placeholder 문서/ignore 파일을 정리합니다.
Changes:
- iOS SwiftUI 앱 프로젝트 및 앱 플로우(RootFlow/AppFlowViewModel) 추가
- 스플래시(비디오 기반) 및 온보딩 화면/컴포넌트 추가
- Paperlogy 폰트 등록(Info.plist + 런타임 등록) 및 앱 아이콘/색상 에셋 추가, 루트 README 갱신
Reviewed changes
Copilot reviewed 49 out of 79 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| frontend/README.md | 프론트엔드 placeholder README 삭제 |
| frontend/.gitignore | 프론트엔드 전용 .gitignore 삭제 |
| backend/README.md | 백엔드 placeholder README 삭제 |
| backend/.gitignore | 백엔드 전용 .gitignore 삭제 |
| README.md | iOS 프로젝트 환경/폴더 구조 문서로 갱신 |
| KillingPartUITests/KillingPartUITestsLaunchTests.swift | 런치 UI 테스트 스캐폴딩 추가 |
| KillingPartUITests/KillingPartUITests.swift | UI 테스트 스캐폴딩 추가 |
| KillingPartTests/KillingPartTests.swift | 유닛 테스트 스캐폴딩 추가 |
| KillingPart/Views/Screens/Splash/SplashView.swift | 스플래시(비디오/그라데이션 fallback) 화면 추가 |
| KillingPart/Views/Screens/RootFlowView.swift | 앱 루트 플로우 전환(splash/onboarding/login/main) 추가 |
| KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage1View.swift | 온보딩 1페이지 UI 추가 |
| KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage2View.swift | 온보딩 2페이지 UI 추가 |
| KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage3View.swift | 온보딩 3페이지 UI 추가 |
| KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage4View.swift | 온보딩 4페이지 UI 추가 |
| KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage5View.swift | 온보딩 5페이지 UI 추가 |
| KillingPart/Views/Screens/Onboarding/Pages/OnboardingPage6View.swift | 온보딩 6페이지 UI 추가 |
| KillingPart/Views/Screens/Onboarding/OnboardingContainerView.swift | 온보딩 TabView 컨테이너/진행 UI 추가 |
| KillingPart/Views/Screens/Onboarding/Components/OnboardingSkipButton.swift | 온보딩 스킵 버튼 컴포넌트 추가 |
| KillingPart/Views/Screens/Onboarding/Components/OnboardingProgressView.swift | 온보딩 진행 표시 컴포넌트 추가 |
| KillingPart/Views/Screens/Onboarding/Components/OnboardingNextButton.swift | 온보딩 다음 버튼 컴포넌트 추가 |
| KillingPart/Views/Screens/Onboarding/Components/OnboardingImageCardView.swift | 온보딩 이미지 카드 컴포넌트 추가 |
| KillingPart/Views/Screens/Main/MainTabView.swift | 메인 탭(홈/추가) 스캐폴딩 추가 |
| KillingPart/Views/Screens/Auth/LoginView.swift | 로그인 화면 스캐폴딩 추가 |
| KillingPart/Views/Components/PrimaryButton.swift | 공용 Primary 버튼 컴포넌트 추가 |
| KillingPart/ViewModels/AppFlowViewModel.swift | 앱 플로우 상태/로그인 처리 ViewModel 추가 |
| KillingPart/Utils/AppSpacing.swift | spacing 상수 정의 추가 |
| KillingPart/Services/AuthenticationService.swift | 인증 서비스 스텁 추가 |
| KillingPart/Resources/Fonts/fonts.placeholder | 폰트 리소스 폴더 placeholder 추가 |
| KillingPart/Resources/Fonts/AppFont.swift | Paperlogy 폰트 등록/접근 API 추가 |
| KillingPart/Resources/Colors/AppColors.swift | 앱 컬러 팔레트(hex 기반) 추가 |
| KillingPart/Resources/Assets/assets.placeholder | 에셋 리소스 폴더 placeholder 추가 |
| KillingPart/Models/AppFlowStep.swift | 앱 플로우 스텝 enum 추가 |
| KillingPart/KillingPartApp.swift | 앱 엔트리/폰트 등록 초기화 추가 |
| KillingPart/KillingPart.entitlements | 엔타이틀먼트 파일 추가 |
| KillingPart/Info.plist | UIAppFonts 등록 추가 |
| KillingPart/Extensions/Color+Hex.swift | hex 문자열→Color 변환 확장 추가 |
| KillingPart/Assets.xcassets/kpGray600.colorset/Contents.json | 그레이 컬러 에셋 추가 |
| KillingPart/Assets.xcassets/kpGray300.colorset/Contents.json | 그레이 컬러 에셋 추가 |
| KillingPart/Assets.xcassets/Onboarding/onboarding_5.imageset/Contents.json | 온보딩 이미지 에셋 메타 추가 |
| KillingPart/Assets.xcassets/Onboarding/onboarding_4.imageset/Contents.json | 온보딩 이미지 에셋 메타 추가 |
| KillingPart/Assets.xcassets/Onboarding/onboarding_3.imageset/Contents.json | 온보딩 이미지 에셋 메타 추가 |
| KillingPart/Assets.xcassets/Onboarding/onboarding_2.imageset/Contents.json | 온보딩 이미지 에셋 메타 추가 |
| KillingPart/Assets.xcassets/Onboarding/onboarding_1.imageset/Contents.json | 온보딩 이미지 에셋 메타 추가 |
| KillingPart/Assets.xcassets/Onboarding/Contents.json | 온보딩 에셋 카탈로그 메타 추가 |
| KillingPart/Assets.xcassets/KPPrimary.colorset/Contents.json | 프라이머리 컬러 에셋 추가 |
| KillingPart/Assets.xcassets/Contents.json | 에셋 카탈로그 메타 추가 |
| KillingPart/Assets.xcassets/AppIcon.appiconset/ic_dark_KillingPart.png | 다크 앱 아이콘 추가 |
| KillingPart/Assets.xcassets/AppIcon.appiconset/ic_alpha_KillingPart.png | tinted(알파) 앱 아이콘 추가 |
| KillingPart/Assets.xcassets/AppIcon.appiconset/ic_KillingPart.png | 기본 앱 아이콘 추가 |
| KillingPart/Assets.xcassets/AppIcon.appiconset/Contents.json | 앱 아이콘 카탈로그 정의 추가 |
| KillingPart/Assets.xcassets/AccentColor.colorset/Contents.json | AccentColor 정의 추가 |
| KillingPart.xcodeproj/project.xcworkspace/contents.xcworkspacedata | Xcode workspace 파일 추가 |
| KillingPart.xcodeproj/project.pbxproj | Xcode 프로젝트 설정/타겟/빌드설정 추가 |
| .gitignore | Xcode/SwiftPM 관련 ignore 추가 |
Files not reviewed (1)
- KillingPart.xcodeproj/project.xcworkspace/contents.xcworkspacedata: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| .frame(maxWidth: .infinity) | ||
| .padding(.vertical, AppSpacing.m) | ||
| .background(Color("kpPrimary")) | ||
| .clipShape(RoundedRectangle(cornerRadius: 14)) |
There was a problem hiding this comment.
Color("kpPrimary") references a named color that doesn’t exist in the asset catalog (the color set is KPPrimary.colorset). This can lead to missing colors (or runtime issues) and is inconsistent with other usages of Color.kpPrimary in the onboarding screens. Use the correct asset name (e.g. Color("KPPrimary")) or switch to the generated Color.kpPrimary accessor consistently.
| func makeNSView(context: Context) -> SplashPlayerNSView { | ||
| let view = SplashPlayerNSView() | ||
| view.playerLayer.videoGravity = .resizeAspectFill | ||
| view.playerLayer.player = player | ||
| return view |
There was a problem hiding this comment.
In the AppKit implementation, makeNSView accesses view.playerLayer before wantsLayer is enabled (it’s only set in viewDidMoveToWindow). On macOS this can make layer nil and the as! AVPlayerLayer cast crash. Set wantsLayer = true before accessing layer (e.g. in init/makeNSView) and ensure the backing layer is created prior to playerLayer usage.
| Text("이제 첫번째 **킬링파트**를 기록할 시간이예요!") | ||
| .font(AppFont.paperlogy5Medium(size: 30)) |
There was a problem hiding this comment.
Spelling/grammar: "시간이예요" should be "시간이에요".
| MARKETING_VERSION = 1.0.0; | ||
| PRODUCT_BUNDLE_IDENTIFIER = com.killingpoint.killingpart; |
There was a problem hiding this comment.
PR title/description indicate a 1.0.1 release, but MARKETING_VERSION is still set to 1.0.0 for the app target. If this PR is intended to produce the 1.0.1 build, bump MARKETING_VERSION accordingly.
| IPHONEOS_DEPLOYMENT_TARGET = 18.5; | ||
| MACOSX_DEPLOYMENT_TARGET = 15.5; | ||
| MARKETING_VERSION = 1.0; |
There was a problem hiding this comment.
The test targets have IPHONEOS_DEPLOYMENT_TARGET = 18.5 while the app target is 16.6. This mismatch can prevent tests from building/running on the same simulators/devices as the app. Align the unit/UI test deployment targets with the app’s deployment target (or lower, if appropriate).
| enum AppFlowStep { | ||
| case splash | ||
| case onboarding | ||
| case login | ||
| case main | ||
| } |
There was a problem hiding this comment.
AppFlowStep is used as the value: for .animation(..., value:) in RootFlowView, which requires the value type to conform to Equatable. As written, AppFlowStep does not conform to Equatable, so this should fail to compile. Add : Equatable (compiler-synthesized) to the enum declaration (or remove the animation value dependency).
업데이트 내용
1.0.0~1.0.1