Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
be6e4a4
fix: 채팅방 선택지 타이밍 — nodeEndTime을 다음 노드 시작 시각 기준으로 변경(마지막 대사 끊김 방지) #8
Roy-wonji Jun 6, 2026
8f256ed
fix: 댓글 — 등록 후 실제 진영 탭 자동전환 + 필터 탭 연속 베이스라인/정렬 정리 #8
Roy-wonji Jun 6, 2026
8fafb78
feat: 홈 '더보기' 탭 시 탐색 탭으로 이동 #8
Roy-wonji Jun 6, 2026
0032d57
fix: QA 레인 빌드 번호 자동 증가 — TestFlight 중복 업로드 방지
Roy-wonji Jun 8, 2026
301e1ab
feat: 마이페이지 — 메인/설정/포인트내역 + 로그아웃·탈퇴·주제제안 팝업 + 웹 이동
Roy-wonji Jun 8, 2026
8d5f4c6
feat: 내 배틀 기록 + Entity 1타입 1파일 분리·폴더링
Roy-wonji Jun 8, 2026
3e4a57a
feat: 내 콘텐츠 활동(댓글/좋아요) + 공지사항·이벤트 + 스켈레톤 공통화
Roy-wonji Jun 8, 2026
24f842f
fix: 마이페이지 — 아바타 원 배경 적용 + 리스트 카드 패딩/간격 통일 + 색상 단축형 + Notice 빈 문구
Roy-wonji Jun 8, 2026
18de7b4
feat: 알림 설정(GET/PATCH) + 콘텐츠활동·공지 탭 스와이프 + 오버스크롤 방지
Roy-wonji Jun 8, 2026
d19485c
fix: 마이페이지 종 아이콘 → 알림 설정 화면 연결 + 알림 설정 패딩 정합
Roy-wonji Jun 8, 2026
472432b
feat: 배틀 주제 제안 화면/API 연결 + 키보드 dismiss 처리 #16
Roy-wonji Jun 8, 2026
0894e8a
fix: 마이페이지 종 아이콘 알림설정 직행 제거 #9
Roy-wonji Jun 8, 2026
27c1dce
feat: 배틀 주제 제안(배틀 만들기) + 제안 성공 팝업 + 빈 상태 문구 가독성
Roy-wonji Jun 8, 2026
e03d937
feat: 나의 철학자 유형(리캡) — GET /me/recap + 컴포넌트 분리 + 차트 애니메이션
Roy-wonji Jun 9, 2026
e466bc3
feat: 리캡 시스템 공유(ShareSheet) + 스켈레톤 + 성향 점수 바 값 가독성
Roy-wonji Jun 9, 2026
f9d6005
fix: 리캡 성향 점수 바 그리드 순서 picke.pen 정합 (원칙·이성 / 개인·변화 / 내면·이상)
Roy-wonji Jun 9, 2026
e11a39c
fix: 리캡 레이더 차트 picke.pen 정합 — 축 순서/라벨 + 꼭짓점 점 + 상단 볼드
Roy-wonji Jun 9, 2026
df24930
fix: 리캡 레이더 차트 picke.pen graph 노드와 픽셀 정합
Roy-wonji Jun 9, 2026
9e0111e
fix: 리캡 레이더 폴리곤 펼침 애니메이션 실제 동작 (Shape animatableData)
Roy-wonji Jun 9, 2026
6349713
feat: 나의 철학자 유형 잠금 분기 + 마이페이지 철학자 카드 잠금/비잠금
Roy-wonji Jun 10, 2026
fb241d9
refactor: 마이페이지 닉네임/코드/포인트 목 기본값 제거 — /me/mypage 응답으로만 주입
Roy-wonji Jun 10, 2026
73a1f9a
fix: Profile 패딩 picke.pen 정합 — 포인트 내역 카드 16/간격 16, 설정 메뉴 top 12
Roy-wonji Jun 10, 2026
e2849f5
fix: 마이페이지 디코딩 실패 — philosopher null 대응
Roy-wonji Jun 10, 2026
2e200bb
feat: 마이페이지 철학자 카드 — 미확정(배틀 5개 미만) 시 잠금 이미지(.lock)
Roy-wonji Jun 10, 2026
1fc569e
fix: recap 빈 응답(배틀 5개 미만) 잠금 화면 처리 #13
Roy-wonji Jun 10, 2026
bb93caa
fix: 나의 철학자 유형 잠금 카드 ??형 아이콘을 lock 이미지로 교체 #13
Roy-wonji Jun 10, 2026
8084a05
chore: fastlane match keychain 사전 unlock 처리
Roy-wonji Jun 10, 2026
4396702
fix: 나의 철학자 유형 잠금 화면 picke.pen 정합 #13
Roy-wonji Jun 10, 2026
4c06a2f
feat: 알림받기(Notification) 화면 + API 연동 / Clean Architecture 풀스택 #21
Roy-wonji Jun 10, 2026
ea853a4
feat: Mixpanel AnalyticsUseCase 도입 — 타입 안전 이벤트 트래킹
Roy-wonji Jun 10, 2026
819aaaa
feat: 알림 미읽음 빨간점 — 홈/프로필 종 아이콘 + 모두 읽음 시 제거 #21
Roy-wonji Jun 10, 2026
f3b036b
chore: ModulePath.Presentation 에 Notification 모듈 경로 등록 #21
Roy-wonji Jun 10, 2026
f9af076
chore: 빌드 버전 20 → 22
Roy-wonji Jun 10, 2026
1a3192f
feat: 마이페이지 충전 바 분리 — 포인트 내역 상세 / 무료 충전 리워드 광고 #9
Roy-wonji Jun 10, 2026
909f0e3
feat: Mixpanel 이벤트 연결 확장 — 로그아웃 / 배틀 조회·투표
Roy-wonji Jun 10, 2026
9c92602
chore: 빌드 버전 22 → 23
Roy-wonji Jun 10, 2026
e5812b3
refactor: 리워드 광고 유닛 ID를 config(REWARD_AD_UNIT)로 분리 + RewardedAdClient…
Roy-wonji Jun 10, 2026
332c0dc
refactor: Mixpanel 이벤트를 PICKé 핵심 명세서 기준으로 재정비
Roy-wonji Jun 10, 2026
b7e22a9
style: swiftformat 일괄 적용 — PR 변경 파일 포맷 정리
Roy-wonji Jun 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,8 @@ public struct VoteSummary: Equatable { ... } // ← Entity 로
```

규칙:
- **모든 화면 모델 (struct/enum)** 은 `Projects/Domain/Entity/Sources/<도메인>/` 아래에 둔다 (`Home/Comment.swift`, `Home/Battle.swift` 등)
- **모든 화면 모델 (struct/enum)** 은 `Projects/Domain/Entity/Sources/<도메인>/` 아래에 둔다 (`Home/Battle/...`, `Profile/Credit/...` 등)
- **파일당 public 타입 하나 (SOLID, 필수)** — 한 파일에 `struct`/`enum` 을 여러 개 넣지 않는다. 타입마다 `타입명.swift` 로 분리하고, `extension` 은 해당 타입 파일에 함께 둔다. 기능별 하위 폴더로 폴더링한다 (예: `Profile/MyPage/{MyPage,MyProfile,MyTier}.swift`, `Profile/Credit/{CreditHistoryPage,CreditHistoryItem}.swift`)
- Feature 안에는 `State` / `Action` / `Reducer` / `CancelID` 같은 **TCA 컴포넌트만** 둔다
- UI 분기용 enum (`CommentFilter`, `CommentSort`) 도 도메인 모델로 취급해 Entity 에 둔다 — 같은 도메인의 여러 화면에서 재사용 가능
- 서버 응답 매핑 init (`init(item: BattlePerspective, order: Int)`) · 정적 mocks · `.empty` 팩토리도 모두 Entity 쪽에서 정의
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public enum ModulePath {
}

// MARK: FeatureModule

public extension ModulePath {
enum Presentations: String, CaseIterable {
case Presentation
Expand All @@ -28,15 +29,16 @@ public extension ModulePath {
case Hifi
case Web
case Battle
case Profile

public static let name: String = "Presentation"


case Notification
}
}

// MARK: - CoreDomainModule


//MARK: - CoreDomainModule
public extension ModulePath {
enum Networks: String, CaseIterable {
case Networking
Expand All @@ -47,7 +49,8 @@ public extension ModulePath {
}
}

//MARK: - CoreMoudule
// MARK: - CoreMoudule

public extension ModulePath {
enum Datas: String, CaseIterable {
case Model
Expand All @@ -60,8 +63,8 @@ public extension ModulePath {
}
}

// MARK: - CoreMoudule

//MARK: - CoreMoudule
public extension ModulePath {
enum Domains: String, CaseIterable {
case Entity
Expand All @@ -70,21 +73,17 @@ public extension ModulePath {
case DataInterface
case DomainInterface


public static let name: String = "Domain"
}
}


public extension ModulePath {
enum Shareds: String, CaseIterable {
case Shared
case DesignSystem
case Utill

public static let name: String = "Shared"
case ThirdParty
case ThirdParty
}
}


Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,20 @@
import Foundation
import ProjectDescription

extension String {
public static func appVersion(version: String = "1.0.0") -> String {
public extension String {
static func appVersion(version: String = "1.0.0") -> String {
return version
}
public static func mainBundleID() -> String {

static func mainBundleID() -> String {
return Project.Environment.bundlePrefix
}
public static func appBuildVersion(buildVersion: String = "10") -> String {

static func appBuildVersion(buildVersion: String = "23") -> String {
return buildVersion
}
public static func appBundleID(name: String) -> String {
return Project.Environment.bundlePrefix+name

static func appBundleID(name: String) -> String {
return Project.Environment.bundlePrefix + name
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,10 @@ extension InfoPlistDictionary {
merging(["GADApplicationIdentifier": .string(value)]) { _, new in new }
}

func setRewardAdUnit(_ value: String) -> InfoPlistDictionary {
merging(["REWARD_AD_UNIT": .string(value)]) { _, new in new }
}

func setSKAdNetworkItems(_ identifiers: [String]) -> InfoPlistDictionary {
merging([
"SKAdNetworkItems": .array(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public extension InfoPlist {
.setGIDClientID("${GOOGLE_CLIENT_ID}")
.setAdmobToken("${ADMOB_TOKEN}")
.setGADApplicationId("${ADMOB_TOKEN}")
.setRewardAdUnit("$(REWARD_AD_UNIT)")
.setKakaoRestApiKey()
.setLSApplicationQueriesSchemes([
"kakaokompassauth", // 카카오톡 로그인
Expand Down
3 changes: 2 additions & 1 deletion Projects/App/Sources/Di/DiRegister.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ public final class AppDIManager: Sendable {
.register { PerspectiveRepositoryImpl() as PerspectiveInterface }
.register { SearchRepositoryImpl() as SearchInterface }
.register { AudioPlayerRepositoryImpl() as AudioPlayerInterface }
// .register { ProfileRepositoryImpl() as ProfileInterface }
.register { ProfileRepositoryImpl() as ProfileInterface }
.register { NotificationRepositoryImpl() as NotificationInterface }
// .register { AppUpdateRepositoryImpl() as AppUpdateInterface }

// 🔐 OAuth Provider 계층 (PFW 조합 패턴)
Expand Down
Loading
Loading