Skip to content

Settings UI based on Design QA #1105

Open
yuni-ju wants to merge 5 commits intodevelopfrom
qa/setting
Open

Settings UI based on Design QA #1105
yuni-ju wants to merge 5 commits intodevelopfrom
qa/setting

Conversation

@yuni-ju
Copy link
Copy Markdown
Member

@yuni-ju yuni-ju commented Apr 29, 2026

작업 내용

  • 환경설정 화면의 닉네임, 이메일 텍스트 스타일 변경
  • 계정 삭제 이유 클릭 시 바텀 시트
    • 기존의 중첩된 Column 코드 정리
    • 버튼의 텍스트가 한 줄로 표시되도록 AutoSize 적용
  • 계정 삭제 확인 화면의 간격 조정
  • 체크 아이콘 변경, 해당 아이콘을 사용 중인 곳 확인해 사이즈 변경

참고

모듈별 변경 사항 및 기능적 영향

1. WithdrawScreen.kt (계정 삭제 화면)

기능적 영향:

  • 계정 삭제 사유 선택 화면: 중첩된 Column 제거로 레이아웃 코드 간결화
  • 계정 삭제 확인 화면:
    • 체크리스트 상단 여백 증가 (20dp → 32dp)
    • 각 항목 간 구분선 여백 증가 (12dp → 16dp)
    • 체크 아이콘 크기 고정 (20dp)
    • 항목 텍스트와 아이콘 간 정렬 개선 (수직 중앙 정렬)

사용자 대면 변경:

  • 디자인 QA 기준에 맞춘 일관된 간격으로 가독성 및 시각적 계층 개선
  • 체크 아이콘의 균형잡힌 크기로 UI 일관성 강화

위험도: 낮음 (순수 UI 레이아웃 변경)

2. SettingsScreen.kt (설정 화면)

기능적 영향:

  • 프로필 닉네임: 텍스트 정렬을 중앙 정렬로 변경, 타이포그래피 업그레이드 (b2 → b1)
  • 프로필 이메일: 중앙 정렬 설정, 라인 높이 조정 (21.sp)

사용자 대면 변경:

  • 프로필 섹션의 시각적 계층을 강화하여 가독성 개선
  • 일관된 텍스트 정렬로 UI 정렬성 향상

위험도: 낮음 (순수 스타일 변경, 상태 관리 영향 없음)

3. Button.kt (FilledRoundedCornerButton)

기능적 영향:

  • 버튼 텍스트를 단일 라인으로 제한
  • 텍스트 오버플로우 시 자동 크기 조정 (TextAutoSize.StepBased, 최소 12sp, 최대 지정 크기)

사용자 대면 변경:

  • 계정 삭제 사유 선택 화면의 버튼 텍스트가 항상 한 줄로 렌더링되어 일관된 UI 제공

위험도: 낮음 (텍스트 렌더링 제약만 추가)

4. BottomSheetDialog.kt (바텀시트 다이얼로그)

기능적 영향:

  • 체크 아이콘 크기 고정 (24.dp)

사용자 대면 변경:

  • 선택 항목의 체크 아이콘 일관된 크기 표시

위험도: 낮음 (단순 크기 조정)

5. ic_check.xml (체크 아이콘 리소스)

기능적 영향:

  • 아이콘 뷰포트 크기 조정 (18×13 → 20×20)
  • 체크마크 경로 데이터 변경
  • 스트로크 너비 조정 (2 → 1.5)
  • 라운드 스트로크 끝단 및 연결부 적용

사용자 대면 변경:

  • 디자인 가이드에 맞춰 개선된 체크 아이콘 표시

위험도: 낮음 (리소스 업데이트)


위험 포인트 분석

네트워크/오류 처리: 없음 (UI 관련 변경만)

스레딩 문제: 없음 (모든 변경이 주 스레드의 Compose UI 레이아웃/스타일)

상태 일관성: 없음 (상태 관리 로직 변경 없음, 기존 조건부 렌더링 유지)


필요한 테스트 및 검증

필수 검증 항목:

  1. 설정 화면 계정 삭제 플로우:

    • 계정 삭제 사유 선택 화면에서 바텀시트가 정상 표시되는지 확인
    • 텍스트 오버플로우 시 버튼 텍스트 자동 크기 조정 동작 확인
    • 각 화면의 간격이 디자인 QA 기준(itemSpacing: 4)을 만족하는지 확인
  2. 프로필 닉네임/이메일 표시:

    • SettingsScreen에서 프로필 정보가 중앙 정렬되어 올바르게 표시되는지 확인
    • 텍스트 길이별 렌더링 확인 (짧은 텍스트, 긴 텍스트)
  3. 체크 아이콘 일관성:

    • 계정 삭제 확인 화면에서 체크 아이콘 크기(20dp)가 일관되게 표시되는지 확인
    • 바텀시트 다이얼로그의 체크 아이콘 크기(24.dp)가 정상 표시되는지 확인
  4. 레이아웃 호환성:

    • 다양한 화면 크기(휴대폰, 태블릿) 및 방향(세로, 가로)에서 정상 렌더링 확인
    • 다국어 텍스트(긴 언어) 환경에서 오버플로우 처리 확인

권장 테스트:

  • 자동 UI 테스트: Compose Preview 또는 Paparazzi를 통한 스냅샷 테스트
  • 수동 테스트: 실제 기기에서 계정 삭제 플로우 엔드-투-엔드 검증

@yuni-ju yuni-ju requested a review from DongJun-H April 29, 2026 12:46
@yuni-ju yuni-ju self-assigned this Apr 29, 2026
@yuni-ju yuni-ju added the QA label Apr 29, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 29, 2026

Walkthrough

이 PR은 설정/탈퇴 화면의 디자인 QA 항목을 해결합니다. 체크아이콘 크기 및 리소스를 통일하고, 텍스트 정렬과 간격을 조정하며, 버튼 텍스트 크기 자동 조정 기능을 추가합니다.

Changes

Cohort / File(s) Summary
체크아이콘 및 다이얼로그
presentation/src/main/res/drawable/ic_check.xml, presentation/src/main/java/daily/dayo/presentation/view/dialog/BottomSheetDialog.kt
체크아이콘 드로어블을 18×13에서 20×20으로 리사이징하고 stroke 스타일 조정(strokeWidth 2 → 1.5). 다이얼로그의 체크 아이콘을 24.dp 고정 크기로 설정하고 수직 정렬 유지.
탈퇴 화면
presentation/src/main/java/daily/dayo/presentation/screen/account/WithdrawScreen.kt
레이아웃 컨테이너 제거로 구조 단순화. 체크리스트 상단 간격 20dp → 32dp, 아이템 구분선 12dp → 16dp로 확대. 체크 아이콘에 Alignment.CenterVertically 정렬 및 20.dp 고정 크기 적용.
설정 화면
presentation/src/main/java/daily/dayo/presentation/screen/settings/SettingsScreen.kt
프로필 닉네임과 이메일 텍스트 정렬을 중앙 정렬(TextAlign.Center)로 변경. 닉네임 타이포그래피 b2b1 상향. 이메일 lineHeight 오버라이드 추가.
버튼 컴포넌트
presentation/src/main/java/daily/dayo/presentation/view/Button.kt
FilledRoundedCornerButton 라벨에 텍스트 오버플로우 방지(maxLines = 1, softWrap = false, TextOverflow.Clip) 및 자동 폰트 크기 조정(StepBased, 12.sp ~ 기본 크기) 적용.

Possibly related PRs

🚥 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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목이 변경사항의 핵심인 설정 화면 UI의 디자인 QA 기반 업데이트를 명확하게 요약합니다.
Linked Issues check ✅ Passed 모든 링크된 이슈(#1057, #1058, #1059)의 코드 요구사항이 충족되었습니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 설정 화면 UI와 계정 삭제 흐름의 디자인 QA 조정으로 범위 내에 있습니다.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch qa/setting

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
Review rate limit: 0/1 reviews remaining, refill in 60 minutes.

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

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@presentation/src/main/java/daily/dayo/presentation/view/Button.kt`:
- Around line 122-129: The FilledRoundedCornerButton's Text composable uses
TextAutoSize with maxFontSize = textStyle.fontSize which can be smaller than
safe limits and combined with maxLines=1, softWrap=false and TextOverflow.Clip
may silently cut long locale strings; add defensive logic in the button
(FilledRoundedCornerButton) to compute a safe maxFontSize =
max(textStyle.fontSize, 12.sp) or clamp textStyle.fontSize to a minimum of 12.sp
before passing to TextAutoSize, and fall back to TextOverflow.Ellipsis or relax
width constraints when autosizing cannot prevent truncation; also update the
KDoc for the textStyle parameter to state callers must provide an explicit
fontSize and note recommended minimum (12.sp) and mention the overflow
behaviour.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 87d731fd-da71-4cd4-9887-c92d5526db4e

📥 Commits

Reviewing files that changed from the base of the PR and between 2c1708f and 68352df.

📒 Files selected for processing (5)
  • presentation/src/main/java/daily/dayo/presentation/screen/account/WithdrawScreen.kt
  • presentation/src/main/java/daily/dayo/presentation/screen/settings/SettingsScreen.kt
  • presentation/src/main/java/daily/dayo/presentation/view/Button.kt
  • presentation/src/main/java/daily/dayo/presentation/view/dialog/BottomSheetDialog.kt
  • presentation/src/main/res/drawable/ic_check.xml

Comment on lines +122 to +129
modifier = contentModifier ?: Modifier.fillMaxWidth(),
maxLines = 1,
softWrap = false,
overflow = TextOverflow.Clip,
autoSize = TextAutoSize.StepBased(
minFontSize = 12.sp,
maxFontSize = textStyle.fontSize
)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# FilledRoundedCornerButton 사용처와 해당 텍스트 스타일의 fontSize 명시 여부를 확인합니다.
rg -n -C 3 'FilledRoundedCornerButton\(' presentation/src/main/java
rg -n -C 3 'fontSize\s*=' presentation/src/main/java/daily/dayo/presentation/theme presentation/src/main/java/daily/dayo/presentation/screen

Repository: Daily-DAYO/DAYO_Android

Length of output: 1795


🏁 Script executed:

# Search for FilledRoundedCornerButton usage patterns and fontSize definitions
# Assume repo is available at root
find . -type f -name "*.kt" | head -20

Repository: Daily-DAYO/DAYO_Android

Length of output: 1584


🏁 Script executed:

# Search for FilledRoundedCornerButton usage and definition
rg -n "FilledRoundedCornerButton" presentation/src/main/java --type kt -C 3

Repository: Daily-DAYO/DAYO_Android

Length of output: 94


🏁 Script executed:

# Search for fontSize definitions in theme/style files
rg -n "fontSize\s*=" presentation/src/main/java/daily/dayo/presentation/theme --type kt -C 2

Repository: Daily-DAYO/DAYO_Android

Length of output: 94


🏁 Script executed:

# Locate and read the Button.kt file to understand the implementation
find presentation/src/main/java -name "Button.kt" -type f

Repository: Daily-DAYO/DAYO_Android

Length of output: 133


🏁 Script executed:

# Search for FilledRoundedCornerButton usage across the codebase
rg -n "FilledRoundedCornerButton" presentation/src/main/java -C 3

Repository: Daily-DAYO/DAYO_Android

Length of output: 23974


🏁 Script executed:

# Search for fontSize definitions in theme
rg -n "fontSize\s*=" presentation/src/main/java/daily/dayo/presentation/theme -C 2

Repository: Daily-DAYO/DAYO_Android

Length of output: 8521


🏁 Script executed:

# Read the Button.kt file
cat -n presentation/src/main/java/daily/dayo/presentation/view/Button.kt

Repository: Daily-DAYO/DAYO_Android

Length of output: 11449


🏁 Script executed:

# Check if any calls explicitly pass a textStyle that isn't from the theme
rg -n "textStyle\s*=" presentation/src/main/java/daily/dayo/presentation/screen --context 3 | head -50

Repository: Daily-DAYO/DAYO_Android

Length of output: 5830


🏁 Script executed:

# Search for any custom TextStyle creations that might be passed to FilledRoundedCornerButton
rg -n "TextStyle\(" presentation/src/main/java/daily/dayo/presentation/screen -C 2 | grep -A 2 -B 2 "fontSize"

Repository: Daily-DAYO/DAYO_Android

Length of output: 1151


TextAutoSize 구현의 안전성을 확보하되, 조용한 텍스트 절단 위험에 주의하세요.

현재 모든 FilledRoundedCornerButton 호출처는 테마에서 정의한 스타일(b3, b5 등)을 사용하고 있어 fontSize 제약은 만족하고 있습니다. 다만 TextOverflow.Clip + maxLines=1 + softWrap=false 조합은 긴 로캘 문자열(특히 한글)이 조용히 잘릴 수 있는 구조입니다.

안전성을 강화하기 위해:

  1. 공용 컴포넌트이므로 maxFontSize에 명시적 하한을 설정하거나, 함수 내에서 textStyle.fontSize가 12.sp 이상임을 보증하는 방어 로직을 추가할 것
  2. textStyle 파라미터 문서에 "명시적 fontSize를 가져야 함" 요구사항을 명기할 것
  3. 향후 호출처에서 텍스트 절단을 방지하기 위해, 필요시 버튼 너비 제약 또는 타원 부호(TextOverflow.Ellipsis)로 변경을 검토할 것
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@presentation/src/main/java/daily/dayo/presentation/view/Button.kt` around
lines 122 - 129, The FilledRoundedCornerButton's Text composable uses
TextAutoSize with maxFontSize = textStyle.fontSize which can be smaller than
safe limits and combined with maxLines=1, softWrap=false and TextOverflow.Clip
may silently cut long locale strings; add defensive logic in the button
(FilledRoundedCornerButton) to compute a safe maxFontSize =
max(textStyle.fontSize, 12.sp) or clamp textStyle.fontSize to a minimum of 12.sp
before passing to TextAutoSize, and fall back to TextOverflow.Ellipsis or relax
width constraints when autosizing cannot prevent truncation; also update the
KDoc for the textStyle parameter to state callers must provide an explicit
fontSize and note recommended minimum (12.sp) and mention the overflow
behaviour.

@yuni-ju
Copy link
Copy Markdown
Member Author

yuni-ju commented Apr 29, 2026

@codex review

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. More of your lovely PRs please.

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Todo

1 participant