Skip to content

SCRUM-281 design: add like artist screen#63

Merged
gdaegeun539 merged 8 commits into
project-lyrics:developfrom
gdaegeun539:feature/SCRUM-281-like-artist-screen
Jul 5, 2026
Merged

SCRUM-281 design: add like artist screen#63
gdaegeun539 merged 8 commits into
project-lyrics:developfrom
gdaegeun539:feature/SCRUM-281-like-artist-screen

Conversation

@gdaegeun539

@gdaegeun539 gdaegeun539 commented Jul 5, 2026

Copy link
Copy Markdown
Member

Please check if the PR fulfills these requirements

  • The commit message follows our guidelines
  • Tests for the changes have been added (for bug fixes / features) - AI Agent generated

What kind of change does this PR introduce?

Select your one and delete others

  • Implement design

What is the current behavior?

You can also link to an open issue here

홈화면의 관심 아티스트를 모아보는 화면과 전체 아티스트를 조회하는 화면이 추가되지 않았습니다.

What is the new behavior (if this is a feature change)?

아래 두개의 화면을 구현합니다.

  • 관심 아티스트 모아보기 화면
  • 전체 아티스트 모아보기 화면

iOS 앱의 구현과 다르게, 이 화면들을 모달 다이얼로그 형태로 구현했습니다. 스크롤로 이 창들을 닫을 수 있지만 내부 스크롤과는 충돌하지 않습니다.

Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)

No breaking changes.

ScreenShots (If needed)

Light mode

Screenshot_20260705_153536_ DEV  Feelin Screenshot_20260705_153622_ DEV  Feelin Screenshot_20260705_232525_ DEV  Feelin

Dark mode

Screenshot_20260705_153614_ DEV  Feelin Screenshot_20260705_153617_ DEV  Feelin Screenshot_20260705_232531_ DEV  Feelin

Other information:

None

Summary by CodeRabbit

  • New Features

    • Added Home screen bottom-sheet flow for “My Favorite Artists” and “Search More” with in-sheet artist browsing and selection.
    • Introduced a reusable gray button component for consistent actions across the app.
  • Bug Fixes

    • Improved artist bubble tap behavior by applying proper sizing and making clicks conditional when an action is available.
    • Enhanced search-more results handling, including a guided empty state when no matches are found.
  • Tests

    • Added UI and unit tests covering the new bottom sheets and bottom-sheet state transitions.

Implement two bottom sheets for managing favorite artists on the home screen:
one to view all favorite artists, and another to search and add more artists
with interactive search filtering.

- Add MyFavoriteArtistsBottomSheet to list user's favorite artists
- Add SearchMoreFavoriteArtistBottomSheet with search debounce support
- Integrate bottom sheets into HomeScreen with state updates in HomeViewModel
- Add corresponding unit and instrumentation tests
Introduce HomeBottomSheetScaffold with a rectangular shape
and no drag handle to meet the home screen's design requirements.
Replace FeelinModalBottomSheet with the new scaffold in home-related sheets.
…Scaffold

Move full height modifier and status bar padding logic
from individual bottom sheets to the shared HomeBottomSheetScaffold component
to prevent content overlap with the status bar.
Remove custom duplicate item composables (MyFavoriteArtistItem, SearchArtistItem) in favor of the shared ArtistBubbleComponent.
Add the id property to ArtistBubbleComponentData.FavoriteArtistFindType
to support artist click handlers.
@gdaegeun539 gdaegeun539 requested a review from hyunjung-choi July 5, 2026 14:33
@gdaegeun539 gdaegeun539 self-assigned this Jul 5, 2026
@gdaegeun539 gdaegeun539 added the design 디자인 관련 수정 label Jul 5, 2026
@coderabbitai

coderabbitai Bot commented Jul 5, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 262ef32c-dc35-4372-b075-ea04016881f0

📥 Commits

Reviewing files that changed from the base of the PR and between e1486c3 and 7652fdb.

📒 Files selected for processing (2)
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsBottomSheet.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistBottomSheet.kt
🚧 Files skipped from review as they are similar to previous changes (2)
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsBottomSheet.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistBottomSheet.kt

📝 Walkthrough

Walkthrough

Adds home bottom-sheet state and wiring, two favorite-artist bottom-sheet implementations with their view models and tests, a shared bottom-sheet scaffold, artist bubble data updates, and a new gray design-system button.

Changes

Home Favorite Artist Bottom Sheets

Layer / File(s) Summary
Bottom sheet state and actions
.../home/HomeUiState.kt, .../home/HomeViewModel.kt, .../test/.../HomeUiStateTest.kt, .../test/.../HomeViewModelTest.kt
Adds HomeBottomSheetType, a bottomSheetType field, show/hide methods, and unit tests for defaults and state transitions.
Shared bottom-sheet scaffold
.../home/component/HomeBottomSheetScaffold.kt
Adds a reusable themed ModalBottomSheet scaffold with status-bar padding and a bottom spacer.
Artist bubble data and sizing
.../component/artist/ArtistBubbleComponentData.kt, .../component/artist/ArtistProfileComponent.kt
Adds id to FavoriteArtistFindType and updates find-mode bubble sizing and clickable composition.
My favorite artists bottom sheet
.../home/favorite/MyFavoriteArtistsBottomSheet.kt, .../home/favorite/MyFavoriteArtistsViewModel.kt, .../androidTest/.../MyFavoriteArtistsBottomSheetTest.kt
Adds the favorite-artists bottom sheet, its Hilt view model, and a UI test for the title and artist names.
Search more favorite artists bottom sheet
.../home/favorite/SearchMoreFavoriteArtistBottomSheet.kt, .../home/favorite/SearchMoreFavoriteArtistViewModel.kt, .../androidTest/.../SearchMoreFavoriteArtistBottomSheetTest.kt
Adds the search bottom sheet, debounced filtering view model, empty-state/browser action, results grid, and a UI test for the static texts.
HomeScreen bottom-sheet wiring
.../home/HomeScreen.kt
Wires ArtistRow actions to show the new sheets and renders them based on uiState.bottomSheetType.

FeelinGrayButton design system component

Layer / File(s) Summary
Gray button composable and preview
.../designsystem/component/FeelinGrayButton.kt
Adds a gray-themed Material3 button composable and preview variants.

Estimated code review effort: 3 (Moderate) | ~30 minutes

Possibly related PRs

  • project-lyrics/app-Android#61: Shares the Home bottom-sheet state and ArtistBubbleComponent/artist-data changes used by the new bottom-sheet flows.

Suggested reviewers: hyunjung-choi

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant HomeScreen
  participant HomeViewModel
  participant MyFavoriteArtistsBottomSheet
  participant SearchMoreFavoriteArtistBottomSheet

  User->>HomeScreen: tap "show all" / "search more"
  HomeScreen->>HomeViewModel: showMyFavoriteArtistsBottomSheet() / showSearchMoreArtistsBottomSheet()
  HomeViewModel-->>HomeScreen: uiState.bottomSheetType updated
  alt MyFavoriteArtists
    HomeScreen->>MyFavoriteArtistsBottomSheet: render(artists)
    User->>MyFavoriteArtistsBottomSheet: tap artist
    MyFavoriteArtistsBottomSheet-->>HomeScreen: onDismissRequest() + onArtistClick(id)
  else SearchMoreArtists
    HomeScreen->>SearchMoreFavoriteArtistBottomSheet: render()
    User->>SearchMoreFavoriteArtistBottomSheet: type query / tap artist
    SearchMoreFavoriteArtistBottomSheet-->>HomeScreen: onDismissRequest() + onArtistClick(id)
  end
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and matches the PR’s main change: adding the like/favorite artist screens and related home bottom sheets.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

♻️ Duplicate comments (1)
app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistBottomSheet.kt (1)

89-98: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Content description language mismatch.

"Close" here vs. "닫기" in MyFavoriteArtistsBottomSheet for the same icon/action. Consolidate to one consistent language for accessibility.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistBottomSheet.kt`
around lines 89 - 98, The close icon content description in
SearchMoreFavoriteArtistBottomSheet is using a different language than the same
action in MyFavoriteArtistsBottomSheet, so make them consistent for
accessibility. Update the Icon contentDescription in the
SearchMoreFavoriteArtistBottomSheet IconButton to match the wording used
elsewhere for the close action, and keep the label consistent across both bottom
sheet components.
🧹 Nitpick comments (5)
app/src/main/java/com/lyrics/feelin/presentation/view/component/artist/ArtistBubbleComponentData.kt (1)

28-32: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Inconsistent id nullability across sealed variants.

FavoriteArtistFindType.id uses Long = 0L while the sibling HomeFavoriteArtistType.id (line 19) uses Long? = null. Mixing sentinel-default and nullable-default patterns for the same conceptual field within one sealed interface is inconsistent and risks treating a real id of 0L as "unset" downstream.

♻️ Suggested consistency fix
     data class FavoriteArtistFindType(
         override val name: String,
         val imageUrl: String,
-        val id: Long = 0L,
+        val id: Long? = null,
     ) : ArtistBubbleComponentData
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@app/src/main/java/com/lyrics/feelin/presentation/view/component/artist/ArtistBubbleComponentData.kt`
around lines 28 - 32, Make the id handling consistent across the
ArtistBubbleComponentData sealed variants by aligning FavoriteArtistFindType.id
with HomeFavoriteArtistType.id. Update FavoriteArtistFindType to use the same
nullable/default pattern as the sibling type and adjust any call sites or
comparisons that assume 0L means unset, so downstream code treats the conceptual
field uniformly.
app/src/main/java/com/lyrics/feelin/core/designsystem/component/FeelinGrayButton.kt (1)

19-41: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider exposing enabled for reusability.

As a shared design-system component, FeelinGrayButton may benefit from an enabled: Boolean = true parameter passed through to Button, so future consumers can disable it without duplicating the composable.

♻️ Optional enhancement
 fun FeelinGrayButton(
     text: String,
     onClick: () -> Unit,
     modifier: Modifier = Modifier,
+    enabled: Boolean = true,
 ) {
     val feelinColors = LocalFeelinColors.current

     Button(
         onClick = onClick,
         modifier = modifier,
+        enabled = enabled,
         shape = RoundedCornerShape(8.dp),
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@app/src/main/java/com/lyrics/feelin/core/designsystem/component/FeelinGrayButton.kt`
around lines 19 - 41, Add an enabled parameter to FeelinGrayButton so it can be
reused in disabled states without duplicating the composable. Update the
FeelinGrayButton signature to accept enabled: Boolean = true and pass it through
to the underlying Button call, keeping existing defaults and behavior unchanged
for current callers.
app/src/androidTest/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistBottomSheetTest.kt (1)

15-31: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

No coverage for search/filter behavior.

The test only checks static strings render; it doesn't exercise typing a query, the debounced filtering, or the empty-state vs. grid toggle — the main new logic in this feature.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@app/src/androidTest/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistBottomSheetTest.kt`
around lines 15 - 31, The current SearchMoreFavoriteArtistBottomSheetTest only
verifies static text, so add coverage for the new search flow in
SearchMoreFavoriteArtistBottomSheet and SearchMoreFavoriteArtistViewModel.
Update the test to type into the search field, assert the debounced filtered
results update, and verify the UI switches between the empty state and the
artist grid as the query changes. Use the existing composables and test setup in
SearchMoreFavoriteArtistBottomSheetTest to locate the search input, then assert
the behavior driven by the view model’s filtering state.
app/src/androidTest/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsBottomSheetTest.kt (1)

16-46: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider testing click behavior, not just text rendering.

The test verifies displayed text but not that tapping an artist bubble calls onArtistClick with the correct id and dismisses the sheet — the actual interactive contract of this composable.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@app/src/androidTest/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsBottomSheetTest.kt`
around lines 16 - 46, The current MyFavoriteArtistsBottomSheet test only checks
that the title and artist names render, but it misses the composable’s
interaction contract. Update
MyFavoriteArtistsBottomSheetTest.sheetDisplaysTitleAndArtistNames to also tap an
artist bubble and verify the onArtistClick callback receives the correct artist
id and that onDismissRequest is invoked. Use the existing
MyFavoriteArtistsBottomSheet composable and the artist data setup in the test to
locate the clickable nodes and assert the callback behavior.
app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsBottomSheet.kt (1)

86-105: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Missing stable key in LazyVerticalGrid items; nullable-id fallback may collide.

Two related concerns:

  • items(artists) { ... } has no key, unlike SearchMoreFavoriteArtistBottomSheet's items(artists, key = { it.id }). Adding a key avoids unnecessary recomposition/animation glitches on list changes.
  • id = artist.id ?: 0L (line 97) silently maps every artist with a null id to 0L for display, while the click handler correctly no-ops for null ids (line 101). If more than one artist lacks an id, they'd all render with the same synthetic id (0L), and could collide with a real artist whose id is 0.
♻️ Suggested fix
-                items(artists) { artist ->
+                items(artists, key = { it.id ?: -1L }) { artist ->
Since `ArtistBubbleComponentData` internals aren't in this review's file set, please confirm whether `id` is used for anything beyond display (e.g., keying/animation) in `ArtistBubbleComponent`.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsBottomSheet.kt`
around lines 86 - 105, The LazyVerticalGrid in MyFavoriteArtistsBottomSheet uses
items(artists) without a stable key, and the FavoriteArtistFindType id fallback
to 0L can collide for null IDs. Update the items call to supply a key based on
artist.id (or another stable unique value) similar to
SearchMoreFavoriteArtistBottomSheet, and avoid mapping null ids to 0L in
ArtistBubbleComponentData if that id is used for identity, animation, or
selection; keep nulls distinct or confirm the component only uses it for
display.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsBottomSheet.kt`:
- Around line 64-73: The close icon’s contentDescription is inconsistent across
similar bottom sheets, so make `MyFavoriteArtistsBottomSheet` match the app’s
Korean accessibility copy. Update the `Icon` inside `IconButton` in this sheet
to use a Korean label consistent with the rest of the file and align it with the
same `CloseIcon` usage pattern found in `SearchMoreFavoriteArtistBottomSheet`.
- Around line 37-42: The Composable parameter order in
MyFavoriteArtistsBottomSheet is violating the lambda-last convention because the
optional viewModel follows onArtistClick and onDismissRequest. Reorder the
parameters so all lambda parameters come last, and apply the same fix in
SearchMoreFavoriteArtistBottomSheet to keep the Composable API consistent with
the project rule.

In
`@app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistBottomSheet.kt`:
- Around line 53-58: The parameter order in SearchMoreFavoriteArtistBottomSheet
violates the composable convention because the lambda parameters are not last.
Reorder the function signature so onArtistClick and onDismissRequest come after
modifier and viewModel, matching the pattern used by
MyFavoriteArtistsBottomSheet and the composable lambda-last rule in this
package.
- Around line 148-157: The “아티스트 요청하기” button in
SearchMoreFavoriteArtistBottomSheet currently launches an ACTION_VIEW intent
directly and can still fail with ActivityNotFoundException. Update the onClick
logic to use the existing Context.openExternalBrowser() helper instead of
context.startActivity(intent), so the fallback toast behavior is reused
consistently.

---

Duplicate comments:
In
`@app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistBottomSheet.kt`:
- Around line 89-98: The close icon content description in
SearchMoreFavoriteArtistBottomSheet is using a different language than the same
action in MyFavoriteArtistsBottomSheet, so make them consistent for
accessibility. Update the Icon contentDescription in the
SearchMoreFavoriteArtistBottomSheet IconButton to match the wording used
elsewhere for the close action, and keep the label consistent across both bottom
sheet components.

---

Nitpick comments:
In
`@app/src/androidTest/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsBottomSheetTest.kt`:
- Around line 16-46: The current MyFavoriteArtistsBottomSheet test only checks
that the title and artist names render, but it misses the composable’s
interaction contract. Update
MyFavoriteArtistsBottomSheetTest.sheetDisplaysTitleAndArtistNames to also tap an
artist bubble and verify the onArtistClick callback receives the correct artist
id and that onDismissRequest is invoked. Use the existing
MyFavoriteArtistsBottomSheet composable and the artist data setup in the test to
locate the clickable nodes and assert the callback behavior.

In
`@app/src/androidTest/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistBottomSheetTest.kt`:
- Around line 15-31: The current SearchMoreFavoriteArtistBottomSheetTest only
verifies static text, so add coverage for the new search flow in
SearchMoreFavoriteArtistBottomSheet and SearchMoreFavoriteArtistViewModel.
Update the test to type into the search field, assert the debounced filtered
results update, and verify the UI switches between the empty state and the
artist grid as the query changes. Use the existing composables and test setup in
SearchMoreFavoriteArtistBottomSheetTest to locate the search input, then assert
the behavior driven by the view model’s filtering state.

In
`@app/src/main/java/com/lyrics/feelin/core/designsystem/component/FeelinGrayButton.kt`:
- Around line 19-41: Add an enabled parameter to FeelinGrayButton so it can be
reused in disabled states without duplicating the composable. Update the
FeelinGrayButton signature to accept enabled: Boolean = true and pass it through
to the underlying Button call, keeping existing defaults and behavior unchanged
for current callers.

In
`@app/src/main/java/com/lyrics/feelin/presentation/view/component/artist/ArtistBubbleComponentData.kt`:
- Around line 28-32: Make the id handling consistent across the
ArtistBubbleComponentData sealed variants by aligning FavoriteArtistFindType.id
with HomeFavoriteArtistType.id. Update FavoriteArtistFindType to use the same
nullable/default pattern as the sibling type and adjust any call sites or
comparisons that assume 0L means unset, so downstream code treats the conceptual
field uniformly.

In
`@app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsBottomSheet.kt`:
- Around line 86-105: The LazyVerticalGrid in MyFavoriteArtistsBottomSheet uses
items(artists) without a stable key, and the FavoriteArtistFindType id fallback
to 0L can collide for null IDs. Update the items call to supply a key based on
artist.id (or another stable unique value) similar to
SearchMoreFavoriteArtistBottomSheet, and avoid mapping null ids to 0L in
ArtistBubbleComponentData if that id is used for identity, animation, or
selection; keep nulls distinct or confirm the component only uses it for
display.
🪄 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: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f3b5415e-4454-42f2-9ecf-cdee262ec6d7

📥 Commits

Reviewing files that changed from the base of the PR and between 5de533d and e1486c3.

📒 Files selected for processing (15)
  • app/src/androidTest/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsBottomSheetTest.kt
  • app/src/androidTest/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistBottomSheetTest.kt
  • app/src/main/java/com/lyrics/feelin/core/designsystem/component/FeelinGrayButton.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/component/artist/ArtistBubbleComponentData.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/component/artist/ArtistProfileComponent.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/HomeScreen.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/HomeUiState.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/HomeViewModel.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/component/HomeBottomSheetScaffold.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsBottomSheet.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/MyFavoriteArtistsViewModel.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistBottomSheet.kt
  • app/src/main/java/com/lyrics/feelin/presentation/view/home/favorite/SearchMoreFavoriteArtistViewModel.kt
  • app/src/test/java/com/lyrics/feelin/presentation/view/home/HomeUiStateTest.kt
  • app/src/test/java/com/lyrics/feelin/presentation/view/home/HomeViewModelTest.kt

Move onDismissRequest parameter to the end with a default value to match Compose conventions.
Clean up imports and use openExternalBrowser extension for Google Form link.
Update close icon content description.
@gdaegeun539

Copy link
Copy Markdown
Member Author

No actionable comments were generated in the recent review. 🎉

병합하겠습니다. Codex 리뷰는 첫 리뷰에 통과했습니다.

@gdaegeun539 gdaegeun539 merged commit a9aeeec into project-lyrics:develop Jul 5, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

design 디자인 관련 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant