Skip to content

Conversation

@chanubc
Copy link
Member

@chanubc chanubc commented Oct 18, 2025

โœ… ๐—–๐—ต๐—ฒ๐—ฐ๐—ธ-๐—Ÿ๐—ถ๐˜€๐˜

  • mergeํ•  ๋ธŒ๋žœ์น˜์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•ด ์ฃผ์„ธ์š”(mainโŒ/developโญ•)
  • ๋ฆฌ๋ทฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฆฌ๋ทฐ์–ด๋ฅผ ์ง€์ •ํ•ด ์ฃผ์„ธ์š”
  • P1 ๋‹จ๊ณ„์˜ ๋ฆฌ๋ทฐ๋Š” ํ•„์ˆ˜๋กœ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
  • Approve๋œ PR์€ assigner๊ฐ€ ๋จธ์ง€ํ•˜๊ณ , ์ˆ˜์ • ์š”์ฒญ์ด ์˜จ ๊ฒฝ์šฐ ์ˆ˜์ • ํ›„ ๋‹ค์‹œ push๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ๐—œ๐˜€๐˜€๐˜‚๐—ฒ๐˜€

๐Ÿ“Ž๐—ช๐—ผ๐—ฟ๐—ธ ๐——๐—ฒ๐˜€๐—ฐ๐—ฟ๐—ถ๐—ฝ๐˜๐—ถ๐—ผ๐—ป

  • android 15 ๋Œ€์‘
  • ์ƒํƒœ๋ฐ” ์ƒ‰์ƒ ๋ณ€๊ฒฝ ๋กœ์ง ์ˆ˜์ •
  • enabled edge to edge
  • agp 8.13.0
  • compile sdk 36

๐Ÿ“ท ๐—ฆ๐—ฐ๐—ฟ๐—ฒ๐—ฒ๐—ป๐˜€๐—ต๐—ผ๐˜

๐Ÿ’ฌ ๐—ง๐—ผ ๐—ฅ๐—ฒ๐˜ƒ๐—ถ๐—ฒ๐˜„๐—ฒ๐—ฟ๐˜€

ci ์™œ.์•ˆ.๋ผ

Summary by CodeRabbit

  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ

    • ์—์ง€-ํˆฌ-์—์ง€(Edge-to-edge) ๋””์Šคํ”Œ๋ ˆ์ด ์ง€์› ์ถ”๊ฐ€
  • ๊ฐœ์„  ์‚ฌํ•ญ

    • ์ƒํƒœํ‘œ์‹œ์ค„ยท๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ฐ” ํˆฌ๋ช…ํ™” ๋ฐ ์‹œ์Šคํ…œ ๋ฐ” ํŒจ๋”ฉ ์ ์šฉ(์•ฑ ์ „์ฒด ๋ ˆ์ด์•„์›ƒ ์ผ๊ด€์„ฑ ํ–ฅ์ƒ)
    • ๋ฉ”์ธ ํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ๊ณผ ํ•˜๋‹จ ๋‚ด๋น„๊ฒŒ์ด์…˜ ๊ตฌ์กฐ ์žฌ๊ตฌ์„ฑ
    • ์Šคํ”Œ๋ž˜์‹œ ๋™์ž‘์ด ์ƒ๋ช…์ฃผ๊ธฐ ๋ณ€ํ™”์— ๋” ๋ฏผ๊ฐํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ๊ฐœ์„ 
    • Android SDK ๋ฐ ๋นŒ๋“œ ๋„๊ตฌ ๋ฒ„์ „ ์ƒํ–ฅ
  • ์ œ๊ฑฐ

    • ์ƒํƒœ๋ฐ” ์ƒ‰์ƒ ์„ค์ • ์œ ํ‹ธ ๋ฐ ์ผ๋ถ€ ๊ณต๊ฐœ UI ํ™•์žฅ(๋ทฐ ๊ฐ€์‹œ์„ฑ ๋“ฑ) ์‚ญ์ œ

@coderabbitai
Copy link

coderabbitai bot commented Oct 18, 2025

Walkthrough

compileSdkยทminSdk์™€ ๋นŒ๋“œ ๋„๊ตฌ๊ฐ€ ์ƒํ–ฅ๋˜๊ณ  edgeโ€‘toโ€‘edge UI๊ฐ€ ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ Composable/ํ™•์žฅ ํ•จ์ˆ˜๊ฐ€ ์ œ๊ฑฐ๋˜๊ฑฐ๋‚˜ View๋กœ ์ด๋™๋˜์—ˆ๊ณ , ์•กํ‹ฐ๋น„ํ‹ฐ ๋ ˆ์ด์•„์›ƒ๊ณผ ํ…Œ๋งˆ๊ฐ€ ์žฌ๊ตฌ์„ฑ๋˜์–ด ํˆฌ๋ช… ์ƒํƒœ๋ฐ” ์ž๋ฆฌํ‘œ์‹œ์ž์™€ inset ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ๋กœ ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Changes

Cohort / File(s) ๋ณ€๊ฒฝ ์š”์•ฝ
Gradle ๋ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ
app/build.gradle.kts, gradle/libs.versions.toml, gradle/wrapper/gradle-wrapper.properties, .github/workflows/develop_PR_builder.yml
compileSdk๋ฅผ ๋ฒ„์ „ ์นดํƒˆ๋กœ๊ทธ(libs.versions.compileSdk)๋กœ ์ฐธ์กฐํ•˜๋„๋ก ๋ณ€๊ฒฝ; catalog์—์„œ compileSdk 35โ†’36, minSdk 24โ†’28 ๋ฐ coreKtx/appcompat/AGP ๋ฒ„์ „ ์ƒํ–ฅ; Gradle wrapper 8.7โ†’8.13 ๋ฐ ์›Œํฌํ”Œ๋กœ์šฐ ๋นŒ๋“œ ์ธ์ž ์กฐ์ •.
UI ํ™•์žฅ ํ•จ์ˆ˜ โ€” ์ œ๊ฑฐ
core/ui/src/main/java/com/teamwable/ui/extensions/ContextExt.kt, core/ui/src/main/java/com/teamwable/ui/extensions/FragmentExt.kt, core/ui/src/main/java/com/teamwable/ui/extensions/ViewVisibleExt.kt
Context.statusBarColorOf(...), Fragment.statusBarColorOf(...), View.visible(...) ์ œ๊ฑฐ.
UI ํ™•์žฅ ํ•จ์ˆ˜ โ€” ์ถ”๊ฐ€/์ด๋™
core/ui/src/main/java/com/teamwable/ui/extensions/ViewExt.kt
fun View.visible(isVisible: Boolean) ๋ฐ fun View.setStatusBarColor(@ColorRes resId: Int) ์ถ”๊ฐ€: ๋ฐฐ๊ฒฝ ๋ฆฌ์†Œ์Šค ์„ค์ •๊ณผ WindowInsets ๋ฆฌ์Šค๋„ˆ๋กœ ์ƒํƒœ๋ฐ” ์˜์—ญ ๋†’์ด/ํŒจ๋”ฉ ์กฐ์ •.
DesignSystem ์ œ๊ฑฐ
core/designsystem/src/main/java/com/teamwable/designsystem/extension/system/SetSystemUiColor.kt
Composable ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ UI ์œ ํ‹ธ(SetStatusBarColor, SetLightNavigationBar) ํŒŒ์ผ ์‚ญ์ œ.
ํ…Œ๋งˆ ๋ณ€๊ฒฝ
core/ui/src/main/res/values/themes.xml
Base.Theme.Wable์˜ statusBarColor๋ฅผ ํฐ์ƒ‰์—์„œ ํˆฌ๋ช…์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  navigationBarColor๋ฅผ ํˆฌ๋ช…์œผ๋กœ ์„ค์ •.
Activity / Compose ๋ณ€๊ฒฝ (edgeโ€‘toโ€‘edge)
feature/main/src/main/java/.../MainActivity.kt, feature/main-compose/src/main/java/.../MainComposeActivity.kt
enableEdgeToEdge() ํ˜ธ์ถœ ์ถ”๊ฐ€(์•ฑ ์‹คํ–‰ ์ดˆ๊ธฐ์— ์—ฃ์ง€โ€‘ํˆฌโ€‘์—ฃ์ง€ ํ™œ์„ฑํ™”); ๊ธฐ์กด Composable ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ UI ์ƒ‰์ƒ ์„ค์ • ์ œ๊ฑฐ ๋ฐ View ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ๋กœ ์ „ํ™˜.
๋ ˆ์ด์•„์›ƒ ์žฌ๊ตฌ์„ฑ ๋ฐ ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ทฐ
feature/main/src/main/res/layout/activity_main.xml
๋ฃจํŠธ ๋ ˆ์ด์•„์›ƒ์„ ConstraintLayout โ†’ RelativeLayout์œผ๋กœ ๋ณ€๊ฒฝ, status_bar_background View ์ถ”๊ฐ€ ๋ฐ ๋‚ด๋ถ€ ConstraintLayout์œผ๋กœ NavHost/BottomNavigationView ์žฌ๊ตฌ์„ฑ(๊ณ„์ธตยท์ œ์•ฝ ๋ณ€๊ฒฝ).
Compose ํ™”๋ฉด ํŒจ๋”ฉ/ํšจ๊ณผ ๋ณ€๊ฒฝ
feature/auth/.../LoginScreen.kt, feature/main-compose/.../MainScreen.kt, feature/main-compose/.../splash/SplashScreen.kt, feature/onboarding/.../FirstLckWatchScreen.kt
statusBarsPadding/navigationBarsPadding modifier ์ถ”๊ฐ€; ๋””์ž์ธ ์‹œ์Šคํ…œ์˜ SetStatusBarColor ์‚ฌ์šฉ ์ œ๊ฑฐ; SplashRoute์˜ LaunchedEffect ํ‚ค๋ฅผ lifecycleOwner๋กœ ๋ณ€๊ฒฝ(์žฌ์‹คํ–‰ ์กฐ๊ฑด ๋ณ€๊ฒฝ).

Sequence Diagram(s)

sequenceDiagram
    autonumber
    actor User
    participant Activity as MainActivity / MainComposeActivity
    participant Edge as enableEdgeToEdge()
    participant Layout as activity_main(status_bar_background View)
    participant Insets as View.setStatusBarColor / WindowInsets
    participant Nav as NavHostFragment / Compose Nav

    User->>Activity: ์•ฑ ์‹œ์ž‘ / ํ™”๋ฉด ์ „ํ™˜
    Activity->>Edge: enableEdgeToEdge()
    Edge-->>Activity: ์‹œ์Šคํ…œ ๋ฐ”๋ฅผ ์—ฃ์ง€โ€‘ํˆฌโ€‘์—ฃ์ง€๋กœ ์„ค์ •
    Activity->>Layout: ๋ ˆ์ด์•„์›ƒ ์ดˆ๊ธฐํ™” (status_bar_background ํฌํ•จ)
    Note right of Layout #F3F7FF: ์ƒํƒœ๋ฐ” ์ž๋ฆฌํ‘œ์‹œ์ž๋ฅผ View๋กœ ์ฒ˜๋ฆฌ\nWindowInsets ๋ฆฌ์Šค๋„ˆ๋กœ ๋†’์ด/ํŒจ๋”ฉ ์กฐ์ •
    Nav->>Insets: ๋ชฉ์ ์ง€ ๋ณ€๊ฒฝ ์‹œ ์ƒ‰์ƒ/๋†’์ด ์ ์šฉ ์š”์ฒญ
    Insets->>Layout: ๋ฐฐ๊ฒฝ ๋ฆฌ์†Œ์Šค ์„ค์ • ๋ฐ ์ƒ๋‹จ inset ์ ์šฉ
Loading

Estimated code review effort

๐ŸŽฏ 3 (Moderate) | โฑ๏ธ ~25 ๋ถ„

Suggested reviewers

  • sohyun127

Poem

๐Ÿฐ ์—ฃ์ง€๋กœ ํผ์ง„ ํ™”๋ฉด, ๋ฐ”๋Š” ํˆฌ๋ช…ํžˆ ํ๋ฅด๊ณ 
๋ฒ„์ „์€ ์‘ฅ์‘ฅ ์˜ฌ๋ผ ์ƒˆ ๋นŒ๋“œ๊ฐ€ ๋ฐ˜์ง์ด๋„ค โœจ
ํ™•์žฅํ•จ์ˆ˜ ์˜ฎ๊ธฐ๊ณ  ์ž๋ฆฌํ‘œ์‹œ์ž ์‹ฌ์–ด
ํŒจ๋”ฉ ๋งž์ถ”๋‹ˆ ๋ ˆ์ด์•„์›ƒ๋„ ํŽธ์•ˆํžˆ ์ˆจ์‰ฌ๋„ค
ํ† ๋ผ๋Š” ๊นก์ถฉโ€”๋ฆด๋ฆฌ์ฆˆ๋ฅผ ํ–ฅํ•ด ๋›ฐ์–ด๊ฐ„๋‹ค ๐Ÿฅ•

Pre-merge checks and finishing touches

โŒ 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%. You can run @coderabbitai generate docstrings to improve docstring coverage.
โœ… Passed checks (4 passed)
Check name Status Explanation
Title Check โœ… Passed ์ œ๋ชฉ "[Feature/#183] android 15"๋Š” ํ’€ ์š”์ฒญ์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค. Android 15 ์ง€์› ๊ตฌํ˜„์ด๋ผ๋Š” ํ•ต์‹ฌ ๋ชฉํ‘œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ๊ตฌ์ฒด์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์›์‹œ ์š”์•ฝ์—์„œ ํ™•์ธ๋˜๋Š” ๋ชจ๋“  ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ(compileSdk 36 ์—…๊ทธ๋ ˆ์ด๋“œ, AGP 8.13.0, Edge-to-Edge ํ™œ์„ฑํ™”)์„ ํฌ๊ด„ํ•ฉ๋‹ˆ๋‹ค. ์ œ๋ชฉ์€ ๋ฌธ์ œ ๋ฒˆํ˜ธ ์ฐธ์กฐ๋„ ํฌํ•จํ•˜์—ฌ ์ถ”์  ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
Linked Issues Check โœ… Passed ์—ฐ๊ฒฐ๋œ ์ด์Šˆ #183 "[FEAT] : android 15 ๋Œ€์‘"์€ Android 15 ์ง€์› ๊ตฌํ˜„์ด๋ผ๋Š” ๊ณ ์ˆ˜์ค€ ๋ชฉํ‘œ๋ฅผ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ’€ ์š”์ฒญ์€ ์ด ๋ชฉํ‘œ์— ๋ถ€ํ•ฉํ•˜๋Š” ํ•„์ˆ˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค: compileSdk 35์—์„œ 36์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ, minSdk 24์—์„œ 28๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ, AGP 8.13.0 ์—…๊ทธ๋ ˆ์ด๋“œ, Gradle ๋ž˜ํผ ์—…๋ฐ์ดํŠธ, Edge-to-Edge ๊ตฌํ˜„, ์ƒํƒœ๋ฐ” ์ƒ‰์ƒ ์ฒ˜๋ฆฌ ๋ฆฌํŒฉํ† ๋ง, ์—ฌ๋Ÿฌ ํ™”๋ฉด์— ๋Œ€ํ•œ Edge-to-Edge ํ˜ธํ™˜์„ฑ ์—…๋ฐ์ดํŠธ. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋“ค์€ Android 15 ํ˜ธํ™˜์„ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜์ ์ธ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค.
Out of Scope Changes Check โœ… Passed ๋ชจ๋“  ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ Android 15 ์ง€์› ๊ตฌํ˜„์ด๋ผ๋Š” ์—ฐ๊ฒฐ๋œ ์ด์Šˆ์˜ ๋ชฉํ‘œ ๋ฒ”์œ„ ๋‚ด์— ์žˆ์Šต๋‹ˆ๋‹ค. SDK/๋„๊ตฌ ์ฒด์ธ ์—…๊ทธ๋ ˆ์ด๋“œ(compileSdk 36, AGP 8.13.0), Edge-to-Edge ๊ตฌํ˜„(enableEdgeToEdge ํ˜ธ์ถœ, ํŒจ๋”ฉ ์ˆ˜์ •์ž ์ถ”๊ฐ€), ์ƒํƒœ๋ฐ” ์ƒ‰์ƒ ์ฒ˜๋ฆฌ ๋ฆฌํŒฉํ† ๋ง, Compose ํ™”๋ฉด ์—…๋ฐ์ดํŠธ ๋“ฑ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด Android 15 ํ˜ธํ™˜์„ฑ๊ณผ ์ง์ ‘ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. SplashScreen์˜ LaunchedEffect ํ‚ค ๋ณ€๊ฒฝ์„ ํฌํ•จํ•œ ๋ผ์ดํ”„์‚ฌ์ดํด ๊ฐœ์„ ๋„ Android 15 ๋Œ€์‘์˜ ์ผ๋ถ€๋กœ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Description Check โœ… Passed ํ’€ ์š”์ฒญ ์„ค๋ช…์€ ์ €์žฅ์†Œ์˜ ํ•„์ˆ˜ ํ…œํ”Œ๋ฆฟ ๊ตฌ์กฐ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ฒดํฌ๋ฆฌ์ŠคํŠธ, ์ด์Šˆ ๋งํฌ(#183), ์ž‘์—… ์„ค๋ช…(Android 15 ๋Œ€์‘, ์ƒํƒœ๋ฐ” ์ƒ‰์ƒ ๋ณ€๊ฒฝ, Edge-to-Edge ํ™œ์„ฑํ™”, AGP 8.13.0, compileSdk 36), ์Šคํฌ๋ฆฐ์ƒท ๋‘ ์žฅ, ๊ฒ€ํ† ์ž ๋Œ€์ƒ ๋ฉ”๋ชจ๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฃผ์š” ์„น์…˜์ด ์ฑ„์›Œ์ ธ ์žˆ์–ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์˜๋„์™€ ๋ฒ”์œ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โœจ Finishing touches
  • ๐Ÿ“ Generate docstrings
๐Ÿงช Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/#183-android-15

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

@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: 2

๐Ÿ“œ Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

๐Ÿ“ฅ Commits

Reviewing files that changed from the base of the PR and between 0c089a8 and f8c14f4.

๐Ÿ“’ Files selected for processing (10)
  • app/build.gradle.kts (1 hunks)
  • core/ui/src/main/java/com/teamwable/ui/extensions/ContextExt.kt (0 hunks)
  • core/ui/src/main/java/com/teamwable/ui/extensions/FragmentExt.kt (0 hunks)
  • core/ui/src/main/java/com/teamwable/ui/extensions/ViewExt.kt (1 hunks)
  • core/ui/src/main/java/com/teamwable/ui/extensions/ViewVisibleExt.kt (0 hunks)
  • core/ui/src/main/res/values/themes.xml (1 hunks)
  • feature/main/src/main/java/com/teamwable/main/MainActivity.kt (4 hunks)
  • feature/main/src/main/res/layout/activity_main.xml (1 hunks)
  • gradle/libs.versions.toml (3 hunks)
  • gradle/wrapper/gradle-wrapper.properties (1 hunks)
๐Ÿ’ค Files with no reviewable changes (3)
  • core/ui/src/main/java/com/teamwable/ui/extensions/ContextExt.kt
  • core/ui/src/main/java/com/teamwable/ui/extensions/FragmentExt.kt
  • core/ui/src/main/java/com/teamwable/ui/extensions/ViewVisibleExt.kt
๐Ÿงฐ Additional context used
๐Ÿงฌ Code graph analysis (1)
feature/main/src/main/java/com/teamwable/main/MainActivity.kt (2)
core/ui/src/main/java/com/teamwable/ui/extensions/FragmentExt.kt (1)
  • statusBarModeOf (56-58)
core/ui/src/main/java/com/teamwable/ui/extensions/ContextExt.kt (1)
  • statusBarModeOf (101-107)
โฐ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: PR Checker
๐Ÿ”‡ Additional comments (12)
app/build.gradle.kts (1)

28-28: ๋ฒ„์ „ ์นดํƒˆ๋กœ๊ทธ ์ฐธ์กฐ๋กœ ๊ฐœ์„ ๋จ.

compileSdk๋ฅผ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๊ฐ’์—์„œ ๋ฒ„์ „ ์นดํƒˆ๋กœ๊ทธ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ์ค‘์•™ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋ฒ” ์‚ฌ๋ก€์ด๋ฉฐ ํ”„๋กœ์ ํŠธ ์ „์ฒด์—์„œ SDK ๋ฒ„์ „์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

gradle/wrapper/gradle-wrapper.properties (1)

4-4: AGP 8.13.0๊ณผ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ Gradle ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ๋จ.

Gradle์„ 8.7์—์„œ 8.13์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ ๊ฒƒ์€ AGP 8.13.0 ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์ผ์น˜ํ•˜๋ฉฐ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.

gradle/libs.versions.toml (3)

3-3: minSdk ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ™•์ธ ํ•„์š” (24 โ†’ 28).

minSdk๋ฅผ 24์—์„œ 28๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด Android 7.x ๊ธฐ๊ธฐ ์ง€์›์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ƒ๋‹นํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์˜ํ–ฅ(์‹œ์žฅ ๋„๋‹ฌ ๋ฒ”์œ„ ๊ฐ์†Œ)์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์˜๋„์ ์ธ ๋ณ€๊ฒฝ์ธ์ง€ ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


46-46: AGP ๋ฒ„์ „ ๋Œ€ํญ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒ€์ฆ ํ•„์š” (8.5.1 โ†’ 8.13.0).

์ฃผ์š” ๋ฒ„์ „ ์ ํ”„(8๊ฐœ ๋งˆ์ด๋„ˆ ๋ฒ„์ „)์ด๋ฏ€๋กœ, ํŒ€์˜ JDK 17 ์ด์ƒ ์‚ฌ์šฉ ์—ฌ๋ถ€ ํ™•์ธ ๋ฐ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ์กด ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ œ๊ฑฐ๋œ AGP API ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์ฆํ•˜์‹ญ์‹œ์˜ค. ๋กœ์ปฌ ๋นŒ๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ํ˜ธํ™˜์„ฑ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.


16-17: AndroidX ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ Android 15 ์ง€์›์„ ์œ„ํ•ด ์ ์ ˆํžˆ ์—…๋ฐ์ดํŠธ๋จ.

coreKtx 1.13.1 โ†’ 1.17.0๊ณผ appcompat 1.7.0 โ†’ 1.7.1 ์—…๋ฐ์ดํŠธ๋Š” Android 15 ํ˜ธํ™˜์„ฑ ๊ฐœ์„ ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

core/ui/src/main/res/values/themes.xml (1)

4-5: LGTM! Edge-to-edge UI๋ฅผ ์œ„ํ•œ ์ ์ ˆํ•œ ํ…Œ๋งˆ ์„ค์ •์ž…๋‹ˆ๋‹ค.

ํˆฌ๋ช… ์ƒํƒœ๋ฐ”์™€ ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ” ์„ค์ •์€ Android 15 ๋Œ€์‘ ๋ฐ edge-to-edge ๊ตฌํ˜„์„ ์œ„ํ•œ ํ‘œ์ค€์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

core/ui/src/main/java/com/teamwable/ui/extensions/ViewExt.kt (1)

9-11: LGTM! ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค.

Visibility ํ† ๊ธ€ ๋กœ์ง์ด ์ •ํ™•ํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

feature/main/src/main/java/com/teamwable/main/MainActivity.kt (2)

67-67: LGTM! Edge-to-edge๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

enableEdgeToEdge()๋ฅผ super.onCreate() ์ „์— ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ Android 15 ๋Œ€์‘์„ ์œ„ํ•œ ๊ถŒ์žฅ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.


225-232: LGTM! ์ƒํƒœ๋ฐ” ์ƒ‰์ƒ ์ „ํ™˜ ๋กœ์ง์ด ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋„ค๋น„๊ฒŒ์ด์…˜ ๋ชฉ์ ์ง€์— ๋”ฐ๋ผ ์ƒํƒœ๋ฐ” ์ƒ‰์ƒ๊ณผ ๋ชจ๋“œ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

feature/main/src/main/res/layout/activity_main.xml (3)

2-10: LGTM! ์ƒํƒœ๋ฐ” ๋ฐฐ๊ฒฝ์„ ์œ„ํ•œ ์ ์ ˆํ•œ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

status_bar_background View๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ๋™์ ์œผ๋กœ ์ƒํƒœ๋ฐ” ์ƒ‰์ƒ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋†’์ด๋ฅผ 0dp๋กœ ์„ค์ •ํ•˜๊ณ  ๋Ÿฐํƒ€์ž„์— window insets๋ฅผ ํ†ตํ•ด ์กฐ์ •ํ•˜๋Š” ๋ฐฉ์‹์€ edge-to-edge UI์˜ ํ‘œ์ค€ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.


15-15: fitsSystemWindows="true" ์„ค์ •์ด edge-to-edge UI์™€ ์˜๋„๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

Edge-to-edge UI์—์„œ fitsSystemWindows="true"๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ์Šคํ…œ ๋ฐ” ์˜์—ญ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•œ ์ž๋™ ํŒจ๋”ฉ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ตฌ์กฐ์—์„œ๋Š”:

  • status_bar_background๊ฐ€ ๋ณ„๋„๋กœ ์ƒํƒœ๋ฐ” ์˜์—ญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๊ณ 
  • ConstraintLayout์ด fitsSystemWindows="true"๋กœ ์‹œ์Šคํ…œ ์ฐฝ insets๋ฅผ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค

์ด๊ฒƒ์ด ์˜๋„๋œ ๋™์ž‘์ธ์ง€, ์•„๋‹ˆ๋ฉด fitsSystemWindows๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ˆ˜๋™์œผ๋กœ ํŒจ๋”ฉ์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š”์ง€ ์‹ค์ œ ๊ธฐ๊ธฐ์—์„œ ํ…Œ์ŠคํŠธํ•ด์ฃผ์„ธ์š”. ํŠนํžˆ ๋‹ค์Œ ์‚ฌํ•ญ๋“ค์„ ํ™•์ธํ•ด์ฃผ์„ธ์š”:

  1. ์ƒ๋‹จ ์ฝ˜ํ…์ธ ๊ฐ€ ์ƒํƒœ๋ฐ”์™€ ๊ฒน์น˜์ง€ ์•Š๋Š”์ง€
  2. ํ•˜๋‹จ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ์˜์—ญ์ด ์˜๋„๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€
  3. ๋‹ค์–‘ํ•œ ํ™”๋ฉด ๋น„์œจ (์ œ์Šค์ฒ˜ ๋„ค๋น„๊ฒŒ์ด์…˜ vs ๋ฒ„ํŠผ ๋„ค๋น„๊ฒŒ์ด์…˜)์—์„œ ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€

17-61: LGTM! ํ•˜๋‹จ ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์žฌ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Group์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‹จ ๋„ค๋น„๊ฒŒ์ด์…˜ ์š”์†Œ๋“ค์„ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ๊ฐ€์‹œ์„ฑ ์ œ์–ด๊ฐ€ ๋” ์šฉ์ดํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

Comment on lines +2 to 4
compileSdk = "36"
minSdk = "28"
targetSdk = "35"
Copy link

Choose a reason for hiding this comment

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

โš ๏ธ Potential issue | ๐ŸŸ  Major

targetSdk๋ฅผ compileSdk์™€ ์ผ์น˜์‹œ์ผœ์•ผ ํ•จ (ํ˜„์žฌ ๋ถˆ์ผ์น˜: targetSdk 35 < compileSdk 36).

Android 15 ์™„์ „ ์ง€์› ๋ฐ PR ์„ค๋ช…์˜ edge-to-edge ๊ธฐ๋Šฅ์„ ์œ„ํ•ด targetSdk๋ฅผ 36์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. targetSdk๊ฐ€ compileSdk๋ณด๋‹ค ๋‚ฎ์œผ๋ฉด ์ตœ์‹  OS ์ตœ์ ํ™”๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, edge-to-edge ๊ตฌํ˜„์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ์•ˆ๋˜๋Š” ์ˆ˜์ •:

- targetSdk = "35"
+ targetSdk = "36"
๐Ÿ“ Committable suggestion

โ€ผ๏ธ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
compileSdk = "36"
minSdk = "28"
targetSdk = "35"
compileSdk = "36"
minSdk = "28"
targetSdk = "36"
๐Ÿค– Prompt for AI Agents
In gradle/libs.versions.toml around lines 2 to 4, targetSdk is set to 35 while
compileSdk is 36; update targetSdk to "36" so it matches compileSdk to enable
Android 15 optimizations and proper edge-to-edge behavior โ€” edit the targetSdk
entry value from "35" to "36" and save the file.

Copy link

@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: 0

๐Ÿงน Nitpick comments (1)
feature/main-compose/src/main/java/com/teamwable/main_compose/splash/SplashScreen.kt (1)

32-35: LaunchedEffect ํ‚ค๋ฅผ lifecycleOwner๋กœ ๋ฐ”๊พผ ์˜๋„ ํ™•์ธ ํ•„์š” โ€” observeAutoLogin ์ค‘๋ณต ์‹คํ–‰ ๋ฆฌ์Šคํฌ

  • lifecycleOwner ๊ต์ฒด(๊ตฌ์„ฑ ๋ณ€๊ฒฝ, NavHost ์žฌ๋งˆ์šดํŠธ ๋“ฑ) ์‹œ ๋ณธ ํšจ๊ณผ๊ฐ€ ์žฌ์‹คํ–‰๋˜์–ด 2์ดˆ ํ›„ observeAutoLogin()์ด ๋‹ค์‹œ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. observeAutoLogin()์ด ๋ฉฑ๋“ฑ(idempotent)ํ•˜๊ฑฐ๋‚˜ ์ค‘๋ณต ๊ตฌ๋…์„ ๋ฐฉ์ง€ํ•˜์ง€ ์•Š์œผ๋ฉด ๋„คํŠธ์›Œํฌ/๊ตฌ๋… ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜๋„๋œ ๋™์ž‘์ธ๊ฐ€์š”?

  • ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ ค๋ฉด Unit ํ‚ค๋กœ ์œ ์ง€ํ•˜๋Š” ํŽธ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค:

-    LaunchedEffect(lifecycleOwner) {
+    LaunchedEffect(Unit) {
         delay(2000)
         viewModel.observeAutoLogin()
     }
  • ๋งŒ์•ฝ owner ๋ณ€๊ฒฝ ์‹œ ์žฌ์‹คํ–‰์ด ๋ชฉ์ ์ด๋ผ๋ฉด, VM ๋‚ด๋ถ€์—์„œ ์ค‘๋ณต ๋ฐฉ์–ด(once ํ”Œ๋ž˜๊ทธ/AtomicBoolean, distinctUntilChanged, ์ด์ „ Job cancel ๋“ฑ) ๋˜๋Š” init ๋ธ”๋ก์—์„œ 1ํšŒ๋งŒ ๊ด€์ฐฐ์„ ์‹œ์ž‘ํ•˜๋„๋ก ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ์ฐธ๊ณ (์„ ํƒ): ์•„๋ž˜ sideEffect ์ˆ˜์ง‘์€ repeatOnLifecycle ํŒจํ„ด์œผ๋กœ ๋ฐ”๊พธ๋ฉด ์ˆ˜๋ช… ์ฃผ๊ธฐ ๊ฒฝ๊ณ„๊ฐ€ ๋” ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค.

LaunchedEffect(lifecycleOwner) {
  lifecycleOwner.lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
    viewModel.sideEffect.collect { /* navigate */ }
  }
}

๋˜ํ•œ ์ตœ์‹  ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋žŒ๋‹ค๋ฅผ ๋ณด์žฅํ•˜๋ ค๋ฉด rememberUpdatedState๋กœ ์บก์ฒ˜ํ•˜์„ธ์š”.

๐Ÿ“œ Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

๐Ÿ“ฅ Commits

Reviewing files that changed from the base of the PR and between f8c14f4 and 2da1bc7.

๐Ÿ“’ Files selected for processing (5)
  • feature/auth/src/main/java/com/teamwable/auth/LoginScreen.kt (2 hunks)
  • feature/main-compose/src/main/java/com/teamwable/main_compose/MainComposeActivity.kt (2 hunks)
  • feature/main-compose/src/main/java/com/teamwable/main_compose/MainScreen.kt (5 hunks)
  • feature/main-compose/src/main/java/com/teamwable/main_compose/splash/SplashScreen.kt (1 hunks)
  • feature/onboarding/src/main/java/com/teamwable/onboarding/firstlckwatch/FirstLckWatchScreen.kt (0 hunks)
๐Ÿ’ค Files with no reviewable changes (1)
  • feature/onboarding/src/main/java/com/teamwable/onboarding/firstlckwatch/FirstLckWatchScreen.kt
๐Ÿงฐ Additional context used
๐Ÿงฌ Code graph analysis (1)
feature/main-compose/src/main/java/com/teamwable/main_compose/MainScreen.kt (1)
feature/auth/src/main/java/com/teamwable/auth/naviagation/AuthNavigation.kt (1)
  • loginNavGraph (14-26)
โฐ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: PR Checker
๐Ÿ”‡ Additional comments (8)
feature/main-compose/src/main/java/com/teamwable/main_compose/MainComposeActivity.kt (2)

8-8: LGTM: edge-to-edge ์ง€์›์„ ์œ„ํ•œ ์˜ฌ๋ฐ”๋ฅธ import

Android์˜ ํ‘œ์ค€ edge-to-edge API import๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


24-24: enableEdgeToEdge() ํ˜ธ์ถœ ์ ์ ˆํ•จ - ๊ฒ€์ฆ ์™„๋ฃŒ

enableEdgeToEdge()๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ˜ธ์ถœ๋˜์—ˆ์œผ๋ฉฐ, MainScreen Composable์—์„œ statusBarsPadding() ๋ชจ๋””ํŒŒ์ด์–ด๋ฅผ ํ†ตํ•ด WindowInsets์„ ์ ์ ˆํžˆ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ ๊ฐ€ ์ƒํƒœ๋ฐ” ์•„๋ž˜์— ๊ฐ€๋ ค์ง€์ง€ ์•Š๋„๋ก ์ œ๋Œ€๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

feature/auth/src/main/java/com/teamwable/auth/LoginScreen.kt (2)

11-11: Import ์ถ”๊ฐ€ ํ™•์ธ๋จ.

Edge-to-edge UI๋ฅผ ์œ„ํ•œ navigationBarsPadding import๊ฐ€ ์ ์ ˆํžˆ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


156-157: Edge-to-edge ๋Œ€์‘์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ™”๋ฉด ํ•˜๋‹จ์— navigationBarsPadding()์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‹œ์Šคํ…œ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”์™€ ์ปจํ…์ธ ๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ Android 15 ๊ธฐ๊ธฐ์—์„œ ๋‹ค์–‘ํ•œ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ์„ค์ •(์ œ์Šค์ฒ˜/๋ฒ„ํŠผ)์œผ๋กœ ์‹ค์ œ ํ…Œ์ŠคํŠธํ•˜์—ฌ ๊ฐ„๊ฒฉ์ด ์ ์ ˆํ•œ์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

feature/main-compose/src/main/java/com/teamwable/main_compose/MainScreen.kt (4)

7-7: Import ์ถ”๊ฐ€ ํ™•์ธ๋จ.

Edge-to-edge ์ง€์›์„ ์œ„ํ•œ statusBarsPadding import๊ฐ€ ์ ์ ˆํžˆ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


59-59: ์ƒํƒœ๋ฐ” ํŒจ๋”ฉ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

WableAppBar์— statusBarsPadding()์„ ์ถ”๊ฐ€ํ•˜์—ฌ edge-to-edge ๋ชจ๋“œ์—์„œ ์ƒํƒœ๋ฐ”์™€ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.


68-72: ์กฐ๊ฑด๋ถ€ ํŒจ๋”ฉ ๋กœ์ง์ด ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

Top bar ํ‘œ์‹œ ์—ฌ๋ถ€์— ๋”ฐ๋ผ innerPadding์„ ์กฐ๊ฑด๋ถ€๋กœ ์ ์šฉํ•˜์—ฌ ์ปจํ…์ธ ๊ฐ€ ์ ์ ˆํžˆ ๋ฐฐ์น˜๋˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. Top bar๊ฐ€ ํ‘œ์‹œ๋  ๋•Œ๋Š” ํŒจ๋”ฉ์„ ์ ์šฉํ•˜๊ณ , ์ˆจ๊ฒจ์งˆ ๋•Œ๋Š” ์ „์ฒด ํ™”๋ฉด์„ ์‚ฌ์šฉํ•˜๋Š” ๋กœ์ง์ด ์˜ฌ๋ฐ”๋ฆ…๋‹ˆ๋‹ค.


90-90: Activity ์‹œ์ž‘ ๋ฐฉ์‹์ด ๊ฐ„์†Œํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ContextCompat.startActivity ๋Œ€์‹  localContext.startActivity๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. localContext๋Š” ์œ ํšจํ•œ Context์ด๋ฏ€๋กœ ์ด ๋ณ€๊ฒฝ์€ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.

Also applies to: 94-94, 110-110

@chanubc chanubc added โญ [FEAT] ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๐Ÿป ์ฐฌ์šฐ ์ฐจ์€์šฐ โ˜• [COMPOSE] ์ปดํฌ์ฆˆ ui labels Oct 18, 2025
Copy link

@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: 2

๐Ÿงน Nitpick comments (1)
feature/main/src/main/res/layout/activity_main.xml (1)

2-5: ๋ถˆํ•„์š”ํ•œ ๋ ˆ์ด์•„์›ƒ ์ค‘์ฒฉ์„ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RelativeLayout์ด ๋‹จ์ผ ConstraintLayout์„ ๋ž˜ํ•‘ํ•˜๋Š” ๊ตฌ์กฐ๋Š” ๋ถˆํ•„์š”ํ•œ ๋ทฐ ๊ณ„์ธต ๊นŠ์ด๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ConstraintLayout์„ ๋ฃจํŠธ๋กœ ์‚ฌ์šฉํ•˜๊ณ  status_bar_background์™€ ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ชจ๋‘ ์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋ฉด ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

๋ ˆ์ด์•„์›ƒ ๊ตฌ์กฐ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:id="@+id/status_bar_background"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/fcv_main"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toTopOf="@id/divider_main_bnv"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <!-- ๋‚˜๋จธ์ง€ ๋ทฐ๋“ค... -->

</androidx.constraintlayout.widget.ConstraintLayout>

Also applies to: 12-14

๐Ÿ“œ Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

๐Ÿ“ฅ Commits

Reviewing files that changed from the base of the PR and between 4738992 and d63fb76.

๐Ÿ“’ Files selected for processing (3)
  • .github/workflows/develop_PR_builder.yml (1 hunks)
  • feature/main/src/main/java/com/teamwable/main/MainActivity.kt (5 hunks)
  • feature/main/src/main/res/layout/activity_main.xml (1 hunks)
๐Ÿšง Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/develop_PR_builder.yml
๐Ÿงฐ Additional context used
๐Ÿงฌ Code graph analysis (1)
feature/main/src/main/java/com/teamwable/main/MainActivity.kt (2)
core/ui/src/main/java/com/teamwable/ui/extensions/FragmentExt.kt (1)
  • statusBarModeOf (56-58)
core/ui/src/main/java/com/teamwable/ui/extensions/ContextExt.kt (1)
  • statusBarModeOf (101-107)
โฐ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: PR Checker
๐Ÿ”‡ Additional comments (3)
feature/main/src/main/java/com/teamwable/main/MainActivity.kt (3)

67-67: LGTM! enableEdgeToEdge() ํ˜ธ์ถœ ์œ„์น˜๊ฐ€ ์˜ฌ๋ฐ”๋ฆ…๋‹ˆ๋‹ค.

super.onCreate() ์ด์ „์— enableEdgeToEdge()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด Android ๊ณต์‹ ๊ฐ€์ด๋“œ์— ๋งž์Šต๋‹ˆ๋‹ค.


227-227: ์ƒํƒœ๋ฐ” ์ƒ‰์ƒ ๊ด€๋ฆฌ ๋ฐฉ์‹ ๋ณ€๊ฒฝ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

Window ๊ธฐ๋ฐ˜์˜ statusBarColorOf()์—์„œ View ๊ธฐ๋ฐ˜์˜ setStatusBarColor()๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ edge-to-edge UI์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ ํ•ฉํ•˜์ง€๋งŒ, activity_main.xml์˜ status_bar_background View๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด์•ผ ์ •์ƒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

Also applies to: 234-234


110-110: ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ž…๋‹ˆ๋‹ค. navGraph ์„ค์ • ์ค‘๋ณต ์šฐ๋ ค๋Š” ํ•ด์†Œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

XML์˜ FragmentContainerView์— app:navGraph ์†์„ฑ์ด ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ฝ”๋“œ์˜ navController.setGraph(R.navigation.graph_main) ํ˜ธ์ถœ์€ ํ•„์ˆ˜์ ์ด๊ณ  ์ค‘๋ณต์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Š” NavHostFragment ์„ค์ •์—์„œ ํ‘œ์ค€์ ์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

Comment on lines +7 to +10
<View
android:id="@+id/status_bar_background"
android:layout_width="match_parent"
android:layout_height="0dp" />
Copy link

Choose a reason for hiding this comment

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

โš ๏ธ Potential issue | ๐Ÿ”ด Critical

์ƒํƒœ๋ฐ” ๋ฐฐ๊ฒฝ View์˜ ๋†’์ด๊ฐ€ 0dp๋กœ ์„ค์ •๋˜์–ด ๋ Œ๋”๋ง๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

status_bar_background View์˜ ๋†’์ด๊ฐ€ 0dp๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. MainActivity.kt์—์„œ ์ด View์— ์ƒ‰์ƒ์„ ์„ค์ •ํ•˜์ง€๋งŒ ํšจ๊ณผ๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ diff๋ฅผ ์ ์šฉํ•˜์—ฌ ์ƒํƒœ๋ฐ” ๋†’์ด๋งŒํผ ํ‘œ์‹œ๋˜๋„๋ก ์ˆ˜์ •ํ•˜์„ธ์š”:

     <View
         android:id="@+id/status_bar_background"
         android:layout_width="match_parent"
-        android:layout_height="0dp" />
+        android:layout_height="wrap_content"
+        android:layout_alignParentTop="true"
+        android:fitsSystemWindows="true" />

๋˜๋Š” insets์„ ํ™œ์šฉํ•˜์—ฌ ๋™์ ์œผ๋กœ ์ƒํƒœ๋ฐ” ๋†’์ด๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๊ณ ๋ คํ•ด์ฃผ์„ธ์š”.

๐Ÿ“ Committable suggestion

โ€ผ๏ธ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<View
android:id="@+id/status_bar_background"
android:layout_width="match_parent"
android:layout_height="0dp" />
<View
android:id="@+id/status_bar_background"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:fitsSystemWindows="true" />
๐Ÿค– Prompt for AI Agents
In feature/main/src/main/res/layout/activity_main.xml lines 7-10, the
status_bar_background View has android:layout_height="0dp" so it doesn't render;
change the layout to give it a real height (e.g., replace 0dp with wrap_content
or reference a dimension like @dimen/status_bar_height) and add a
status_bar_height dimen (or compute it at runtime) OR remove the fixed height
and instead apply system window insets in MainActivity (use
WindowInsets/WindowInsetsCompat to set the view's height or top padding to the
status bar inset) so the background covers the status bar area.

android:layout_width="match_parent"
android:layout_height="match_parent"
app:constraint_referenced_ids="divider_main_bnv, bnv_main" />
android:fitsSystemWindows="true">
Copy link

Choose a reason for hiding this comment

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

โš ๏ธ Potential issue | ๐ŸŸ  Major

fitsSystemWindows="true"๊ฐ€ enableEdgeToEdge()์™€ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

enableEdgeToEdge()๋Š” ์ฝ˜ํ…์ธ ๊ฐ€ ์‹œ์Šคํ…œ ๋ฐ” ์•„๋ž˜๊นŒ์ง€ ํ™•์žฅ๋˜๋„๋ก ์„ค์ •ํ•˜์ง€๋งŒ, fitsSystemWindows="true"๋Š” insets์„ ์†Œ๋น„ํ•˜๊ณ  ํŒจ๋”ฉ์„ ์ถ”๊ฐ€ํ•˜์—ฌ edge-to-edge๋ฅผ ๋ฌดํšจํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ diff๋ฅผ ์ ์šฉํ•˜์—ฌ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜์„ธ์š”:

     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:fitsSystemWindows="true">
+        android:clipToPadding="false">

๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ WindowInsetsCompat๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ณ„ ๋ทฐ์— insets์„ ์ˆ˜๋™์œผ๋กœ ์ ์šฉํ•˜์„ธ์š”.

๐Ÿ“ Committable suggestion

โ€ผ๏ธ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
android:fitsSystemWindows="true">
android:layout_width="match_parent"
android:layout_height="match_parent">
๐Ÿค– Prompt for AI Agents
In feature/main/src/main/res/layout/activity_main.xml around line 15, the layout
has android:fitsSystemWindows="true" which conflicts with enableEdgeToEdge();
remove or set this attribute to false so the content can extend beneath system
bars, and if specific views still need inset handling apply WindowInsetsCompat
in code to consume/apply insets (add padding/margin) on those views as needed.

Copy link
Collaborator

@sohyun127 sohyun127 left a comment

Choose a reason for hiding this comment

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

๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค!!๐Ÿ‘๐Ÿ‘๐Ÿ‘

Copy link

@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: 0

๐Ÿงน Nitpick comments (1)
feature/auth/src/main/java/com/teamwable/auth/LoginScreen.kt (1)

115-116: statusBarsPadding() ๊ตฌํ˜„์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฒ ์ด์Šค ์ „์ฒด์—์„œ statusBarsPadding() ์‚ฌ์šฉ์„ ํ™•์ธํ–ˆ์œผ๋ฉฐ, LoginScreen.kt ๋ผ์ธ 115์˜ ๊ตฌํ˜„์€ MainScreen.kt์˜ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. edge-to-edge ๋ ˆ์ด์•„์›ƒ ์ฒ˜๋ฆฌ๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๋ผ์ธ 116์˜ ๋นˆ ์ค„์„ ์ œ๊ฑฐํ•˜์—ฌ ์ฝ”๋“œ ์ •๋ฆฌ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“œ Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

๐Ÿ“ฅ Commits

Reviewing files that changed from the base of the PR and between d63fb76 and b690b2e.

๐Ÿ“’ Files selected for processing (1)
  • feature/auth/src/main/java/com/teamwable/auth/LoginScreen.kt (3 hunks)
โฐ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: PR Checker
๐Ÿ”‡ Additional comments (2)
feature/auth/src/main/java/com/teamwable/auth/LoginScreen.kt (2)

11-11: LGTM! Edge-to-edge ๊ตฌํ˜„์„ ์œ„ํ•œ ์˜ฌ๋ฐ”๋ฅธ import์ž…๋‹ˆ๋‹ค.

statusBarsPadding๊ณผ navigationBarsPadding์€ Android 15์˜ edge-to-edge UI๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ์ ์ ˆํ•œ Modifier์ž…๋‹ˆ๋‹ค.

Also applies to: 13-13


159-160: ํ•˜๋‹จ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ์ธ์…‹ ์ฒ˜๋ฆฌ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

navigationBarsPadding()์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ์˜์—ญ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์˜ ๊ธฐ์กด bottom = 54.dp ํŒจ๋”ฉ๊ณผ ํ•จ๊ป˜ ์ ์ ˆํ•œ ์—ฌ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์‚ฌํ•ญ์„ ๊ฒ€์ฆํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค:

  • ์ œ์Šค์ฒ˜ ๋‚ด๋น„๊ฒŒ์ด์…˜์ด ํ™œ์„ฑํ™”๋œ ๊ธฐ๊ธฐ์™€ ๋ฒ„ํŠผ ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ธฐ๊ธฐ ๋ชจ๋‘์—์„œ ํ•˜๋‹จ ์—ฌ๋ฐฑ์ด ์ž์—ฐ์Šค๋Ÿฌ์šด์ง€ ํ™•์ธ
  • ๊ฐ€๋กœ ๋ชจ๋“œ์—์„œ๋„ ๋ ˆ์ด์•„์›ƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ

@chanubc chanubc merged commit 53cd0e9 into develop Oct 19, 2025
2 checks passed
@chanubc chanubc deleted the feature/#183-android-15 branch October 19, 2025 14:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

โ˜• [COMPOSE] ์ปดํฌ์ฆˆ ui โญ [FEAT] ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๐Ÿป ์ฐฌ์šฐ ์ฐจ์€์šฐ

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] : android 15 ๋Œ€์‘

3 participants