Skip to content

설정 화면 구현#128

Merged
moondev03 merged 15 commits intodevelopfrom
feat/#117-설정-화면-구현
May 7, 2026

Hidden character warning

The head ref may contain hidden characters: "feat/#117-\uc124\uc815-\ud654\uba74-\uad6c\ud604"
Merged

설정 화면 구현#128
moondev03 merged 15 commits intodevelopfrom
feat/#117-설정-화면-구현

Conversation

@moondev03
Copy link
Copy Markdown
Member

@moondev03 moondev03 commented May 6, 2026

📌 작업 내용

  • feature:setting 모듈을 추가하고 마이 화면에서 설정 화면으로 이동할 수 있도록 네비게이션을 연동했습니다.
  • 설정 화면에서 사용자 정보 조회, 로그아웃 다이얼로그, 로그아웃 성공/실패 스낵바 처리를 구현했습니다.
  • 회원 탈퇴 화면을 2단계(안내 확인 / 탈퇴 사유 선택)로 구성하고, 탈퇴 확인 다이얼로그 및 탈퇴 성공/실패 피드백을 추가했습니다.
  • 이용약관/개인정보처리방침 상세 화면으로 이동할 수 있도록 약관 네비게이션 구조를 개선했습니다.
  • 설정/회원 탈퇴 화면 구현에 맞춰 SnackbarHost, PrezelDialog, PrezelButtonArea, noRippleClickable 등 공통 UI 요소를 보완했습니다.
  • 탈퇴 사유 매핑 및 인증/유저 관련 데이터 흐름을 정리하고, setting 모듈의 불필요한 의존성을 제거했습니다.

🧩 관련 이슈


📸 스크린샷

Screen_recording_20260507_020048.mp4

📢 논의하고 싶은 내용

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 설정 화면 추가: 사용자 프로필 정보 확인 및 약관·개인정보처리방침 접근 가능
    • 계정 삭제 기능 추가: 단계별 프로세스로 삭제 사유 선택 및 확인 가능
    • 로그아웃 기능 추가
  • 개선사항

    • 스낵바 UI 간소화: 액션 버튼 제거
    • 다이얼로그 설명 필드 선택사항화
    • 버튼 컴포넌트 구조 개선
    • 약관 내 링크 상세 페이지 네비게이션 추가

moondev03 added 15 commits May 6, 2026 01:45
* **refactor: `PrezelDialog`의 설명(description) 매개변수 Nullable 처리**
    * `description` 타입을 `String`에서 `String?`로 변경하고 기본값을 `null`로 지정하여, 설명 문구가 없는 다이얼로그도 구성할 수 있도록 개선했습니다.
    * `DialogContent` 내부에서 `description`이 존재할 때만 `Text` 컴포넌트가 렌더링되도록 로직을 수정했습니다.
* **refactor: `PrezelButtonArea` 인터페이스 및 내부 로직 변경**
    * 기존의 `ButtonAreaScope`를 통한 DSL 방식의 버튼 배치 로직을 제거했습니다.
    * 버튼 구성을 명시적인 `mainButton` 및 `subButton` Composable 람다 매개변수 방식으로 변경하여 제어권을 강화했습니다.
    * `DefaultButtonAreaScope` 등 내부 유효성 검사 로직을 제거하여 컴포넌트 구조를 단순화했습니다.

* **refactor: 각 Feature 모듈 내 버튼 영역 구현부 업데이트**
    * `TermsScreen`, `ProfileScreen`, `LoginScreen`, `PrezelDatePicker` 등 프로젝트 전반에서 변경된 `PrezelButtonArea` 형식을 적용했습니다.
    * 기존의 `MainButton`, `SubButton`, `CustomButton` 호출 방식을 `PrezelButton` 직접 주입 방식으로 전환했습니다.
    * 버튼 생성 시 `ButtonType.FILLED`, `ButtonHierarchy.PRIMARY` 등 명시적인 스타일 설정을 적용하여 디자인 시스템 일관성을 높였습니다.

* **style: 불필요한 지역 변수 및 리소스 참조 정리**
    * `ProfileScreen` 및 `PrezelDatePicker` 등에서 버튼 라벨을 위해 사용하던 불필요한 지역 변수를 제거하고 `stringResource`를 직접 사용하도록 수정했습니다.
* **feat: `Modifier.noRippleClickable` 확장 함수 추가**
    * 클릭 시 리플(Ripple) 효과가 발생하지 않는 `noRippleClickable` 유틸리티를 `core.ui.util` 패키지에 추가했습니다.
    * `indication = null`과 `MutableInteractionSource`를 사용하여 시각적 피드백 없이 클릭 이벤트만 처리할 수 있도록 구현했습니다.
* **refactor: `TermsNavKey` 구조 개선 및 상세 화면 경로 추가**
    * `TermsNavKey`를 `data object`에서 `sealed interface`로 변경하고, 약관 목록(`List`)과 상세 화면(`Detail`)으로 구분했습니다.
    * 상세 화면 이동 시 약관 타입을 전달하기 위한 `TermsDocumentType` Enum을 정의했습니다.

* **refactor: 내비게이션 엔트리 구성 및 상세 모달 분리**
    * `TermsEntryBuilder`에서 `TermsNavKey.Detail`에 대한 엔트리를 추가하여 `TermsDetailModal`을 독립적인 내비게이션 목적지로 처리하도록 변경했습니다.
    * `TermsDocumentType`에 따라 `BuildConfig`에 정의된 URL을 매핑하는 로직을 추가했습니다.

* **refactor: `TermsScreen` 내 상세 표시 로직 제거**
    * `TermsScreen` 내부에서 `activeDetailUrl` 상태로 관리하던 모달 표시 로직을 제거했습니다.
    * 상세 화면 이동을 위한 콜백(`navigateToTermsOfServiceDetail`, `navigateToPrivacyPolicyDetail`)을 추가하여 내비게이션 처리를 위임했습니다.

* **fix: 외부 모듈의 약관 화면 참조 수정**
    * `login` 및 `splash` 기능 모듈에서 기존 `TermsNavKey` 참조를 `TermsNavKey.List`로 업데이트했습니다.
* **feat: Setting feature 모듈(`api`, `impl`) 추가**
    * 설정 기능을 위한 `:feature:setting:api` 및 `:feature:setting:impl` 모듈을 신규 생성하고 프로젝트 구성(`settings.gradle.kts`)에 추가했습니다.
    * `app` 모듈의 의존성에 설정 관련 모듈을 포함했습니다.
    * `feature:setting:impl` 모듈에 `coreAuth`, `coreDomain`, `coreModel` 및 관련 feature api 의존성을 설정했습니다.

* **feat: 설정 관련 Navigation Key 정의**
    * 설정 메인 화면 이동을 위한 `SettingNavKey`를 추가했습니다.
    * 회원 탈퇴 화면 이동을 위한 `DeleteAccountNavKey`를 추가했습니다.

* **feat: My feature 모듈 내 설정 화면 이동 연결**
    * `MyEntryBuilder`에서 주석 처리되어 있던 `navigateToSetting` 로직을 `SettingNavKey`를 사용하여 실제 네비게이션이 동작하도록 구현했습니다.
    * `feature:my:impl` 모듈에서 `SettingNavKey` 참조를 위해 `feature:setting:api` 의존성을 추가했습니다.
* **refactor: `MyTopAppBar`의 아이콘 버튼 구현 방식 변경**
    * 디자인 시스템의 커스텀 컴포넌트인 `PrezelIconButton` 대신 Compose Material 3의 표준 `IconButton` 및 `Icon`을 사용하도록 수정했습니다.
    * `ButtonType.GHOST`, `ButtonHierarchy.SECONDARY` 등 기존의 커스텀 속성 설정을 제거하고 표준 접근 방식으로 단순화했습니다.
    * 불필요해진 디자인 시스템 버튼 관련 import 문을 정리했습니다.
* **feat: 설정(Setting) 화면 및 기능 구현**
    * 사용자 정보(닉네임, 이메일, 프로필 이미지) 조회 및 표시 기능을 구현했습니다.
    * 로그아웃 기능을 구현하고 확인 다이얼로그를 추가했습니다.
    * 이용약관 및 개인정보 처리방침 화면으로의 네비게이션 경로를 연결했습니다.

* **feat: 회원 탈퇴(Delete Account) 프로세스 구현**
    * 유의사항 확인(`NOTICE`)과 탈퇴 사유 선택(`REASON`)으로 구성된 2단계 탈퇴 플로우를 구현했습니다.
    * `WithdrawUseCase`를 연동하여 사유별 탈퇴 처리 로직을 구현했습니다.
    * 기타 사유 선택 시 직접 입력할 수 있는 텍스트 필드를 제공합니다.
    * 탈퇴 전 최종 확인을 위한 다이얼로그를 추가했습니다.

* **feat: MVI 기반 아키텍처 및 네비게이션 설정**
    * `SettingViewModel` 및 `DeleteAccountViewModel`을 추가하고 `UiState`, `UiIntent`, `UiEffect`를 정의했습니다.
    * `SettingEntryBuilder`를 통해 `SettingNavKey`와 `DeleteAccountNavKey`에 대한 네비게이션 그래프를 구성했습니다.
    * Hilt를 사용하여 UseCase 및 ViewModel 의존성을 주입했습니다.

* **style: UI 컴포넌트 및 리소스 정의**
    * 설정 및 탈퇴 화면에서 공통으로 사용하는 `TopAppBar`, `ActionSection`, `BodySection` 등 커스텀 컴포넌트를 구현했습니다.
    * 기능 구현에 필요한 다국어 문자열 리소스를 `strings.xml`에 추가했습니다.
* **refactor: 회원 탈퇴 화면 구성 요소 정리 및 통합**
    * `DeleteAccountContentSection.kt` 파일을 삭제하고, 해당 로직을 `DeleteAccountScreen.kt` 내의 `DeleteAccountContent` 프라이빗 컴포저블로 통합하여 구조를 단순화했습니다.
    * `DeleteAccountActionSection`, `DeleteAccountNoticeStep`, `DeleteAccountReasonStep` 등 여러 컴포넌트 파일에 분산되어 있던 중복 Preview 코드를 삭제했습니다.

* **refactor: `DeleteAccountUiState` 모델 개선**
    * `isNextEnabled`, `isWithdrawEnabled`, `isPrimaryActionEnabled` 프로퍼티를 커스텀 게터(`get()`) 방식에서 일반 프로퍼티(`val`) 초기화 방식으로 변경했습니다.
    * 사용하지 않는 `isOtherReasonSelected` 프로퍼티를 제거했습니다.

* **refactor: 설정(Setting) UI 컴포넌트 및 코드 정체성 개선**
    * `SettingBodySection.kt` 내의 `AccountSectionPreview`, `PolicySectionPreview` 등을 삭제하고 `SettingBodySectionPreview` 하나로 통합하여 관리하도록 수정했습니다.
    * `Alignment` 관련 불필요한 전체 패키지 경로 참조를 import 문으로 대체했습니다.

* **style: 코드 가독성 및 import 최적화**
    * `DeleteAccountViewModel`에서 `DeleteAccountStep` 참조 시 사용된 불필요한 전체 패키지 경로를 정리했습니다.
    * `DeleteAccountScreen` 내 레이아웃 배치를 위해 `fillMaxWidth` 및 `weight` 수식어를 조정했습니다.
* **refactor: 파편화된 스트링 리소스를 태그 포함 단일 스트링으로 통합**
    * `strings.xml` 내 여러 개로 쪼개져 있던 안내 문구들을 `<highlight>`, `<bold>` 등 커스텀 태그를 포함한 하나의 스트링 리소스로 병합했습니다.
    * 줄바꿈(`\n`) 및 태그를 활용하여 번역 및 문구 수정 시의 유연성을 높였습니다.

* **feat: `AnnotatedString` 내 커스텀 태그 해석 로직 구현**
    * `<highlight>`, `<bold>` 태그를 분석하여 각각 `feedbackBadRegular` 색상 및 `body2Bold` 스타일을 적용하는 `appendTaggedText` 함수를 추가했습니다.
    * `TagState`를 통해 태그 중첩(Bold + Highlight) 및 유효성 검사를 처리하도록 개선했습니다.

* **refactor: `DeleteAccountNoticeStep` UI 구조 및 컴포넌트 리팩터링**
    * 기존에 코드로 조합하던 `AnnotatedString` 생성 로직을 `appendTaggedText`를 사용하는 방식으로 단순화했습니다.
    * `DeleteAccountNoticeHeader`, `DeletionAgreement`, `DeleteAccountNoticeDetailBox` 등 하위 컴포넌트를 분리하여 가독성을 높였습니다.
    * `Arrangement.spacedBy` 대신 `Spacer`를 사용하여 컴포넌트 간 간격 조절 방식을 명확하게 수정했습니다.
    * `PrezelCheckbox`의 터치 영역 및 간격 설정을 `Spacer`와 `PaddingValues`를 활용하도록 조정했습니다.
* **refactor: `WithdrawReason` 카테고리 매핑 방식 변경 및 코드 정리**
    * 기존 reflection과 `toSnakeCase()`를 사용하여 클래스명을 변환하던 방식을 명시적인 `toReasonCategory()` 매핑 함수로 변경하여 로직의 안정성을 높였습니다.
    * 더 이상 사용되지 않는 `String.toSnakeCase()` 확장 함수를 삭제했습니다.

* **feat: 유저 정보 조회 실패 관련 스트링 리소스 추가 및 적용**
    * `SettingScreen`에서 유저 정보 조회 실패 시 표시할 구체적인 에러 메시지(`feature_setting_impl_fetch_user_info_failed`)를 추가했습니다.
    * 기존에 유저 정보 조회 실패 시 잘못 참조하고 있던 공통 타이틀 리소스를 새로 추가된 스트링 리소스로 수정했습니다.
* **refactor: `showPrezelSnackbar` 매개변수 및 위치 계산 방식 변경**
    * 기존의 구체적인 수치(`offsetY: Dp`)를 직접 받던 매개변수를 `useRaisedPosition: Boolean`으로 변경하여 인터페이스를 단순화했습니다.
    * `useRaisedPosition` 값에 따라 스낵바 오프셋을 기본 위치(`0.dp`) 또는 위로 플로팅된 위치(`-98.dp`)로 자동 결정하도록 로직을 수정했습니다.
* **feat: 로그아웃 및 회원 탈퇴 성공 시 스낵바 알림 추가**
    * 로그아웃 처리가 완료되어 스플래시 화면으로 이동할 때 "로그아웃되었어요." 메시지를 출력하도록 수정했습니다.
    * 회원 탈퇴 처리가 완료되어 스플래시 화면으로 이동할 때 "회원탈퇴가 완료되었어요." 메시지를 출력하도록 수정했습니다.
    * 이에 필요한 문자열 리소스(`feature_setting_impl_logout_success`, `feature_setting_impl_delete_account_withdraw_success`)를 추가했습니다.

* **refactor: UI 메시지 리소스 매핑 로직 개선**
    * `SettingScreen` 및 `DeleteAccountScreen`에서 `UiMessage`를 리소스 ID로 변환하는 로직을 `toMessageRes()` 확장 함수로 추출하여 `LaunchedEffect` 내부의 가독성을 높였습니다.
* **cleanup: `coreAuth` 의존성 삭제**
    * `setting` 기능 구현 모듈(`feature:setting:impl`)의 `build.gradle.kts`에서 사용하지 않는 `coreAuth` 모듈 의존성을 제거했습니다.
* **refactor: `DoubleBackToExitHandler` 내 스낵바 위치 조정**
    * 앱 종료 확인을 위한 스낵바 호출 시 `useRaisedPosition` 파라미터를 `false`로 설정하여 UI 표시 위치를 조정했습니다.
@moondev03 moondev03 self-assigned this May 6, 2026
@moondev03 moondev03 requested a review from HamBeomJoon as a code owner May 6, 2026 17:06
@moondev03 moondev03 added the ✨ feat 새로운 기능 추가 또는 기존 기능 확장 label May 6, 2026
@moondev03 moondev03 linked an issue May 6, 2026 that may be closed by this pull request
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 6, 2026

Caution

Review failed

Failed to post review comments

📝 Walkthrough

Walkthrough

설정 기능을 새로 구현하며, 계정 탈퇴 플로우를 추가하고, 디자인 시스템 컴포넌트(SnackbarHost, PrezelButtonArea, PrezelDialog)를 리팩토링하고, WithdrawReason 모델 및 TermsNavKey 네비게이션을 업데이트합니다.

Changes

Setting 기능 구현 및 디자인 시스템 통합

Layer / File(s) Summary
Model & Data Shape
Prezel/core/model/auth/WithdrawReason.kt, Prezel/core/network/model/auth/WithdrawRequest.kt, Prezel/feature/setting/impl/delete/model/*, Prezel/feature/setting/impl/setting/contract/*
WithdrawReason이 TooComplex, InaccurateAnalysis, ManyErrors, Etc로 재정의되고, WithdrawRequest에서 reasonText가 nullable로 변경됨. DeleteAccountStep, DeleteAccountReasonOption, DeleteAccountUiState, SettingUiState 추가됨.
Navigation API
Prezel/feature/setting/api/src/main/java/com/team/prezel/feature/setting/api/*, Prezel/feature/terms/api/src/main/java/com/team/prezel/feature/terms/api/TermsNavKey.kt
SettingNavKey, DeleteAccountNavKey 추가됨. TermsNavKey가 sealed interface로 재구성되어 List와 Detail 변형 지원. TermsDocumentType 추가됨.
Design System Foundation
Prezel/core/designsystem/component/feedback/snackbar/SnackbarHost.kt, Prezel/core/designsystem/component/actions/area/PrezelButtonArea.kt, Prezel/core/designsystem/component/feedback/dialog/PrezelDialog.kt, Prezel/core/ui/util/NoRippleClickable.kt
SnackbarHost에 useRaisedPosition 파라미터 추가. PrezelButtonArea가 content lambda에서 mainButton/subButton 파라미터로 변경됨. PrezelDialog의 description이 nullable로 재정렬됨. noRippleClickable 유틸 추가됨.
Auth Flow Integration
Prezel/core/data/repository/AuthRepositoryImpl.kt, Prezel/core/network/datasource/AuthRemoteDataSource.kt, Prezel/core/network/datasource/AuthRemoteDataSourceImpl.kt
WithdrawReason의 새 구조에 맞게 withdraw 함수가 toReasonCategory() 매핑과 ETC 시에만 reasonText 포함하도록 업데이트됨.
ViewModel & Business Logic
Prezel/feature/setting/impl/setting/SettingViewModel.kt, Prezel/feature/setting/impl/delete/DeleteAccountViewModel.kt
SettingViewModel은 사용자 정보 조회 및 로그아웃 처리. DeleteAccountViewModel은 탈퇴 이유 선택, 확인 다이얼로그, 탈퇴 실행 등 전체 플로우 관리.
UI Components & Screens
Prezel/feature/setting/impl/setting/SettingScreen.kt, Prezel/feature/setting/impl/delete/DeleteAccountScreen.kt, Prezel/feature/setting/impl/setting/component/*, Prezel/feature/setting/impl/delete/component/*
SettingScreen 및 DeleteAccountScreen 메인 화면. SettingBodySection, SettingActionSection, SettingTopAppBar, LogoutDialog 등 설정 컴포넌트. DeleteAccountNoticeStep, DeleteAccountReasonStep, DeleteAccountActionSection, DeleteAccountConfirmDialog, DeleteAccountTopAppBar 등 탈퇴 플로우 컴포넌트.
UI Contracts
Prezel/feature/setting/impl/setting/contract/*, Prezel/feature/setting/impl/delete/contract/*, Prezel/feature/setting/impl/setting/model/SettingUiMessage.kt, Prezel/feature/setting/impl/delete/model/DeleteAccountUiMessage.kt
SettingUiIntent(FetchData, ClickLogout), SettingUiEffect(NavigateToSplash, ShowMessage), DeleteAccountUiIntent(7가지 액션), DeleteAccountUiEffect 등 UI 계약 정의.
Navigation & Module Integration
Prezel/feature/setting/impl/navigation/SettingEntryBuilder.kt, Prezel/feature/my/impl/navigation/MyEntryBuilder.kt, Prezel/feature/login/impl/navigation/LoginEntryBuilder.kt, Prezel/feature/splash/impl/navigation/SplashEntryBuilder.kt, Prezel/feature/terms/impl/navigation/TermsEntryBuilder.kt, Prezel/settings.gradle.kts
SettingEntryBuilder에서 Setting 및 DeleteAccount 네비게이션 등록. My, Login, Splash, Terms 네비게이션이 새 TermsNavKey 구조 및 SettingNavKey 네비게이션으로 업데이트됨. settings.gradle에 feature:setting:api/impl 모듈 추가.
Button API Migration
Prezel/feature/login/impl/src/main/java/com/team/prezel/feature/login/impl/LoginScreen.kt, Prezel/feature/profile/impl/src/main/java/com/team/prezel/feature/profile/impl/ProfileScreen.kt, Prezel/core/designsystem/component/datepicker/PrezelDatePicker.kt, Prezel/feature/terms/impl/src/main/java/com/team/prezel/feature/terms/impl/TermsScreen.kt
기존 MainButton/CustomButton 사용처가 새 PrezelButtonArea API(mainButton/subButton 파라미터)와 PrezelButton 컴포넌트로 마이그레이션됨.
Snackbar & UI Refinements
Prezel/app/src/main/java/com/team/prezel/ui/DoubleBackToExitHandler.kt, Prezel/core/designsystem/component/datepicker/PrezelDatePicker.kt, Prezel/app/src/main/res/values/strings.xml
DoubleBackToExitHandler에서 snackbar action 제거하고 useRaisedPosition=false 설정. 뒤로가기 메시지가 마침표로 끝나도록 수정.
Build Configuration & Resources
Prezel/app/build.gradle.kts, Prezel/feature/my/impl/build.gradle.kts, Prezel/feature/setting/api/build.gradle.kts, Prezel/feature/setting/impl/build.gradle.kts, Prezel/feature/setting/api/proguard-rules.pro, Prezel/feature/setting/impl/proguard-rules.pro, Prezel/feature/setting/impl/src/main/res/values/strings.xml
앱 및 my 모듈에 Setting API/구현 의존성 추가. Setting 모듈의 build.gradle, ProGuard 규칙, 한글 문자열 리소스 추가됨.
Previews & Design-time Support
Prezel/feature/setting/impl/delete/component/*, Prezel/feature/setting/impl/setting/component/*, Prezel/feature/setting/impl/setting/SettingScreen.kt
설정 및 탈퇴 화면의 Notice/Reason 스텝, 다양한 컴포넌트별 @BasicPreview 추가.

Possibly related PRs

Suggested labels

🔨 refactor

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목 '설정 화면 구현'은 이 PR의 주요 변경 사항인 feature:setting 모듈 추가 및 설정 화면 구현을 명확하게 요약합니다.
Description check ✅ Passed PR 설명은 요청된 템플릿의 모든 필수 섹션(작업 내용, 관련 이슈, 스크린샷)을 포함하며 구현 내용을 상세히 설명합니다.
Linked Issues check ✅ Passed PR의 모든 변경사항이 #117의 요구사항을 충족합니다: 설정 화면 UI, 사용자 정보 조회, 로그아웃 처리, 회원 탈퇴 플로우, 약관 네비게이션 등이 구현되었습니다.
Out of Scope Changes check ✅ Passed 공통 UI 요소 개선(SnackbarHost, PrezelDialog, PrezelButtonArea, noRippleClickable)은 설정 화면 구현을 지원하기 위한 필요한 변경이며, 탈퇴 사유 매핑 등의 데이터 흐름 리팩터링은 기능 요구사항을 충족하기 위한 범위 내 변경입니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@HamBeomJoon HamBeomJoon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다~

@moondev03 moondev03 merged commit 5f473d7 into develop May 7, 2026
3 checks passed
@moondev03 moondev03 deleted the feat/#117-설정-화면-구현 branch May 7, 2026 06:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ feat 새로운 기능 추가 또는 기존 기능 확장

Projects

None yet

Development

Successfully merging this pull request may close these issues.

설정 화면 구현

2 participants