Skip to content

[GMSS-210] 설정/닉네임 변경 화면 시안 반영 및 다크 모드 색 정합 - #48

Merged
seunghee17 merged 11 commits into
developfrom
soyeonLee126/설정화면-sync
Aug 18, 2026

Hidden character warning

The head ref may contain hidden characters: "soyeonLee126/\uc124\uc815\ud654\uba74-sync"
Merged

[GMSS-210] 설정/닉네임 변경 화면 시안 반영 및 다크 모드 색 정합#48
seunghee17 merged 11 commits into
developfrom
soyeonLee126/설정화면-sync

Conversation

@soyeonLee126

Copy link
Copy Markdown
Collaborator

작업 개요

설정 / 계정 정보 / 닉네임 변경 화면을 시안에 맞추고, 그 과정에서 드러난 다크 모드 색 불일치를 정리했습니다. 앱 셸이 라이트로 고정돼 있는데 일부 컴포넌트가 앱 테마 대신 기기의 다크 모드 설정을 직접 읽고 있어, 다크 모드 기기에서 흰 배경에 검은 상단바가 나오거나 로그인 화면에서 검은 배경에 검은 시스템 바 아이콘이 겹치는 문제가 있었습니다.

작업 유형

  • feat: 새 기능
  • fix: 버그 수정
  • refactor: 리팩토링 (동작 변경 없음)
  • build: 빌드/의존성 설정
  • chore: 기타 (문서, 설정 등)
  • test: 테스트 추가/수정

변경 사항

  • 설정 목록에 알림 설정 항목과 ON/OFF 배지를 추가하고, OS 알림 허용 여부를 읽어 표시한 뒤 탭하면 앱별 알림 설정으로 이동하도록 연결했습니다. 화면이 다시 보일 때마다 다시 읽어 배지를 갱신합니다.
  • 설정 목록 항목의 높이/여백과 화면 배경, 닉네임 변경 화면의 안내 문구/입력 필드/버튼 여백을 시안 값으로 맞췄습니다.
  • 닉네임 입력 필드를 OutlinedTextField 대신 BasicTextField로 다시 그렸습니다. 시안의 필드는 모서리가 직각이고 높이가 52dp라 Material 기본 여백과 맞지 않았습니다.
  • GamssTextFieldplaceholdererrorMessage를 추가하고, 닉네임 변경 화면에 빈 값 안내와 최소 길이 안내를 연결했습니다.
  • 닉네임 입력 길이 제한 기준을 원본 길이에서 공백 제외 길이로 바꿔 저장 판정과 일치시켰습니다. 기존에는 뒤에 공백이 붙으면 유효 글자를 20자까지 채우지 못했습니다.
  • GamssTopNavigation의 배경 기본값과 로고 분기가 isSystemInDarkTheme()를 직접 보던 것을 앱 테마 기준으로 바꾸고, 이를 우회하려고 호출부 5곳에 넣었던 backgroundColor 인자를 제거했습니다. 판정용으로 GamssColors.isDark 토큰을 추가했습니다.
  • MainActivity의 테마와 values-night 윈도우 배경도 라이트로 고정했습니다. 시스템 바 아이콘만 라이트로 고정돼 있어 다크 모드 기기의 로그인/온보딩 화면에서 검은 배경에 검은 아이콘이 겹쳤습니다.
  • Material 색 스킴에 primary/onPrimary를 지정했습니다. CircularProgressIndicator가 색 인자 없이 쓰이면서 M3 기본 보라색으로 나오고 있었습니다.
  • 알림 설정 진입 실패 시의 앱 정보 화면 폴백을 runCatching으로 감쌌습니다. 두 설정 화면이 모두 없는 기기에서 폴백이 그대로 터져 앱이 죽을 수 있었습니다.
  • 설정 목록 항목의 제목에 weight를 줘, 제목이 길거나 글꼴이 커져도 ON/OFF 배지가 밀려 잘리지 않도록 했습니다.

관련 이슈

  • 해당 없음 (Notion으로 관리)

관련 작업 (Notion)

스크린샷 / 동작 화면

  • 닉네임 변경 화면은 Figma 시안 3977-15510(빈 값), 3973-15391(최소 길이 미달) 기준으로 맞췄습니다.

체크리스트

  • base 브랜치가 develop으로 설정되어 있다
  • 로컬 빌드 및 실행을 확인했다
  • 커밋 메시지가 컨벤션(feat:, fix: 등)을 따른다
  • 불필요한 로그/주석/디버그 코드를 제거했다
  • 리뷰어가 이해할 수 있도록 설명을 작성했다

리뷰 요청 사항

  • 다크 모드 대응 방향을 중점적으로 봐주세요. 다크 시안이 아직 없어 이번에는 MainActivity, MainScreen, values-night 세 곳을 모두 라이트로 고정하는 쪽을 택했습니다. 컴포넌트 단위로 기기 설정을 읽던 것을 앱 테마로 모았기 때문에, 나중에 다크 시안이 나오면 이 고정만 풀어도 상단바/로고/로딩 인디케이터가 함께 따라옵니다.
  • Material primarygray950, onPrimarygray025로 잡았습니다. 디자인 시스템에 primary 토큰이 없어 Primary 버튼과 같은 값을 썼는데, 별도 토큰을 두는 편이 나을지 의견 부탁드립니다.
  • 닉네임 입력 길이 제한을 공백 제외 기준으로 바꾼 부분이 서버 정책과 어긋나지 않는지 확인 부탁드립니다.

- 설정 목록에 알림 설정 항목과 ON/OFF 배지 추가
  - OS 알림 허용 여부를 읽어 표시하고, 탭하면 앱별 알림 설정으로 이동
  - 화면이 다시 보일 때마다 다시 읽어 배지를 갱신
- 목록 항목 높이/여백과 화면 배경을 시안 값으로 정렬
- 상단 내비게이션 배경을 화면 배경색으로 명시
  기본값이 기기 다크 모드를 따라가 라이트로 고정된 셸과 어긋났다
- 시스템 바 아이콘 색을 밝은 배경용으로 고정
  같은 이유로 기기가 다크 모드면 흰 배경에 흰 아이콘이 겹쳤다
- 닉네임 변경 화면 안내 문구/입력 필드/버튼 여백을 시안에 맞춤
  입력 필드는 모서리가 직각이고 높이가 52dp라 OutlinedTextField 대신
  BasicTextField 로 다시 그렸다
- GamssTopNavigation 의 배경 기본값과 로고 분기를 isSystemInDarkTheme() 대신
  앱 테마 기준으로 바꿈
  셸이 라이트로 고정된 동안 기기 다크 모드를 직접 보면 흰 배경에 검은 상단바가 나왔다
- 판정에 쓸 GamssColors.isDark 토큰 추가
- 호출부 5곳에서 기본값을 우회하던 backgroundColor 인자와 주석 제거
- MainActivity 의 테마도 라이트로 고정
  시스템 바 아이콘만 라이트로 고정돼 있어 다크 모드 기기의 로그인/온보딩 화면에서
  검은 배경에 검은 아이콘이 겹쳤다
- values-night 윈도우 배경도 라이트로 통일해 첫 프레임 깜빡임 제거
- Material 색 스킴에 primary/onPrimary 를 지정
  CircularProgressIndicator 가 M3 기본 보라를 쓰고 있었다
- GamssTextField 에 placeholder, errorMessage 파라미터 추가
  placeholder 는 값이 비었을 때만, 안내 문구는 필드 아래에 시안 색/타이포로 그린다
- 닉네임 변경 화면에 두 문구 연결
  안내 문구는 한 글자라도 입력한 뒤 공백 제외 길이가 최소 길이 미만일 때 뜬다
- 입력 길이 제한 기준을 원본에서 공백 제외 길이로 변경
  저장 판정과 기준이 달라 뒤에 공백이 붙으면 유효 글자를 다 채우지 못했다
- 앱 정보 화면 폴백도 runCatching 으로 감쌈
  두 설정 화면이 모두 없는 기기에서 폴백이 그대로 터져 앱이 죽을 수 있었다
- 설정 목록 항목의 제목에 weight 를 줘 배지가 밀려 잘리지 않도록 함
  제목이 길거나 글꼴이 커지면 알림 상태를 알리는 ON/OFF 배지가 사라졌다
@soyeonLee126
soyeonLee126 marked this pull request as draft August 18, 2026 02:41
develop 병합 시 양쪽에서 같은 항목을 추가해 androidx-lifecycle-runtime-compose 가
두 번 정의되어 TOML 파싱이 실패했다.
- 입력 필드 테두리를 시안의 손그림 벡터로 교체하고 gray950 으로 틴트해 다크 모드에서도
  색만 반전되게 한다. pathData 는 aapt2 문자열 길이 한계(32767자)를 넘어 path 를 나눴다.
- 최대 길이를 10자로 줄이고, 초과 입력을 막는 대신 안내 문구를 띄우고 저장 버튼을 막는다.
- 키보드가 올라올 때 내비게이션 바 inset 이 이중으로 더해지던 여백을 없앤다.
…sync

# Conflicts:
#	core/designsystem/src/main/java/com/gamss/android/core/designsystem/topnavigation/GamssTopNavigation.kt
제목과 Spacer 가 남는 폭을 1:1 로 나눠 가져, 제목이 짧아도 남은 몫이 Spacer 로
넘어가지 않아 앱 버전이 끝까지 밀리지 않았다. 제목과 배지를 weight 를 가진
Row 로 묶어 남는 폭을 모두 차지하게 한다.
@soyeonLee126
soyeonLee126 marked this pull request as ready for review August 18, 2026 15:14
- 상한을 넘는 입력은 받지 않고, 초과를 시도했을 때만 안내 문구를 띄운다.
  차단하면 상태만으로는 초과 시도를 알 수 없어 화면 로컬 플래그로 기억한다.
- placeholder 를 빼고 쓰이지 않게 된 문자열도 지운다.
- 하단 여백을 ime 와 내비게이션 바 중 큰 쪽으로 잡는다. Scaffold 가
  contentWindowInsets 를 0 으로 두어 상세 화면에는 내비게이션 바 인셋이
  전달되지 않아, 키보드가 내려가면 저장 버튼이 3버튼 내비에 가려졌다.

@seunghee17 seunghee17 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

확인했습니다

@seunghee17
seunghee17 merged commit 23e1976 into develop Aug 18, 2026
6 checks passed
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