Skip to content

Conversation

@unib35
Copy link
Member

@unib35 unib35 commented Jan 5, 2026

🔮 작업 요약

Figma 디자인을 기반으로 소셜 로그인 화면을 TCA 패턴으로 구현했습니다. Apple/Google 로그인 버튼과 인터랙티브 앨범 캐러셀이 포함되어 있습니다.

🖥️ 상세 작업 내용

  • SocialLoginButton 컴포넌트: Apple/Google 로그인 버튼 (Provider enum으로 타입 구분)
  • LoginFeature TCA Reducer: State, Action, AuthClient Dependency 정의
  • LoginView UI: 헤더, 앨범 캐러셀, 로그인 버튼, 약관 섹션
  • InteractiveAlbumCarousel: 자동 스크롤 + 2번째 아이템 확대 효과
  • 겹침 문제 해결: scaleEffect → frame 크기 변경으로 레이아웃 반영
  • CI 호환성 수정: Xcode 16.2 / Swift 6.0 호환

📸 스크린샷

시뮬레이터 (베젤 포함) 로그인 화면

🎬 동작 영상

Simulator.Screen.Recording.-.iPhone.16.Pro.-.2026-01-05.at.20.50.45.mp4

📌 이슈 및 특이사항

🔧 CI 수정 사항

  • GitHub Actions macos-14 runner에 Xcode 16.3 미설치로 인해:
    • .github/workflows/ci.yml: Xcode 버전 16.3 → 16.2
    • Tuist/Package.swift: swift-tools-version 6.1 → 6.0

🚀 관련 이슈

unib35 and others added 20 commits January 5, 2026 11:40
- SocialLoginProvider enum으로 Apple/Google 타입 정의
- 재사용 가능한 소셜 로그인 버튼 UI 구현
- GoogleIcon 컴포넌트 분리

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- State: isLoading, error 상태 정의
- Action: 소셜 로그인, 약관 탭 액션 정의
- AuthClient Dependency 추가 (Apple/Google 로그인)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 헤더 섹션 (타이틀, 서브타이틀)
- 앨범 캐러셀 (플레이스홀더 그라디언트)
- 소셜 로그인 버튼 섹션
- 약관 동의 텍스트 섹션
- 로딩 오버레이

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 앱 시작 시 LoginView 표시되도록 변경
- TCA Store 초기화 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- GeometryReader로 각 앨범 위치 감지
- 화면 중앙 기준 거리에 따른 스케일 계산
- interactiveSpring 애니메이션으로 부드러운 전환

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 기존 정적 캐러셀을 InteractiveAlbumCarousel로 교체
- 드래그 시 중앙 앨범이 확대되는 효과

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Xcode 자동 생성 로컬라이제이션 문자열 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- scaleEffect 대신 frame 크기 직접 변경으로 레이아웃 반영
- PreferenceKey로 iOS 16 호환 위치 감지 구현
- 앨범 크기 변경 시 HStack이 자동으로 간격 조정

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- n초마다 자동 스크롤 (기본값 3초)
- 2번째로 보이는 아이템만 Scale Up
- ScrollViewReader로 프로그래매틱 스크롤 구현
- 스크롤 위치 기반 현재 인덱스 계산

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- @ViewBuilder 속성을 변수와 같은 줄에 배치 (SwiftLint 규칙)
- Timer.publish + onReceive로 자동 스크롤 안정화
- Combine import 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Assets.xcassets/Icons 폴더가 Icon 패턴에 의해 무시되는 문제 수정

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Google 로그인 아이콘 추가
- 앨범 아트 이미지 4종 추가 (Album1-4)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Google 아이콘 에셋 코드 추가
- Album1-4 이미지 에셋 코드 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
SwiftGen으로 생성된 Asset.Assets.google 사용

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- InteractiveAlbumCarousel에 ImageAsset 배열 파라미터 추가
- 그래디언트 대신 실제 앨범 이미지 표시
- LoginView에서 앨범 이미지 에셋 사용

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- import 정렬
- 들여쓰기 수정
- trailing comma 추가
- 빈 중괄호 내 공백 제거
- redundant return 제거
- numberFormatting 수정

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
SwiftFormat과 SwiftLint 간 trailing comma 충돌 해결
- mandatory_comma: true 설정으로 trailing comma 허용

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Tuist 4.71.0이 Swift 6.1.0을 요구하므로 Xcode 16.3 사용
- Xcode 16.2 (Swift 6.0.3) → Xcode 16.3 (Swift 6.1.0)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
GitHub Actions macos-14 runner에 Xcode 16.3이 아직 설치되지 않음

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Xcode 16.2 (Swift 6.0.3) 호환성을 위해 변경

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
unib35 and others added 2 commits January 5, 2026 20:45
- 원본 데이터를 100회 복제하여 가상 무한 스크롤 구현
- 중간 위치에서 시작하여 양방향으로 충분한 여유 확보
- Resolves #10

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- PR/커밋에 Generated with Claude Code 문구 생략
- Co-Authored-By 문구 생략
@unib35 unib35 merged commit 76295c8 into develop Jan 5, 2026
4 checks passed
@unib35 unib35 deleted the feat/login-screen branch January 5, 2026 13:33
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.

2 participants