Skip to content

[Splash] 스플래시 화면 #1#23

Merged
Roy-wonji merged 9 commits into
developfrom
feature/Splash
May 6, 2026
Merged

[Splash] 스플래시 화면 #1#23
Roy-wonji merged 9 commits into
developfrom
feature/Splash

Conversation

@Roy-wonji
Copy link
Copy Markdown
Contributor

변경 내용

  • 스플래시 화면 추가
  • 앱 루트 TCA 연결
  • 토큰 관리 및 API 헤더 기반 추가
  • 광고/분석/배포 설정 추가
  • Codex PR 리뷰 workflow 추가

작업 내용

  • App 루트에 AppReducerAppView를 연결하고 Splash 상태를 초기 진입점으로 구성
  • SplashFeature, SplashView, splashLogo asset을 추가
  • Keychain 기반 토큰 관리 인터페이스와 TokenProviding, APIHeader를 추가
  • Tuist SPM 의존성과 모듈 그래프를 Splash, Network, ThirdParty 구조에 맞게 정리
  • Firebase, GoogleMobileAds, Mixpanel, fastlane, entitlements 설정 추가
  • .github/workflows/codex-pr-review.yml로 Codex 자동 PR 리뷰 workflow 추가

관련 이슈

테스트

  • ./tuisttool generate 성공
  • codex-pr-review.yml YAML 파싱 확인
  • GoogleService-Info.plist, fastlane/.env 커밋 제외 확인
  • Xcode archive 미실행
  • 시뮬레이터 UI 확인 미실행

리뷰 포인트

  • TCA 루트 전환 구조와 Splash 초기 진입 방식
  • DomainInterface -> UseCase -> Network Foundations 토큰 의존성 경계
  • Tuist 모듈 그래프와 ThirdParty/ThirdPartys 명명 일관성
  • fastlane Match/AppStore 설정에서 민감값이 커밋되지 않았는지 확인

@codex review

Roy-wonji added 7 commits May 7, 2026 01:39
- Picke 멀티모듈 TCAFlow WeaveDI 기준에 맞춰 주요 의존성 표 동기화
- 커밋 제목에 GitHub 이슈 번호를 포함하도록 규칙 보강
- 커밋 본문은 파일 또는 모듈별 bullet 요약을 우선 사용하도록 정리
- OmX 훅 검증용 trailer는 최종 커밋 메시지에서 제거하도록 명시
- Tuist/Package.swift
  - Swift tools 6.2 기준으로 패키지 설정 갱신
  - TCAFlow WeaveDI GoogleSignIn AppAuth ReactiveSwift Firebase SDWebImage Mixpanel 의존성 구성
  - MixpanelSessionReplay staticFramework 설정 추가
- DependencyPackagePlugin
  - GoogleMobileAds Mixpanel MixpanelSessionReplay TargetDependency 별칭 추가
- DependencyPlugin
  - Splash ThirdPartys ThirdParty 모듈 경로 별칭 추가
- Domain/Data
  - DataInterface 모듈 제거 후 Repository가 DomainInterface를 바라보도록 정리
  - API Service Repository 의존성을 AsyncMoya Mixpanel 기준으로 재배선
- Network/Shared/Presentation
  - ThirdPartys export와 Shared ThirdParty 모듈 추가
  - Presentation에서 Splash를 export하고 Splash 모듈에 UseCase DesignSystem 연결
- DomainInterface
  - KeychainManaging 인터페이스와 메모리 mock 구현 추가
  - placeholder BaseView 제거
- UseCase
  - Security 기반 KeychainManager와 TCA dependency 연결 추가
- Network Foundations
  - TokenProviding dependency와 APIHeader 공통 헤더 구성 추가
- App DI
  - KeychainManager와 TokenProviding 기본 등록 추가
- App
  - PickeApp에서 TCA Store를 생성하고 AppView를 루트로 연결
  - AppReducer에 Splash 상태와 전환 처리 기반 추가
- Splash
  - SplashFeature와 SplashView 추가
  - placeholder BaseView 제거
- DesignSystem
  - splashLogo 이미지 asset과 ImageAsset case 추가
  - 앱 아이콘 asset catalog를 iOS universal 구성으로 정리
- App Project
  - Firebase Crashlytics GoogleMobileAds Mixpanel 의존성을 앱 타겟에 연결
  - Picke entitlements 파일을 앱 타겟에 연결
- InfoPlist
  - Google Mixpanel AdMob 관련 plist 키 setter 추가
  - 앱 InfoPlist에 BASE_URL Google ID Mixpanel AdMob 값을 xcconfig 변수로 주입
- AppDelegate
  - Firebase Mixpanel SessionReplay GoogleMobileAds 초기화 추가
  - WeaveDI 기본 의존성 등록 부트스트랩 추가
- fastlane
  - Appfile Fastfile Matchfile과 Bundler 설정 추가
- .github/workflows/codex-pr-review.yml
  - develop main master 대상 PR에서 Codex 자동 리뷰 실행
  - openai/codex-action을 read-only sandbox로 실행
  - 실패 시 workflow summary에 원인 후보를 남기고 전체 검증은 막지 않도록 설정
  - github-script로 기존 Codex 리뷰 댓글을 찾아 갱신
@Roy-wonji Roy-wonji self-assigned this May 6, 2026
@Roy-wonji Roy-wonji marked this pull request as ready for review May 6, 2026 16:58
@Roy-wonji
Copy link
Copy Markdown
Contributor Author

변경 내용

  • 스플래시 화면 추가
  • 앱 루트 TCA 연결
  • 토큰 관리 및 API 헤더 기반 추가
  • 광고/분석/배포 설정 추가
  • Codex PR 리뷰 workflow 추가

작업 내용

  • App 루트에 AppReducerAppView를 연결하고 Splash 상태를 초기 진입점으로 구성
  • SplashFeature, SplashView, splashLogo asset을 추가
  • Keychain 기반 토큰 관리 인터페이스와 TokenProviding, APIHeader를 추가
  • Tuist SPM 의존성과 모듈 그래프를 Splash, Network, ThirdParty 구조에 맞게 정리
  • Firebase, GoogleMobileAds, Mixpanel, fastlane, entitlements 설정 추가
  • .github/workflows/codex-pr-review.yml로 Codex 자동 PR 리뷰 workflow 추가

관련 이슈

테스트

  • ./tuisttool generate 성공
  • codex-pr-review.yml YAML 파싱 확인
  • GoogleService-Info.plist, fastlane/.env 커밋 제외 확인
  • Xcode archive 미실행
  • 시뮬레이터 UI 확인 미실행

리뷰 포인트

  • TCA 루트 전환 구조와 Splash 초기 진입 방식
  • DomainInterface -> UseCase -> Network Foundations 토큰 의존성 경계
  • Tuist 모듈 그래프와 ThirdParty/ThirdPartys 명명 일관성
  • fastlane Match/AppStore 설정에서 민감값이 커밋되지 않았는지 확인

@codex review

@Roy-wonji Roy-wonji closed this May 6, 2026
@Roy-wonji Roy-wonji reopened this May 6, 2026
@chatgpt-codex-connector
Copy link
Copy Markdown

💡 Codex Review

let store = Store(initialState: AppReducer.State()) {
AppReducer()
._printChanges()
._printChanges(.actionLabels)
}

P1 Badge Persist root Store instead of recreating it in body

Store is created inside WindowGroup, so any SwiftUI scene/body recomputation (for example lifecycle or environment changes) can recreate the store, reset all TCA state to splash, and drop in-flight effects. The root store should be held as a stable property on PickeApp (or equivalent long-lived owner) so app state survives view updates.


public static func updateAccessToken(_ token: String?) {
guard let newToken = token, !newToken.isEmpty else { return }
tokenProvider.saveAccessToken(newToken)

P2 Badge Allow access token updates to clear stored credentials

The guard in updateAccessToken ignores nil and empty strings, which means logout/expiry paths cannot clear a previously saved token through this API. In that scenario, baseHeader keeps emitting the stale bearer token from storage and requests may continue to authenticate as the old session.


{
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
},

P1 Badge Provide actual AppIcon image files in asset catalog

The app icon set now defines slots but no filename entries, and this AppIcon.appiconset contains no icon image files. Without real icon assets, asset compilation/App Store validation can fail due to a missing app icon set, blocking archive/distribution.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Roy-wonji added 2 commits May 7, 2026 02:16
- APIHeader
  - nil 또는 빈 access token 입력 시 저장된 토큰을 삭제하도록 변경
- TokenProviding
  - access token 삭제 전용 API를 추가하고 InMemory 구현에 반영
- KeychainManaging
  - access token만 삭제하는 clearAccessToken을 인터페이스와 구현체에 추가
- PickeApp
  - AppReducer printChanges 호출을 DEBUG 빌드에서만 실행하도록 분기
  - Release 계열 빌드에서는 기본 AppReducer만 생성하도록 정리
@Roy-wonji Roy-wonji merged commit e3f62fd into develop May 6, 2026
2 checks passed
@Roy-wonji Roy-wonji deleted the feature/Splash branch May 6, 2026 17:20
@chatgpt-codex-connector
Copy link
Copy Markdown

💡 Codex Review

let store = Store(initialState: AppReducer.State()) {

P1 Badge Hoist root Store out of App body to preserve state

Move the root Store creation out of body (e.g., into a stored property) because building it inside WindowGroup recreates the entire TCA tree whenever PickeApp.body is recomputed (such as scene/lifecycle updates). That resets navigation/state back to splash and restarts long-lived effects, causing user-visible state loss and duplicated side effects during normal app usage.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

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.

1 participant