{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":758333925,"defaultBranch":"develop","name":"app-iOS","ownerLogin":"project-lyrics","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-02-16T04:53:38.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/159388466?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715733625.0","currentOid":""},"activityList":{"items":[{"before":"7d38c97791e6354a69dd9e8bcaef1bcffe4fdac7","after":"eb38ca2403cf47adc197d13b8611c6a2b309d6e5","ref":"refs/heads/develop","pushedAt":"2024-07-04T14:35:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"Refactor/#24 Login ViewModel Input, output 구조 개선 (#29)\n\n* remove: 불필요한 모듈, 객체 제거\r\n\r\n- RecordError\r\n- Domain PostTextUseCase\r\n- LoginInputOutput\r\n\r\n* feat: CombineCococa 구현\r\n\r\n* remove: Login view 파일 위치 이동\r\n\r\n* refactor: Login ViewController ViewModel 방식 변경\r\n\r\n- 파일 위치 변경\r\n- 네이밍 변경\r\n- input, output 방식 변경\r\n\r\n* refactor: Coordinator Onboarding register 메서드 순서 변경\r\n\r\n* refactor: Shared 모듈 내에 Flex Layout SDK 추가\r\n\r\n* refactor: OAuthType enum으로 변경\r\n\r\n* refactor: FeelinAPI URL, path 변경\r\n\r\n* refactor: input 파라미터 네이밍 변경\r\n\r\n* chore: 개행 제거\r\n\r\n* chore: 개행 변경\r\n\r\n* refactor: LoginViewController 프로퍼티 네이밍 수정","shortMessageHtmlLink":"Refactor/#24 Login ViewModel Input, output 구조 개선 (#29)"}},{"before":"58761c19c423d86c89e708e7d19e3a11d09fcf6f","after":"7d38c97791e6354a69dd9e8bcaef1bcffe4fdac7","ref":"refs/heads/develop","pushedAt":"2024-07-01T13:07:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"noeyiz","name":null,"path":"/noeyiz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/116897060?s=80&v=4"},"commit":{"message":"Feat/Scrum 129 출생 연도 및 프로필 설정 UI (#27)\n\n* feat: NicknameTextView 구현\r\n- 한/영/숫자로 10자 이내의 닉네임을 입력하는 텍스트 필드 뷰 구현\r\n- 조건을 충족하지 않을 시 상황에 맞는 에러 메시지 출력\r\n\r\n* feat: ProfileView 구현\r\n\r\n* refactor: UILabel+ setTextWithLineHeight 메서드에서 numberOfLines 설정하도록 변경\r\n\r\n* feat: EditProfileView 구현\r\n- 제네릭 UIView 타입을 사용하는 BottomSheetViewController 구현\r\n- Shared 모듈에 FlexLayout 의존성 추가\r\n- EditProfileView/ViewController 구현\r\n\r\n* design: UI 수정\r\n- BottomSheetViewController 애니메이션 시 dimmedView alpha값 변경\r\n- Dim 컬러 alpha값 수정\r\n- 피그마 디자인 여백 변경에 따른 UI 수정\r\n\r\n* refactor: 상위 모듈만 임포트하도록 변경\r\n\r\n* refactor: 매직 넘버를 ProfileCharacterType의 개수로 변경\r\n\r\n* chore: 괄호 누락 수정\r\n\r\n* design: 피그마 디자인 변경에 따른 UI 수정\r\n\r\n* feat: SelectBirthYearView 구현\r\n\r\n* refactor: 컨벤션, 불필요한 lazy var, extension, 접근 지정자 수정\r\n\r\n* remove: UserInterfaceStyle 라이트 모드 고정으로 설정하는 코드 제거\r\n\r\n* design: 프로필 버튼 고정 크기가 아닌 비율로 변경\r\n\r\n* feat: NicknameTextField -> FeelinLineInputField로 변경\r\n- 유효성에 따라 텍스트 컬러가 바뀌는 FeelinAlertLabel 추가\r\n- 기존 NicknameTextField를 공용 컴포넌트화 한 FeelinLineInputField 추가\r\n\r\n* refactor(FeelinLineInputField): 유효성 검사 여러 개 설정할 수 있도록 변경\r\n\r\n* refactor: FeelinLineInputField 수정\r\n- 텍스트필드와 구분선만 가지도록 수정\r\n\r\n* feat: ProfileView에 닉네임 유효성 검증 로직 추가\r\n\r\n* feat: 출생 연도 범위 수정\r\n- 만 14~100세로 출생 연도 범위 수정","shortMessageHtmlLink":"Feat/Scrum 129 출생 연도 및 프로필 설정 UI (#27)"}},{"before":"ec6c23dcee04417fcb2b970bdaddbe03fea5a3f4","after":"58761c19c423d86c89e708e7d19e3a11d09fcf6f","ref":"refs/heads/develop","pushedAt":"2024-06-24T13:28:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Feature/Scrum 117 아티스트 선택 UI 구현 (#26)\n\n* refactor, fix: Tuist 설정 및 빌드 오류 해결을 위한 임시 수정\r\n- Shared모듈에 flexlayout 추가(중복일 가능성 있음, 빌드 오류 해결)\r\n- MainModule에 ExampleAppSetting 추가\r\n- DomainOauth모듈의 Test에 빌드 오류 문제를 해결하기 위해 LoginRecordService 주입(Dummy 객체)\r\n- FeelinConfirmButton의 폰트 적용방식 수정(빌드 오류 해결)\r\n\r\n* add: 아티스트선택화면의 artistCell적용 여부 파악을 위해 FeatureModule의 example에 샘플 이미지 추가\r\n\r\n* feat: 아티스트 선택화면의 cell 구현\r\n- 이미지 주변의 보더라인 설정을 외부에서 적용할 수 있는 구조로 구현\r\n\r\n* feat: 공용 검색 뷰 컴포넌트 제작\r\n- figma에 명시된 padding, 폰트, 그리고 이미지를 활용하여 커스텀 검색뷰 구현\r\n\r\n* add: FeatureMain의 example 모듈에 AppDelegate, SceneDelegate 추가\r\n\r\n* feat 아티스트 모델 구현 & 추가\r\n\r\n* feat ArtistSelectView 구현 & 추가\r\n\r\n* feat 아티스트 선택 ViewController 구현 & 추가\r\n\r\n* refactor: Tuist 수정, 접근제어자 수정, 및 자잘한 수정\r\n- TokenKeys.xcconfig를 메인 앱의 additionalFiles에 추가\r\n- Artist객체 이니셜라이저 수정\r\n- ArtistSelectViewController의 diffableDatasource 로직의 중앙화(lazy var 사용)\r\n- 가독성 향상을 위한 typealist 활용\r\n- 네이밍 수정(카멜케이스 적용)\r\n- 불필요한 import제거\r\n- 몇 몇 접근제어자들을 적절한 범위로 제한","shortMessageHtmlLink":"Feature/Scrum 117 아티스트 선택 UI 구현 (#26)"}},{"before":"2e6948c45e3f40be329f458d26bf8e718a336fe5","after":"ec6c23dcee04417fcb2b970bdaddbe03fea5a3f4","ref":"refs/heads/develop","pushedAt":"2024-06-16T23:44:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"docs: issue templates 업데이트","shortMessageHtmlLink":"docs: issue templates 업데이트"}},{"before":"46ccb53b2b61287943df38e012fafc1aaf56bd0d","after":"2e6948c45e3f40be329f458d26bf8e718a336fe5","ref":"refs/heads/develop","pushedAt":"2024-06-16T23:41:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"Update issue templates","shortMessageHtmlLink":"Update issue templates"}},{"before":"7659f1d6195506b5f6360bd45cb2f70554989d28","after":"46ccb53b2b61287943df38e012fafc1aaf56bd0d","ref":"refs/heads/develop","pushedAt":"2024-06-16T23:38:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"Update issue templates","shortMessageHtmlLink":"Update issue templates"}},{"before":"06552ea6dc94394ca3813cdfc56cbf9c168f79fe","after":"7659f1d6195506b5f6360bd45cb2f70554989d28","ref":"refs/heads/develop","pushedAt":"2024-06-16T23:32:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"Update issue templates","shortMessageHtmlLink":"Update issue templates"}},{"before":"089b3d3d906d8058054e9427199a54e6e00da0db","after":"06552ea6dc94394ca3813cdfc56cbf9c168f79fe","ref":"refs/heads/develop","pushedAt":"2024-06-16T08:31:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Hotfix / 토큰키 숨김 처리 (#16)\n\n* refactor : 각 모듈의 example 앱에서 bundleIdentifier 추가\r\n- 예시앱에서 리소스를 접근 못하는 문제 & info.plist파일이 올바르게 구성되지 못하는 문제를 해결하기 위한 세팅\r\n\r\n* feat: 토큰키를 xcconfig를 활용하여 사용할 수 있는 환경 세팅\r\n- app의 info.plist에 xcconfig의 ACCESS_TOKEN_KEY & REFRESH_TOKEN_KEY 등록\r\n- Shared.xcconfig에 TokenKeys.xcconfig 포함\r\n- TokenKeys.xcconfig를 git.ignore처리\r\n- DomainOAuthInterface 내에 accessTokenKy & refreshTokenKey를 접근할 수 있는 Bundle+Extension추가\r\n그외:\r\n- 각 모듈의 test target의 config세팅을 수정하여 유닛테스트가 실행 버튼이 비활성화 되는 문제 해결\r\n\r\n* refactor: TokenKeyHolder를 통해 번들에서 각 토큰키를 활용하여 저장된 accessToken & refreshToken을 불러오도록 구조 수정\r\n- BundleError 추가\r\n- UserVerifiable프로토콜 수정\r\n - 채택받는 타입들이 tokenKeyHolder를 인스턴스 프로퍼티로 갖고있도록 설정\r\n- AuthError 수정\r\n - Equatable 채택(유닛테스트하기 위해)\r\n - unidentifiedError -> unExpectedError로 네이밍 수정\r\n\r\n* test: KakaoOAuthServiceTests 수정\r\n- MockTokenKeyHolder를 활용하여 테스트진행되도록 수정\r\n- 번들에 AccessTokenKey가 없으면 의도된 에러를 내뱉는지 테스트하는 케이스 추가","shortMessageHtmlLink":"Hotfix / 토큰키 숨김 처리 (#16)"}},{"before":"836da08dda543ae278133a039879bcd4b6c54c8a","after":"089b3d3d906d8058054e9427199a54e6e00da0db","ref":"refs/heads/develop","pushedAt":"2024-06-16T08:17:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Feature/\bScrum 77 Log in 비지니스 로직 추가 및 말풍선 UI (#15)\n\n* feat: InjectIdentifier에 객체 초기화 추가\r\n- NetworkProvider로 네이밍 변경\r\n- tokenStorage\r\n- KakaoAuthService\r\n- UserValidityService\r\n\r\n* style: UseCase로 네이밍 변경\r\n\r\n* refactor: 네이밍 수정\r\n\r\n- Usecase -> UseCase로 변경\r\n- 불필요한 개행 제거\r\n\r\n* add: .swiftLint.yml 파일 추가\r\n\r\n* add: Apple Login Service Dependency 추가\r\n\r\n- Kakao Login Service 수정\r\n\r\n* add: Settings에 sandboxing 설정 추가\r\n\r\n* refactor: Onboarding View 수정\r\n\r\n- apple, kakao Login Button Action 추가\r\n\r\n* feat: Main Tabbar로 이동 로직 추가\r\n\r\n* feat: 말풍선 뷰 구현\r\n\r\n* refactor: 네이밍 변경 및 개행 제거\r\n\r\n* feat: 최근 로그인 Storage 구현\r\n\r\n* feat: RecentLoginStorage 구현\r\n\r\n* refactor: LoginView로 네이밍 변경\r\n\r\n- 코드 통일을 위해 네이밍 변경\r\n- ViewController에서 view action을 처리하도록 변경\r\n\r\n* refactor: SplashViewController autoLogin 기능추가\r\n\r\n- 파일 위치 변경\r\n- ViewModel 추가\r\n- 메서드 네이밍 변경\r\n\r\n* feat: SplashView를 위한 로직 추가\r\n\r\n- Splash ViewModel Dependencies 추가\r\n\r\n* feat: LoginViewController Dependency 추가\r\n- Dependencies register 메서드 추가\r\n\r\n* refactor: MainViewController 화면 전환 애니메이션 제거\r\n\r\n* feat: Login ViewModel\r\n- Inputs, Outputs 구현\r\n\r\n* refactor: LoginViewController 구현\r\n- 네이밍 변경\r\n- Login view의 버튼들 접근가능하도록 수정\r\n\r\n* feat: 말풍선 뷰 로직 구현\r\n\r\n* fix: super.loadView 제거\r\n\r\n* refactor: UserVerifiable verifyUser 메서드 리턴 값 변경\r\n- OAuth Type 케이스 네이밍 변경\r\n\r\n* refactor: CoordinatorMain dependency 추가\r\n\r\n* refactor: LogIn에서 Login으로 네이밍 변경\r\n\r\n* refactor: register NetworkProvider로 메서드 통일\r\n\r\n* refactor: 메서드 네이밍 변경\r\n\r\n* refactor: 여러 개로 나눠진 Login 상태값 State로 통일\r\n\r\n* refactor: UserVerifiable에서 RecentLoginService를 가질 수 있도록 변경\r\n\r\n* refactor: LoginView Label text Color 추가\r\n\r\n* refactor: Tuist Version 업데이트\r\n- 4.2.5 -> 4.17.0\r\n\r\n* remove: .package.resolved 파일 제거\r\n\r\n* add: .gitignore 패키지 파일 추가 안되도록 설정\r\n\r\n* chore: 오타 수정 및 개행 제거","shortMessageHtmlLink":"Feature/�Scrum 77 Log in 비지니스 로직 추가 및 말풍선 UI (#15)"}},{"before":"1d56f4d170ec56496b2d048426a662b0e74b05ac","after":"836da08dda543ae278133a039879bcd4b6c54c8a","ref":"refs/heads/develop","pushedAt":"2024-06-15T07:14:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Feat/Scrum 108 사용자 정보 수집 UI 구현 (#14)\n\n* feat: lineHeight를 설정할 수 있는 UILabel Extension 추가\r\n\r\n* feat: 성별 UI 구현\r\n\r\n* feat: 출생 연도 UI 구현\r\n\r\n* refactor: CollectionView Extension ViewController로 이동\r\n\r\n* refactor: 함수 분리 및 ViewController extension 변수 정의\r\n\r\n* feat: GenderType, 개행, 삼항 연산자, 오타 수정\r\n\r\n* feat: FeelinDropDownButton 추가\r\n\r\n* feat: Reusable 프로토콜 및 extension 추가","shortMessageHtmlLink":"Feat/Scrum 108 사용자 정보 수집 UI 구현 (#14)"}},{"before":"48d1389266d4f472a7a279d23c6b0999442bce9b","after":"1d56f4d170ec56496b2d048426a662b0e74b05ac","ref":"refs/heads/develop","pushedAt":"2024-06-12T05:49:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Feat/Scrum 107 이용약관 UI 구현 (#12)\n\n* design: CheckBox 이미지 에셋 수정\n- 다크모드, 라이트모드를 별도의 에셋으로 나누지 않고 하나의 에셋으로 통합\n\n* design: 피그마에 명시된 색상 네임과 다른 컬러 네임 수정\n\n* feat: OnboardingExample 환경설정\n- SceneDelegate, AppDelegate 및 Tuist세팅을 통해서 샘플앱을 실행할 수 있는 환경 설정\n- exampleAppDefaultSettings에서 -all_load 세팅을 제거하여 duplicate symbol 문제 해결\n\n* feat: CheckBoxButton 뷰 구현 & 추가\n- selected & unselected 상태에 따라서 체크박스 색상을 변경합니다.\n- 생성시 View를 주입할 수 있고 해당 버튼 내부에 보여줄 수 있도록 레이아웃 설정이 가능합니다.\n\n* feat: UserAgreementListView 구현 & 추가\n- 전체 동의 및 세부 동의 버튼을 포함하는 ListView\n- 전체동의 버튼을 탭할 경우 화면의 백그라운드 색상 및 체크 버튼이 활성화된다.\n- 그 외 세부 버튼을 텝할 경우 체크 버튼이 활성화 된다.\n\n* feat<공용컴포넌트> FeelinConfirmButton 제작\n- 비활성화시 회색, 활성화시 active 색상으로 변경되는 버튼 구현\n- 필요시 버튼 타이틀, 그리고 활성화 상태 뿐 아니라 각 상태에 따른 색상을 외부에서 지정할 수 있도록 세팅\n\n* feat: UseAgreementViewController UI 구현\n- 약관 타이틀뷰를 상단에 표시\n- 이용약관 버튼을 모두 확인 가능\n- 시작하기 버튼은 디폴트로 비활성화 하여 화면 맨 하단에 배치\n\n* move: OnboardingView & RootViewController 파일 이동\n\n* refactor : 개행 수정, 접근제어 범위 수정, if문 삼항연산자로 대체, 어노테이션 수정\n- 불필요한 @available(*, unavailable) 제거\n- 사용되지 않지만 필요한 메서드에 @available(*, unavailable) 어노테이션 추가\n- 변수간 일정한 개행 적용\n- 삼항연산자를 활용하여 가독성 개선 및 코드 중복 최소화\n- 불필요하게 open 및 public설정이 된 객체들 접근제어 범위 수정(internal로)\n- 상속이 필요 없는 객체들에게 final 키워드 추가","shortMessageHtmlLink":"Feat/Scrum 107 이용약관 UI 구현 (#12)"}},{"before":"867405d1ed26886c51a5a64813d854cc97b55c89","after":"48d1389266d4f472a7a279d23c6b0999442bce9b","ref":"refs/heads/develop","pushedAt":"2024-06-04T14:57:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Feat/Scrum 74 애플로그인 인증 코어 로직 구현 & 인터페이스 구현 (#11)\n\n* refactor: 카카오 관련 네이밍 수정 & 인터페이스의 로직 분리\r\n- 네이밍 수정: KakaoSDKError → KakaoOAuthError\r\n- 네이빙 수정: KakaoOAuthServiceInterface -> OAuthInterface\r\n- UserVerifable 프로토콜로 Authentication관련 로직 분리\r\n\r\n* feat 애플로그인 관련 에러 모델 구현\r\n* feat: 애플 로그인 관련 코어 로직 객체 구현\r\n- AppleLoginService모델을 활용하여 애플로그인을 통해 받아온 identityToken을 서버로 전송한 뒤 받은 AccessToken & RefreshToken을 활용하여 로그인 여부를 알려주는 서비스 객체 구현\r\n\r\n* feat 자동로그인 Usecase 추가\r\n- UserValidityService를 활용하여 자동 로그인 가능 여부를 체크하는 Usecase구현\r\n\r\n* fix: tuist Target세팅 중 testAppDefaultSettings 임시 주석처리\r\n- 해당 설정이 테스트타겟에 들어가게 되면 유닛테스트 실행시 시뮬레이터에서 빌드오류가 발생합니다.\r\n- 현재는 해당 세팅은 크게 신경쓰지 않아도 되는 부분이라고 판단. 주석처리합니다\r\n\r\n* fix: rebase과정에서 누락된 KakaoSecretKeys xcconfig파일 추가\r\n* fix: KakaoSecretKeys.xcconfig파일 gitignore 재설정 & untrackfile 재설정\r\n* refactor: NetworkProviderProtocol → NetworkProviderInterface로 네이밍 수정\r\n* remove: test target setting관련 불필요한 주석 제거","shortMessageHtmlLink":"Feat/Scrum 74 애플로그인 인증 코어 로직 구현 & 인터페이스 구현 (#11)"}},{"before":"c568cdb2e3d9ebfb19c6d94632216640332b823f","after":"867405d1ed26886c51a5a64813d854cc97b55c89","ref":"refs/heads/develop","pushedAt":"2024-06-02T14:02:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Feat/Scrum75 카카오로그인 인증 코어 로직 구현, Feat/Scrum78 카카오로그인 인터페이스 작성 (#10)\n\n* refactor DependencyInjection을 별도 모듈로 분리\r\n- 불필요하게 DependencyInjection 모듈을 의존하는 부분 제거\r\n- Core쪽 코드를 사용할 수 있도록 dependency 추가\r\n\r\n* add: 카카오 소셜 로그인에 필요한 KakaoSDKCommon, KakaoSDKAuth, KakaoSDKUser 추가\r\n- 외부 package들을 AppTarget에서 ThirdPartyLib로 옮김\r\n- 카카오 로그인에 필요한 info.plist 내용 추가(LSApplicationQueriesSchemes)\r\n- package.resolved 업데이트\r\n\r\n* feat : Tuist를 활용한 QA, PROD, DEV 배포환경 세팅\r\n- Scheme를 설정하는 ProjectDeescriptoinHelper Class 구현 및 적용\r\n- PROD, DEV, QA, Sahred xcconfig 파일 추가\r\n- Tuist의 Project 모듈 생성시 xcconfig를 포함한 config 세팅 추가\r\n- 하나의 Feelin App Target을 Feelin-DEV, Feelin-QA, Feelin-PROD로 세분화 작업 및 Scheme 적용\r\n\r\n* feat: 카카오 로그인을 위한 URLScheme, URLType 설정, 그리고 네이티브 앱 키 설정\r\n- Shared.xcconfig에 카카오네이티브앱키를 호출할 수 있도록 키 설정을 하였다. 네이티브앱 키는 민감한 데이터를 누락하였고 빌드시 kakao developers로부터 앱 키를 가져와서 주입하여야 한다.\r\n\r\n* feat : 카카오 네이티브 키를 관리할 xcconfig를 분리하여 관리\r\n- 본래는 Shared.xcconfig를 앱키 없이 올린 뒤 .gitignore설정을 하려 하였으나, 그렇게 되면 Shared자체에 추후 추가될 설정들 또한 다른 개발자들에게 공유가 되지 않을 것이기에 잘못된 방향이라고 생각함.\r\n- KakaoSecretKey라는 xcconfig를 생성하여 해당 설정을 통해서만 네이티브 앱키를 관리하는 방향으로 환경설정 수정\r\n- KakaoSecretKey 파일을 올린 뒤 이후 .gitignore처리를 통해 네이티브 앱 키 유출을 방지할 예정\r\n\r\n* refactor: 카카오 developer에서 등록된 PROD, DEV, QA 앱의 각기 다른 앱키에 대응할 수 있게 수정\r\n- 각 배포 타겟 (Feelin, Feelin-DEV, Feelin-QA)마다 서로 다른 네이티브 앱 키를 사용해야 합니다. 따라서 각 타겟의 urlType의 urlSchemes에 해당 키를 제공해야 함.\r\n- Info.plist에 작성한 KAKAO_NATIVE_APP_KEY를 유지하고, 배포 타입에 따라 이 키의 값을 각기 다른 xcconfig 파일의 프로퍼티에서 읽어오도록 설정\r\n\r\n* chore: KakaoSecretKeys.xcconfig 파일을 gitignore & untrack\r\n- .gitIgnore에 경로 추가\r\n- git rm --cached 기능을 활용하여 해당 파일 추적 금지\r\n\r\n* feat: Kakao로그인 초기화 세팅\r\n- xcconfig에 저장된 카카오 네이티브 앱키를 사용하여 KakaoSDK초기화 진행\r\n- 카카오 로그인 진행 후 처리 진행하기 위한 SceneDelegate의 `handleOpenURL()`처리\r\n- Bundle에서 kakaoNativeAppKey를 불러오는 extension 메서드 추가\r\n\r\n* add 모듈 생성 및 의존성 세팅\r\n그외:\r\n- 불필요한 dependency 정리\r\n\r\n* fix: xcconfig 커스텀 설정 후 유닛테스트가 실행이 안되는 문제 해결\r\n\r\n* fix: Domain쪽 dependency오류 해결하기 위한 tuist 추가 설정\r\n- 모든 도메인 모율의 dependency에 KakaoSDK추가(없으면 에러발생 추후 수정 필요할 것)\r\n- 타겟생성시 test target같은 경우 Configuration에서 ENABLE_TESTABILITY를 true로 설정하기 위해 devSetting 적용\r\n- Shared.xcconfig에 배포타겟 별 임시 url 추가(추후 수정해야 함)\r\n- Domain과 Core 모듈간의 의존성 재설정\r\n- AppDelegate에서 현시점 불필요한 dependency 제거\r\n\r\n* refactor, feat: 로그인 API추가 및 NetworkProvider 개선\r\n- api문서에 정의된 대로 body parameter에 auth_provider를 requestbody에 주입하여 post 수행\r\n- api문서에 정의된 대로 잘못된 응답시 받는 커스텀에러를 디코딩하여 NetworkError로 변환하는 기능 추가\r\n- URLRequestInterceptor를 NetworkProvider에 추가하여 필요시 api콜 중 urlrequest를 가로채 토큰을 header에 주입할 수 있고\r\n 이를 활용하여 추후 토큰이 만료될 경우 재발급 받은 토큰을 처리할 수 있도록 기능 추가\r\n\r\n* test: NetworkProvider & Interceptor 그리고 APIFailResponse 에 대한 유닛테스트 추가\r\n\r\n* test: 누락된 Combine+XCTest 파일 추가\r\n\r\n- Tuist를 활용하여 Util모듈에서 XCTest를 선택적으로 의존할 수 있게 추가(Util에 XCTest를 import할 수 있게 하는 설정)\r\n- combine을 확장하여 combine 사용시 테스트 길이를 간소화해주는 extension입니다.\r\n\r\n* feat: KakaoOAuthService & KakaoLoginUsecase 추가\r\n\r\n* test: KakaoOAuthService & JWTDecoder 유닛테스트 추가\r\n\r\n* move: JWT관련 모델들을 네트워크 인터페이스 모듈로 이관\r\n- 추가될 interceptor에서도 JWT 파싱처리를 할 것이라 예상. 네트워크 모듈의 Token Interceptor & Service 모듈에서 모두 접근 가능하도록 파일 이동\r\n\r\n* feat: NetworkSession & TokenInterceptor 기능 추가\r\n\r\n* refactor: endpoint에 header추가 & 로그인 관련 로직 수정\r\n- 카카오 로그인을 통해 전달받은 accessToken을 볍도의 interceptor없이 주입할 수 있도록 api 및 구조 수정\r\n\r\n* refactor: 서버의 커스텀 에러메세지를 NetworkError로 변환하는 코드 추가\r\n\r\n* tess: NetworkSession 그리고 분리된 Interceptor구조에 대응할 수 있게 테스트 &테스팅 기능 수정\r\n\r\n* feat: 토큰 검증 및 재발급 api 초기 구현\r\n\r\n* add, test: 변경된 토큰 만료 & 재발급 로직에맞게 관련 테스트코드 수정\r\n\r\n* test: UserValidity관련 통합테스트를 간단하게 구현\r\n\r\n* chore: Tuist에서 tab기반 indentation -> space기반 indentation으로 수정\r\n\r\n* fix: 누락된 DomainTests 타겟 추가\r\n\r\n* fix: Tuist 모듈정리\r\n- DependencyInjection 의존성을 Feature에 추가\r\n- FlexLayout dependency를 Coordinator, Feature, 그리고 App에 추가\r\n - App 제외 빌드 오류가 발생하는 상황\r\n- allLoad세팅 추가(적용x)\r\n - Flexlayout을 모든 모듈에 추가해야하는 문제를 해결하기 위해 .allLoad세팅을 Target세팅에 추가하려 하였으나 duplicate symbol 문제 때문에 보류","shortMessageHtmlLink":"Feat/Scrum75 카카오로그인 인증 코어 로직 구현, Feat/Scrum78 카카오로그인 인터페이스 작성 (#10)"}},{"before":"be9ea141ca695fc875114bc9b40f0dcad1702ff9","after":"c568cdb2e3d9ebfb19c6d94632216640332b823f","ref":"refs/heads/develop","pushedAt":"2024-06-01T04:30:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"Feat/Scrum 76 Login UI 구현 (#9)\n\n* style: Colors 빠진 부분 추가\r\n\r\n- Color Dark, Light, Any Appearance 중 빠진 부분들 추가\r\n\r\n* add: Logo Belt 이미지 추가\r\n\r\n* refactor: Domain 모듈 path 오타 수정\r\n\r\n* remove: 불필요한 코드 제거 및 LaunchScreen 제거\r\n\r\n* refactor:\r\n\r\n- ThirdPartyLib dynamic Framework로 변경\r\n- 개행 추가\r\n- interface 위치변경\r\n- factory 마다 settings 추가 (FlexLayout을 위한 셋팅)\r\n\r\n* add: 로고 벨트 이미지 추가\r\n\r\n* chore: 불필요한 코드 및 개행 제거\r\n\r\n* feat: SplashView 구현\r\n\r\n* refactor: AppCoordinator Flow 재설정\r\n\r\n- Onboarding이 완료될 시점에서 TabbarCoordinator 실행\r\n\r\n* refactor: 프로젝트 Dependencies 재설정\r\n\r\n- 문제가 되는 FlexLayout Coordinator, Feature 모듈에 dependency로 추가\r\n- Coordinator > Feature > Domain > Core > Shared로 의존성 부여\r\n- FlexLayout 2.0.7로 업데이트\r\n\r\n* chore: 불필요한 코드 제거\r\n\r\n* add: Color,Image 추가\r\n\r\n- kakao, apple login icon image\r\n- kakao login button background color\r\n\r\n* feat: Login View 구현\r\n\r\n* add: Coordinator flow 추가\r\n\r\n- start\r\n- didfinish\r\n\r\n* refactor: Shared ThirdPartyModule Static Library로 변경\r\n\r\n* refactor: Color 네이밍 변경","shortMessageHtmlLink":"Feat/Scrum 76 Login UI 구현 (#9)"}},{"before":"6ea86acfc9fd72f864bc4f2b3c8a79c18fbf77bc","after":"be9ea141ca695fc875114bc9b40f0dcad1702ff9","ref":"refs/heads/develop","pushedAt":"2024-05-19T07:05:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Feat/scrum 93 토큰 & 키체인 기능 구현 (#8)\n\n* feat(Keychain): 키체인 객체 & 에러타입 구현\n\n* fix: tuist에서 누락된 LocalStorage dependency 추가\n\n* feat(TokenStorage) Token & TokenStorage 객체 구현\n\n* fix: 토큰을 외부에서 접근할 수 있도록 public으로 접근수준 변경\n\n* fix, refactor 접근수준 변경, 로직 수정, 인터페이스 경로 변경\n\n- TokenStorageInterface를 Implementation 에서 Interface로 이동\n- example앱 및 외부모듈에서 TokenStorage & Keychain에 접근할 수 있도록 public으로 전환\n- Keychain 및 TokenStorage의 read, delete 기능 로직 개선\n\n* fix: DIContainer에서 불필요한 import 제거\n\n* test: 토큰 저장 로직 테스트용 example 앱 구현\n\n* style: indentation을 4Tabs에서 4Space로 수정\n\n* chore: tuist의 모듈 세팅 중 LocalStorage name 수정","shortMessageHtmlLink":"Feat/scrum 93 토큰 & 키체인 기능 구현 (#8)"}},{"before":"0bc4425d6cc3b9dd3389f336fb22e163b36327ca","after":"6ea86acfc9fd72f864bc4f2b3c8a79c18fbf77bc","ref":"refs/heads/develop","pushedAt":"2024-05-17T04:03:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"Refactor / Scrum 92 온보딩에 필요한 Font, Color, Image 추가 (#7)\n\n* refactor: Any Appearance 값 추가\r\n\r\n* feat: SharedDesignSystem 모듈 내의 Colors 타입 추가\r\n\r\n* chore: 불필요한 export 제거\r\n\r\n* add: EncodeSansFont 추가\r\n\r\n* add: Onboarding에 필요한 Image Asset, Images 객체 추가\r\n\r\n- Images 객체는 Tuist에서 Asset의 이미지를 불러오기 위한 객체가 너무 길어서 만듬\r\n - 추가적으로 withRenderingMode를 정해줘야 함\r\n\r\n* style: 네이밍 수정","shortMessageHtmlLink":"Refactor / Scrum 92 온보딩에 필요한 Font, Color, Image 추가 (#7)"}},{"before":"0bc4425d6cc3b9dd3389f336fb22e163b36327ca","after":null,"ref":"refs/heads/feat/SCRUM-76","pushedAt":"2024-05-15T00:40:25.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"}},{"before":null,"after":"0bc4425d6cc3b9dd3389f336fb22e163b36327ca","ref":"refs/heads/feat/SCRUM-76","pushedAt":"2024-05-15T00:37:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jira[bot]","name":null,"path":"/apps/jira","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/14320?s=80&v=4"},"commit":{"message":"Feat, Refactor / Scrum 69 앱 실행 플로우 구현 (#6)\n\n* add: Module 추가\r\n\r\n* remove: 불필요한 설정 제거\r\n\r\n* add: Feature Main모듈 추가\r\n\r\n* add: Coordinator App 모듈 추가\r\n\r\n* feat: Coordinator, CoordinatorDelegate 프로포톨 구현\r\n\r\n* add: Coordinator Onboarding 모듈 추가\r\n\r\n* feat: Onboarding Coordinator 기능 구현\r\n\r\n* add: Coordinator TabBar 모듈 추가\r\n\r\n* feat: TabBar Coordinator 기능 구현\r\n\r\n* feat: Main Coordinator 모듈 추가 및 기능 구현\r\n\r\n* feat: AppCoordinator 구현 및 SceneDelegate 연동\r\n\r\n* refactor: 불필요한 Dependency 제거\r\n\r\n* fix: Onboarding, TabBar Coordinator dependencies 추가\r\n\r\n* refactor: TabBar Type 원시값 제거 및 수정","shortMessageHtmlLink":"Feat, Refactor / Scrum 69 앱 실행 플로우 구현 (#6)"}},{"before":"7ff62e7116931fa9dde9bc7ab5208d52ec22128f","after":"0bc4425d6cc3b9dd3389f336fb22e163b36327ca","ref":"refs/heads/develop","pushedAt":"2024-05-11T15:28:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Feat, Refactor / Scrum 69 앱 실행 플로우 구현 (#6)\n\n* add: Module 추가\r\n\r\n* remove: 불필요한 설정 제거\r\n\r\n* add: Feature Main모듈 추가\r\n\r\n* add: Coordinator App 모듈 추가\r\n\r\n* feat: Coordinator, CoordinatorDelegate 프로포톨 구현\r\n\r\n* add: Coordinator Onboarding 모듈 추가\r\n\r\n* feat: Onboarding Coordinator 기능 구현\r\n\r\n* add: Coordinator TabBar 모듈 추가\r\n\r\n* feat: TabBar Coordinator 기능 구현\r\n\r\n* feat: Main Coordinator 모듈 추가 및 기능 구현\r\n\r\n* feat: AppCoordinator 구현 및 SceneDelegate 연동\r\n\r\n* refactor: 불필요한 Dependency 제거\r\n\r\n* fix: Onboarding, TabBar Coordinator dependencies 추가\r\n\r\n* refactor: TabBar Type 원시값 제거 및 수정","shortMessageHtmlLink":"Feat, Refactor / Scrum 69 앱 실행 플로우 구현 (#6)"}},{"before":"9dc6bc0340b22a328e0d2206c9105a8ce46f4920","after":"7ff62e7116931fa9dde9bc7ab5208d52ec22128f","ref":"refs/heads/develop","pushedAt":"2024-04-24T14:02:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Feat/Scrum 55 DIContainer, Domain 모듈 추가 (#5)\n\n* add: Dependency Injection모듈 추가\r\n\r\n* add: DIContainer를 위한 Protocol\r\n\r\n* add: DIContainer 연결 실패를 위한 Error 케이스\r\n\r\n* add: DIContainer를 위한 Protocol\r\n\r\n- DIContainer 등록, 제거\r\n\r\n* feat: type, key 값을 통해 특정 객체 생성\r\n\r\n* feat: 메서드 구현\r\n\r\n* add: 필요한 프로퍼티, 메서드 생성\r\n\r\n* feat: Property Wrapper 구현\r\n\r\n* feat: Property Wrapper 구현\r\n\r\n* move: 파일 위치 이동\r\n\r\n* chore: 이름 변경\r\n\r\n* feat: Domain 모듈 추가\r\n\r\n- Sample 하위 Module PostTextUseCase 추가\r\n\r\n* refactor: 네이밍 변경\r\n\r\n* chore: warning 제거\r\n\r\n* refactor: Interface 제거 후 implement로 이동\r\n\r\n* refactor: Network Module Interface에 의존성 부여\r\n\r\n* refactor: 불필요한 interface 제거\r\n\r\n* remove: 제거 완료","shortMessageHtmlLink":"Feat/Scrum 55 DIContainer, Domain 모듈 추가 (#5)"}},{"before":"f1d1394755fc4a0f3905cfec88624ab6f9472639","after":"9dc6bc0340b22a328e0d2206c9105a8ce46f4920","ref":"refs/heads/develop","pushedAt":"2024-04-19T13:07:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"Feat/Scrum 47 ios 디자인 시스템 적용 (#4)\n\n* add: DesignSystemColorSet추가\r\n\r\n추가된 색상 목록:\r\n- Active\r\n- AlertSuccess\r\n- AlertWarning\r\n- Background\r\n- Border\r\n- Dim\r\n- Disabled\r\n- Gray01\r\n- Gray02\r\n- Gray03\r\n- Gray04\r\n- Gray05\r\n- Gray06\r\n- Gray07\r\n- Gray08\r\n- Gray09\r\n- InputField\r\n- Modal\r\n- Point\r\n- PressedGray\r\n- Primary\r\n- Secondary\r\n- SelectedBrand\r\n- Tertiary\r\n- TextFixed\r\n\r\n* chore: SwiftLint violation을 제거하기 위한 colon 사이 space추가","shortMessageHtmlLink":"Feat/Scrum 47 ios 디자인 시스템 적용 (#4)"}},{"before":"41ac216b27ef5fed8aeecaacdcf7644c33acf04a","after":null,"ref":"refs/heads/SCRUM-42-Network-Module-Implementation","pushedAt":"2024-04-16T15:05:32.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"}},{"before":"41ac216b27ef5fed8aeecaacdcf7644c33acf04a","after":"f1d1394755fc4a0f3905cfec88624ab6f9472639","ref":"refs/heads/develop","pushedAt":"2024-04-11T11:50:45.000Z","pushType":"pr_merge","commitsCount":44,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Merge pull request #3 from derrickkim0109/feat/SCRUM-42-Network-Module-Implementation","shortMessageHtmlLink":"Merge pull request #3 from derrickkim0109/feat/SCRUM-42-Network-Modul…"}},{"before":null,"after":"41ac216b27ef5fed8aeecaacdcf7644c33acf04a","ref":"refs/heads/SCRUM-42-Network-Module-Implementation","pushedAt":"2024-04-03T05:09:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jira[bot]","name":null,"path":"/apps/jira","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/14320?s=80&v=4"},"commit":{"message":"Merge pull request #2 from derrickkim0109/develop\n\n[Feat/#1] 개발환경 셋업 및 컨벤션 적용","shortMessageHtmlLink":"Merge pull request #2 from derrickkim0109/develop"}},{"before":"8d3f272be04c65d904489380e9facde515dea694","after":"41ac216b27ef5fed8aeecaacdcf7644c33acf04a","ref":"refs/heads/develop","pushedAt":"2024-04-01T05:15:44.000Z","pushType":"pr_merge","commitsCount":26,"pusher":{"login":"inwoodev","name":"Inwoo Hwang","path":"/inwoodev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/69072471?s=80&v=4"},"commit":{"message":"Merge pull request #2 from derrickkim0109/develop\n\n[Feat/#1] 개발환경 셋업 및 컨벤션 적용","shortMessageHtmlLink":"Merge pull request #2 from derrickkim0109/develop"}},{"before":null,"after":"8d3f272be04c65d904489380e9facde515dea694","ref":"refs/heads/develop","pushedAt":"2024-02-20T02:17:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"Initial commit","shortMessageHtmlLink":"Initial commit"}},{"before":"3fffd8290e25a14a4a1a6b34602ed746e048aa22","after":null,"ref":"refs/heads/develop","pushedAt":"2024-02-20T02:16:31.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"}},{"before":"7c545ca9cce13587158bdd3450c69a163b814dd8","after":"3fffd8290e25a14a4a1a6b34602ed746e048aa22","ref":"refs/heads/develop","pushedAt":"2024-02-19T11:38:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"refactor: Generate Module 네이밍 변경","shortMessageHtmlLink":"refactor: Generate Module 네이밍 변경"}},{"before":null,"after":"7c545ca9cce13587158bdd3450c69a163b814dd8","ref":"refs/heads/develop","pushedAt":"2024-02-19T07:41:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"feat: make 명령어 추가\n\n- GenerateModule 추가","shortMessageHtmlLink":"feat: make 명령어 추가"}},{"before":null,"after":"8d3f272be04c65d904489380e9facde515dea694","ref":"refs/heads/main","pushedAt":"2024-02-16T04:53:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"derrickkim0109","name":"Derrick Kim","path":"/derrickkim0109","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59466342?s=80&v=4"},"commit":{"message":"Initial commit","shortMessageHtmlLink":"Initial commit"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEdwTFYgA","startCursor":null,"endCursor":null}},"title":"Activity · project-lyrics/app-iOS"}