Conversation
- 공통 figmaShadow 렌더링을 Compose dropShadow 기반으로 수정
Walkthrough하루 요약 상세 화면과 관련된 UI 컴포넌트들을 추가하고(오디오 플레이어, 캘린더, 세그먼트 등), 아이콘 리소스를 다수 추가했으며 그림자 효과 구현을 figmaShadow에서 dropShadow 체인으로 변경하고, Compose UI 툴링 의존성을 빌드에 추가했습니다. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (16)
composeApp/src/commonMain/composeResources/drawable/ic_report_unrecord.xml (1)
1-12: 동일 아이콘 이중 관리로 드리프트 위험이 있어요.
commonMain/androidMain에 같은 벡터를 각각 들고 가면, 추후 한쪽만 수정돼 UI 불일치가 생기기 쉬워요. 가능하면 단일 소스(예: 공통 리소스 기준)로 관리하거나 동기화 규칙을 명시해 두는 걸 추천합니다.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/commonMain/composeResources/drawable/ic_report_unrecord.xml` around lines 1 - 12, commonMain과 androidMain에 동일한 벡터(ic_report_unrecord.xml)를 중복으로 관리해 UI 드리프트 위험이 있으니 한 쪽을 단일 소스로 삼거나 동기화 규칙을 적용하세요; 해결 방법으로는 공통 소스(common ic_report_unrecord.xml)를 유지하고 androidMain의 중복 파일을 제거하거나 androidMain에선 공통 리소스를 참조(리소스 병합/심볼릭 참조 또는 Gradle 리소스 복사 작업 사용)하도록 변경하고, ic_report_unrecord.xml 파일명을 기준으로 중복 제거와 빌드 스크립트(예: 리소스 복사/검증)로 동기화 규칙을 강제하세요.composeApp/src/commonMain/composeResources/drawable/ic_uncheck.xml (1)
1-13: 리소스 중복 제거 검토 요청확인 결과,
composeApp/src/commonMain/composeResources/drawable/ic_uncheck.xml과composeApp/src/androidMain/res/drawable/ic_uncheck.xml의 내용이 byte-for-byte로 완전히 동일합니다 (MD5:c706feee5f5f5ec9dd610bcba3bb1bcd). 추가로 현재 코드베이스에서는 두 리소스 모두 사용되지 않고 있는 상태입니다.불필요한 중복을 정리하기 위해, 다음 중 하나를 진행하는 것을 권장합니다:
- Compose Multiplatform 리소스 체계에 통합 (
composeResources)- 또는 Android 기존 리소스로 단일화 (
androidMain/res)결정 후 미사용 파일은 제거해서 유지보수 부담을 줄이면 좋을 것 같습니다.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/commonMain/composeResources/drawable/ic_uncheck.xml` around lines 1 - 13, The two identical vector drawable resources ic_uncheck.xml in composeApp/src/commonMain/composeResources/drawable/ic_uncheck.xml and composeApp/src/androidMain/res/drawable/ic_uncheck.xml are duplicated and currently unused; decide whether to centralize the asset into the Compose Multiplatform resource system (keep and use composeApp/src/commonMain/composeResources/drawable/ic_uncheck.xml and remove the androidMain copy) or to consolidate it into the Android res folder (keep composeApp/src/androidMain/res/drawable/ic_uncheck.xml and remove the composeResources copy), update any resource references to point to the retained file, and delete the unused duplicate to eliminate redundancy.composeApp/build.gradle.kts (2)
52-52: 버전 카탈로그 사용 권장버전
1.10.1이 하드코딩되어 있습니다.gradle/libs.versions.toml에 이미compose-multiplatform = "1.10.1"이 정의되어 있으므로, 버전 카탈로그를 참조하면 향후 버전 업데이트 시 일관성을 유지할 수 있습니다.♻️ 버전 카탈로그 참조로 변경 제안
libs.versions.toml에 다음을 추가:[libraries] compose-ui-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "compose-multiplatform" } compose-ui-tooling = { module = "org.jetbrains.compose.ui:ui-tooling", version.ref = "compose-multiplatform" }그 후
build.gradle.kts에서:- implementation("org.jetbrains.compose.ui:ui-tooling-preview:1.10.1") + implementation(libs.compose.ui.tooling.preview)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/build.gradle.kts` at line 52, Replace the hardcoded dependency implementation("org.jetbrains.compose.ui:ui-tooling-preview:1.10.1") with a version-catalog reference; add the suggested entries to libs.versions.toml (compose-ui-tooling-preview and compose-ui-tooling referencing version.ref = "compose-multiplatform"), then update the build.gradle.kts line to use the catalog symbol (e.g. implementation(libs.composeUiToolingPreview)) so the compose-multiplatform version from the catalog is used consistently.
162-164: 동일하게 버전 카탈로그 참조 권장위와 동일하게 하드코딩된 버전을 버전 카탈로그로 변경하면 유지보수가 용이해집니다.
♻️ 수정 제안
- add("debugImplementation", "org.jetbrains.compose.ui:ui-tooling:1.10.1") + add("debugImplementation", libs.compose.ui.tooling)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/build.gradle.kts` around lines 162 - 164, Replace the hardcoded dependency string add("debugImplementation", "org.jetbrains.compose.ui:ui-tooling:1.10.1") with a version-catalog reference (e.g., use the libs alias for the Compose UI tooling artifact) so the version is managed from gradle/libs. Update the version catalog (settings or libs.versions.toml) to include the compose UI tooling entry (e.g., compose.ui.tooling = "org.jetbrains.compose.ui:ui-tooling:1.10.1") if it doesn't exist, then change the add call to use that catalog alias (referencing libs.compose.ui.tooling or the project's chosen alias) instead of the hardcoded string.composeApp/src/androidMain/res/drawable/ic_rightarrow_date.xml (1)
1-9:commonMain/composeResources와 중복
ic_leftarrow_date.xml과 마찬가지로, Compose Multiplatform 프로젝트에서 이androidMain버전은 불필요할 수 있습니다. Context snippet에서 확인된 것처럼commonMain/composeResources/drawable/ic_rightarrow_date.xml과 완전히 동일합니다.여러 androidMain drawable들(
ic_check,ic_leftarrow_date,ic_rightarrow_date,ic_button_play)이 동일한 패턴을 보이므로, 일괄적으로 정리하는 것을 권장드립니다.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/androidMain/res/drawable/ic_rightarrow_date.xml` around lines 1 - 9, This Android-specific drawable ic_rightarrow_date.xml duplicates the identical resource already provided in commonMain/composeResources/drawable/ic_rightarrow_date.xml; remove or stop shipping the androidMain copy (ic_rightarrow_date.xml) and ensure code references the common resource instead, and apply the same cleanup to the other duplicates (ic_leftarrow_date.xml, ic_check, ic_button_play) so only the commonMain/composeResources versions remain; if build/resource merging requires it, delete the androidMain file(s) or replace them with lightweight platform-specific overrides that forward to the common resource.composeApp/src/androidMain/res/drawable/ic_leftarrow_date.xml (1)
1-9:commonMain/composeResources와 중복 리소스
ic_check.xml과 동일한 상황입니다. Compose Multiplatform은commonMain/composeResources/drawable/에서 리소스를 resolve하므로, 이androidMain버전이 실제로 필요한지 확인이 필요합니다.레거시 Android View에서 사용하지 않는다면 중복 리소스 제거를 고려해 주세요.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/androidMain/res/drawable/ic_leftarrow_date.xml` around lines 1 - 9, 중복 리소스인 ic_leftarrow_date.xml(androidMain drawable) 파일이 commonMain/composeResources/drawable에 이미 존재하는지 확인하고, 레거시 Android View에서 해당 androidMain 버전을 참조하고 있지 않다면 androidMain 버전을 삭제하고 commonMain 버전만 사용되도록 정리하세요; 필요 시 ic_leftarrow_date 및 ic_check 리소스의 참조를 전체 코드베이스(예: XML 레이아웃, Compose 호출, AndroidView 래퍼 등)에서 검색해 실제 사용처가 있는지 확인하고, 사용 중이라면 왜 androidMain 전용이 필요한지 주석으로 남기거나 리소스 통합 후 빌드 및 리소스 병합 결과를 확인하여 아이콘이 정상 표시되는지 검증하세요.composeApp/src/androidMain/res/drawable/ic_button_play.xml (1)
1-9:commonMain/composeResources와 중복 리소스Context snippet에서 확인된 것처럼,
commonMain/composeResources/drawable/ic_button_play.xml과 완전히 동일한 파일입니다.AudioPlayerCard.kt는 Compose resource system을 사용하므로 이androidMain버전은 불필요합니다.다른 중복 drawable들과 함께 정리를 고려해 주세요.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/androidMain/res/drawable/ic_button_play.xml` around lines 1 - 9, This Android-specific drawable ic_button_play.xml duplicates the commonMain/composeResources copy and is unnecessary because AudioPlayerCard.kt uses the Compose resource system; remove the file from androidMain/res/drawable (ic_button_play.xml) so the build will pick up the shared commonMain/composeResources version, and verify there are no other duplicate drawables in androidMain (remove or consolidate any identical files) and ensure no platform-specific overrides rely on the removed file.composeApp/src/androidMain/res/drawable/ic_check.xml (1)
1-9: androidMain 버전의 ic_check.xml은 불필요합니다
Res.drawable.ic_check로 리소스를 참조하는 모든 코드가commonMain/composeResources/drawable/의 버전을 사용하고 있으며,R.drawable.ic_check형태의 안드로이드 기본 리소스 참조는 코드에서 찾을 수 없습니다. 두 파일의 내용이 동일하므로composeApp/src/androidMain/res/drawable/ic_check.xml은 삭제해도 무방합니다.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/androidMain/res/drawable/ic_check.xml` around lines 1 - 9, The android-specific duplicate drawable ic_check is redundant because all references use Res.drawable.ic_check from commonMain/composeResources/drawable/; remove the file composeApp/src/androidMain/res/drawable/ic_check.xml to avoid duplication, ensure no code references R.drawable.ic_check in Android-specific code, and run a clean build to verify the project picks up the commonMain drawable.composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/MealSegmentControl.kt (3)
27-27: KMP 프로젝트에서 잘못된 Preview import 사용
commonMain에서는org.jetbrains.compose.ui.tooling.preview.Preview를 사용해야 합니다.♻️ 제안된 수정
-import androidx.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.Preview🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/MealSegmentControl.kt` at line 27, The Preview import in MealSegmentControl.kt is wrong for commonMain; replace the Android-specific import androidx.compose.ui.tooling.preview.Preview with the multiplatform one org.jetbrains.compose.ui.tooling.preview.Preview so any `@Preview` annotations (e.g., on the MealSegmentControl preview function) use the correct KMP preview provider; update the import statement at the top of MealSegmentControl.kt accordingly.
105-107: Preview 함수를 private으로 변경다른 파일의 Preview 함수들과 일관성을 위해
private으로 선언하는 것이 좋습니다.♻️ 제안된 수정
`@Preview` `@Composable` -fun PreviewMealSegmentedControl() { +private fun PreviewMealSegmentedControl() {🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/MealSegmentControl.kt` around lines 105 - 107, The Preview composable function PreviewMealSegmentedControl should be made private for consistency with other preview functions; locate the PreviewMealSegmentedControl() `@Composable` function and change its visibility from public to private (i.e., declare it as private fun PreviewMealSegmentedControl()) so the preview remains available in the file but isn't exposed publicly.
49-53: selectedItem이 items에 없을 경우 방어 처리
indexOf가 -1을 반환하면xOffset이 음수가 되어 UI가 의도치 않게 렌더링될 수 있습니다. 현재 사용 패턴상 문제가 없어 보이지만, 방어적 코딩을 고려해 주세요.♻️ 제안된 수정
- val selectedIndex = items.indexOf(selectedItem) + val selectedIndex = items.indexOf(selectedItem).coerceAtLeast(0)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/MealSegmentControl.kt` around lines 49 - 53, The code uses selectedIndex = items.indexOf(selectedItem) and then computes xOffset = itemWidth * selectedIndex which can be negative if indexOf returns -1; change to a safe index before using it (e.g., compute a safeSelectedIndex by clamping the result of items.indexOf(selectedItem) to 0..items.lastIndex or defaulting to 0 when not found) and use that safeSelectedIndex when computing xOffset in animateDpAsState; also ensure you handle the empty-items case before dividing by items.size (e.g., early return or guard) so itemWidth computation is safe.composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/SpecialNoteSection.kt (2)
79-83: Preview 함수 포맷팅 수정닫는 괄호의 위치가 일관되지 않습니다.
♻️ 제안된 수정
SpecialNoteSection( note = "무릎통증", description = "어제부터 있던 무릎통증이 있어요", - statusIcon = painterResource(Res.drawable.ic_report_attention) - ) - + statusIcon = painterResource(Res.drawable.ic_report_attention), + ) }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/SpecialNoteSection.kt` around lines 79 - 83, The SpecialNoteSection preview call has inconsistent closing-parenthesis placement and missing trailing commas; update the call to add a trailing comma after the statusIcon argument (painterResource(Res.drawable.ic_report_attention),) and place the closing parenthesis on its own line aligned with the start of SpecialNoteSection so the parameters (note, description, statusIcon) are each on their own lines and the closing parenthesis is consistently formatted.
22-22: 사용되지 않는 import
ic_report_normal이 import되었지만 파일 내에서 사용되지 않습니다.♻️ 제안된 수정
-import com.konkuk.medicarecall.resources.ic_report_normal🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/SpecialNoteSection.kt` at line 22, The file imports a resource named ic_report_normal that is not used; remove the unused import statement (ic_report_normal) from SpecialNoteSection.kt to clean up unused references and avoid compiler warnings, ensuring no other references to ic_report_normal exist in the SpecialNoteSection composable or related functions before deleting it.composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/common/component/TopAppBar.kt (1)
21-22: 중복 import 정리Line 21의 wildcard import(
*)가 이미ic_arrow_big_back을 포함하므로, Line 22의 명시적 import는 불필요합니다.♻️ 제안된 수정
import com.konkuk.medicarecall.resources.Res import com.konkuk.medicarecall.resources.* -import com.konkuk.medicarecall.resources.ic_arrow_big_back🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/common/component/TopAppBar.kt` around lines 21 - 22, Remove the redundant explicit import of ic_arrow_big_back since com.konkuk.medicarecall.resources.* already imports it; in TopAppBar.kt delete the specific import line for ic_arrow_big_back and keep the wildcard import (or replace the wildcard with explicit imports if you prefer explicit-only imports) to eliminate the duplicate import.composeApp/src/commonMain/composeResources/drawable/ic_report_attention.xml (1)
1-13: 중복된 아이콘 리소스 정리 검토해도 좋겠어요
ic_report_attention.xml이commonMain/composeResources/와androidMain/res/drawable/양쪽에 동일한 내용으로 존재하네요. Compose Multiplatform 프로젝트에서는 보통commonMain/composeResources/의 리소스 하나면 충분하니까,androidMain버전 제거를 한 번 검토해 보시면 어떨까요?🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/commonMain/composeResources/drawable/ic_report_attention.xml` around lines 1 - 13, Duplicate vector drawable ic_report_attention.xml exists in both commonMain/composeResources and androidMain/res/drawable; remove the redundant Android-specific copy and keep the shared Compose resource to avoid duplication. Locate the resource named ic_report_attention.xml in androidMain/res/drawable and delete it (or replace any platform-specific references to point to the commonMain/composeResources version), then run a build to ensure no missing-resource references and update any import/resource qualifiers if necessary. If there are any Android-only overrides required, consolidate differences into the common resource or create a single platform-specific variant with a clear name. Ensure the remaining resource is referenced by its original name from Compose Multiplatform code and Android manifests/layouts.composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/CareCallSummary.kt (1)
28-36:isTaken파라미터가 실제 렌더링에 쓰이지 않아 API 의미가 깨져 있어요.현재는 전달값과 무관하게 동일하게 그려져서 상태 동기화 포인트가 사라집니다. 쓰지 않을 거면 시그니처에서 제거하는 쪽이 안전합니다.
♻️ 제안 수정안
fun CareCallSummary( modifier: Modifier = Modifier, meal: String, sleep: String, statusIcon: Painter? = null, tagIcon: Painter? = null, - medicines: List<MedicineUiState>, - isTaken: Boolean, + medicines: List<MedicineUiState>, ) {호출부(
composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/screen/CallDetailScreen.kt)도 함께 정리:CareCallSummary( meal = "된장찌개에 밥", medicines = mockMedicines, - isTaken = true, sleep = "충분히 수면", statusIcon = painterResource(Res.drawable.ic_report_normal), tagIcon = painterResource(Res.drawable.ic_check), )Also applies to: 107-134
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/CareCallSummary.kt` around lines 28 - 36, The CareCallSummary composable currently accepts an isTaken parameter that isn't used in rendering, breaking the API contract; either remove isTaken from the CareCallSummary signature and update all call sites (e.g., the CallDetailScreen composable) to stop passing it, or incorporate isTaken into the UI (for example, toggle a visual state or pass it down to Medicine item rendering) so the prop affects output—make the change consistently across CareCallSummary and its callers (update parameter list and invocation sites, e.g., CallDetailScreen) so the API and rendering stay synchronized.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/AudioPlayerCard.kt`:
- Around line 102-105: The Icon in AudioPlayerCard currently uses a fixed
contentDescription "Play/Stop"; change it to a state-based description so screen
readers announce the current action — e.g., compute contentDescription = if
(isPlaying) "Stop" else "Play" (or use appropriate boolean/enum like
isPlaying/playbackState) and pass that variable into the Icon(contentDescription
= ...); prefer using string resources for localization if available.
In
`@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/SpecialNoteSection.kt`:
- Line 18: The file imports the Android-only Preview annotation
(androidx.compose.ui.tooling.preview.Preview) which is invalid in commonMain;
replace that import with the multiplatform Preview
(org.jetbrains.compose.ui.tooling.preview.Preview) in SpecialNoteSection.kt and
make the same replacement in CallDetailScreen.kt, CareCallSummary.kt,
AudioPlayerCard.kt, DailyCalendar.kt, and MealSegmentControl.kt so all preview
usages reference the org.jetbrains.compose UI Preview; search for any remaining
androidx.compose.ui.tooling.preview.Preview occurrences and update them to
org.jetbrains.compose.ui.tooling.preview.Preview to keep commonMain compilable.
In
`@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/screen/CallDetailScreen.kt`:
- Around line 32-35: CallDetailScreen currently wires the calendar "previous"
arrow to the screen-level onBack handler causing the arrow to navigate away;
change the handler used by the calendar previous-arrow inside CallDetailScreen
so it performs date navigation instead of calling onBack. Concretely, remove the
onBack invocation from the calendar-left-arrow click lambda and either call the
existing date-state updater (e.g., viewModel.changeDate(-1) or call an
onPreviousDate/onChangeDate(date) function) or add a new onPreviousDate:
()->Unit parameter to CallDetailScreen and invoke that; ensure the app bar
back-button still calls onBack so the two controls no longer conflict.
---
Nitpick comments:
In `@composeApp/build.gradle.kts`:
- Line 52: Replace the hardcoded dependency
implementation("org.jetbrains.compose.ui:ui-tooling-preview:1.10.1") with a
version-catalog reference; add the suggested entries to libs.versions.toml
(compose-ui-tooling-preview and compose-ui-tooling referencing version.ref =
"compose-multiplatform"), then update the build.gradle.kts line to use the
catalog symbol (e.g. implementation(libs.composeUiToolingPreview)) so the
compose-multiplatform version from the catalog is used consistently.
- Around line 162-164: Replace the hardcoded dependency string
add("debugImplementation", "org.jetbrains.compose.ui:ui-tooling:1.10.1") with a
version-catalog reference (e.g., use the libs alias for the Compose UI tooling
artifact) so the version is managed from gradle/libs. Update the version catalog
(settings or libs.versions.toml) to include the compose UI tooling entry (e.g.,
compose.ui.tooling = "org.jetbrains.compose.ui:ui-tooling:1.10.1") if it doesn't
exist, then change the add call to use that catalog alias (referencing
libs.compose.ui.tooling or the project's chosen alias) instead of the hardcoded
string.
In `@composeApp/src/androidMain/res/drawable/ic_button_play.xml`:
- Around line 1-9: This Android-specific drawable ic_button_play.xml duplicates
the commonMain/composeResources copy and is unnecessary because
AudioPlayerCard.kt uses the Compose resource system; remove the file from
androidMain/res/drawable (ic_button_play.xml) so the build will pick up the
shared commonMain/composeResources version, and verify there are no other
duplicate drawables in androidMain (remove or consolidate any identical files)
and ensure no platform-specific overrides rely on the removed file.
In `@composeApp/src/androidMain/res/drawable/ic_check.xml`:
- Around line 1-9: The android-specific duplicate drawable ic_check is redundant
because all references use Res.drawable.ic_check from
commonMain/composeResources/drawable/; remove the file
composeApp/src/androidMain/res/drawable/ic_check.xml to avoid duplication,
ensure no code references R.drawable.ic_check in Android-specific code, and run
a clean build to verify the project picks up the commonMain drawable.
In `@composeApp/src/androidMain/res/drawable/ic_leftarrow_date.xml`:
- Around line 1-9: 중복 리소스인 ic_leftarrow_date.xml(androidMain drawable) 파일이
commonMain/composeResources/drawable에 이미 존재하는지 확인하고, 레거시 Android View에서 해당
androidMain 버전을 참조하고 있지 않다면 androidMain 버전을 삭제하고 commonMain 버전만 사용되도록 정리하세요; 필요
시 ic_leftarrow_date 및 ic_check 리소스의 참조를 전체 코드베이스(예: XML 레이아웃, Compose 호출,
AndroidView 래퍼 등)에서 검색해 실제 사용처가 있는지 확인하고, 사용 중이라면 왜 androidMain 전용이 필요한지 주석으로
남기거나 리소스 통합 후 빌드 및 리소스 병합 결과를 확인하여 아이콘이 정상 표시되는지 검증하세요.
In `@composeApp/src/androidMain/res/drawable/ic_rightarrow_date.xml`:
- Around line 1-9: This Android-specific drawable ic_rightarrow_date.xml
duplicates the identical resource already provided in
commonMain/composeResources/drawable/ic_rightarrow_date.xml; remove or stop
shipping the androidMain copy (ic_rightarrow_date.xml) and ensure code
references the common resource instead, and apply the same cleanup to the other
duplicates (ic_leftarrow_date.xml, ic_check, ic_button_play) so only the
commonMain/composeResources versions remain; if build/resource merging requires
it, delete the androidMain file(s) or replace them with lightweight
platform-specific overrides that forward to the common resource.
In `@composeApp/src/commonMain/composeResources/drawable/ic_report_attention.xml`:
- Around line 1-13: Duplicate vector drawable ic_report_attention.xml exists in
both commonMain/composeResources and androidMain/res/drawable; remove the
redundant Android-specific copy and keep the shared Compose resource to avoid
duplication. Locate the resource named ic_report_attention.xml in
androidMain/res/drawable and delete it (or replace any platform-specific
references to point to the commonMain/composeResources version), then run a
build to ensure no missing-resource references and update any import/resource
qualifiers if necessary. If there are any Android-only overrides required,
consolidate differences into the common resource or create a single
platform-specific variant with a clear name. Ensure the remaining resource is
referenced by its original name from Compose Multiplatform code and Android
manifests/layouts.
In `@composeApp/src/commonMain/composeResources/drawable/ic_report_unrecord.xml`:
- Around line 1-12: commonMain과 androidMain에 동일한 벡터(ic_report_unrecord.xml)를
중복으로 관리해 UI 드리프트 위험이 있으니 한 쪽을 단일 소스로 삼거나 동기화 규칙을 적용하세요; 해결 방법으로는 공통 소스(common
ic_report_unrecord.xml)를 유지하고 androidMain의 중복 파일을 제거하거나 androidMain에선 공통 리소스를
참조(리소스 병합/심볼릭 참조 또는 Gradle 리소스 복사 작업 사용)하도록 변경하고, ic_report_unrecord.xml 파일명을
기준으로 중복 제거와 빌드 스크립트(예: 리소스 복사/검증)로 동기화 규칙을 강제하세요.
In `@composeApp/src/commonMain/composeResources/drawable/ic_uncheck.xml`:
- Around line 1-13: The two identical vector drawable resources ic_uncheck.xml
in composeApp/src/commonMain/composeResources/drawable/ic_uncheck.xml and
composeApp/src/androidMain/res/drawable/ic_uncheck.xml are duplicated and
currently unused; decide whether to centralize the asset into the Compose
Multiplatform resource system (keep and use
composeApp/src/commonMain/composeResources/drawable/ic_uncheck.xml and remove
the androidMain copy) or to consolidate it into the Android res folder (keep
composeApp/src/androidMain/res/drawable/ic_uncheck.xml and remove the
composeResources copy), update any resource references to point to the retained
file, and delete the unused duplicate to eliminate redundancy.
In
`@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/common/component/TopAppBar.kt`:
- Around line 21-22: Remove the redundant explicit import of ic_arrow_big_back
since com.konkuk.medicarecall.resources.* already imports it; in TopAppBar.kt
delete the specific import line for ic_arrow_big_back and keep the wildcard
import (or replace the wildcard with explicit imports if you prefer
explicit-only imports) to eliminate the duplicate import.
In
`@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/CareCallSummary.kt`:
- Around line 28-36: The CareCallSummary composable currently accepts an isTaken
parameter that isn't used in rendering, breaking the API contract; either remove
isTaken from the CareCallSummary signature and update all call sites (e.g., the
CallDetailScreen composable) to stop passing it, or incorporate isTaken into the
UI (for example, toggle a visual state or pass it down to Medicine item
rendering) so the prop affects output—make the change consistently across
CareCallSummary and its callers (update parameter list and invocation sites,
e.g., CallDetailScreen) so the API and rendering stay synchronized.
In
`@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/MealSegmentControl.kt`:
- Line 27: The Preview import in MealSegmentControl.kt is wrong for commonMain;
replace the Android-specific import androidx.compose.ui.tooling.preview.Preview
with the multiplatform one org.jetbrains.compose.ui.tooling.preview.Preview so
any `@Preview` annotations (e.g., on the MealSegmentControl preview function) use
the correct KMP preview provider; update the import statement at the top of
MealSegmentControl.kt accordingly.
- Around line 105-107: The Preview composable function
PreviewMealSegmentedControl should be made private for consistency with other
preview functions; locate the PreviewMealSegmentedControl() `@Composable` function
and change its visibility from public to private (i.e., declare it as private
fun PreviewMealSegmentedControl()) so the preview remains available in the file
but isn't exposed publicly.
- Around line 49-53: The code uses selectedIndex = items.indexOf(selectedItem)
and then computes xOffset = itemWidth * selectedIndex which can be negative if
indexOf returns -1; change to a safe index before using it (e.g., compute a
safeSelectedIndex by clamping the result of items.indexOf(selectedItem) to
0..items.lastIndex or defaulting to 0 when not found) and use that
safeSelectedIndex when computing xOffset in animateDpAsState; also ensure you
handle the empty-items case before dividing by items.size (e.g., early return or
guard) so itemWidth computation is safe.
In
`@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/SpecialNoteSection.kt`:
- Around line 79-83: The SpecialNoteSection preview call has inconsistent
closing-parenthesis placement and missing trailing commas; update the call to
add a trailing comma after the statusIcon argument
(painterResource(Res.drawable.ic_report_attention),) and place the closing
parenthesis on its own line aligned with the start of SpecialNoteSection so the
parameters (note, description, statusIcon) are each on their own lines and the
closing parenthesis is consistently formatted.
- Line 22: The file imports a resource named ic_report_normal that is not used;
remove the unused import statement (ic_report_normal) from SpecialNoteSection.kt
to clean up unused references and avoid compiler warnings, ensuring no other
references to ic_report_normal exist in the SpecialNoteSection composable or
related functions before deleting it.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 18072bab-6bf6-4556-94ca-d32d77c2b515
⛔ Files ignored due to path filters (1)
composeApp/src/commonMain/composeResources/drawable/img_id_card.pngis excluded by!**/*.png
📒 Files selected for processing (27)
composeApp/build.gradle.ktscomposeApp/src/androidMain/res/drawable/ic_button_play.xmlcomposeApp/src/androidMain/res/drawable/ic_check.xmlcomposeApp/src/androidMain/res/drawable/ic_leftarrow_date.xmlcomposeApp/src/androidMain/res/drawable/ic_report_attention.xmlcomposeApp/src/androidMain/res/drawable/ic_report_normal.xmlcomposeApp/src/androidMain/res/drawable/ic_report_unrecord.xmlcomposeApp/src/androidMain/res/drawable/ic_rightarrow_date.xmlcomposeApp/src/androidMain/res/drawable/ic_uncheck.xmlcomposeApp/src/commonMain/composeResources/drawable/ic_button_play.xmlcomposeApp/src/commonMain/composeResources/drawable/ic_button_stop.xmlcomposeApp/src/commonMain/composeResources/drawable/ic_check.xmlcomposeApp/src/commonMain/composeResources/drawable/ic_leftarrow_date.xmlcomposeApp/src/commonMain/composeResources/drawable/ic_report_attention.xmlcomposeApp/src/commonMain/composeResources/drawable/ic_report_normal.xmlcomposeApp/src/commonMain/composeResources/drawable/ic_report_unrecord.xmlcomposeApp/src/commonMain/composeResources/drawable/ic_rightarrow_date.xmlcomposeApp/src/commonMain/composeResources/drawable/ic_uncheck.xmlcomposeApp/src/commonMain/composeResources/drawable/ic_unrecord.xmlcomposeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/common/component/TopAppBar.ktcomposeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/AudioPlayerCard.ktcomposeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/CareCallSummary.ktcomposeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/DailyCalendar.ktcomposeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/MealSegmentControl.ktcomposeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/SpecialNoteSection.ktcomposeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/screen/CallDetailScreen.ktcomposeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/theme/Effect.kt
| Icon( | ||
| painter = playStop, | ||
| contentDescription = "Play/Stop", | ||
| modifier = Modifier |
There was a problem hiding this comment.
재생 버튼 접근성 라벨을 상태 기반으로 바꿔주세요.
지금은 "Play/Stop" 고정이라 스크린리더가 현재 상태를 제대로 읽어주지 못합니다.
♿ 제안 수정안
Icon(
painter = playStop,
- contentDescription = "Play/Stop",
+ contentDescription = if (isPlaying) "정지" else "재생",
modifier = Modifier
.size(40.dp)
.clickable { onTogglePlay() },
tint = Color.Black,
)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/AudioPlayerCard.kt`
around lines 102 - 105, The Icon in AudioPlayerCard currently uses a fixed
contentDescription "Play/Stop"; change it to a state-based description so screen
readers announce the current action — e.g., compute contentDescription = if
(isPlaying) "Stop" else "Play" (or use appropriate boolean/enum like
isPlaying/playbackState) and pass that variable into the Icon(contentDescription
= ...); prefer using string resources for localization if available.
| import androidx.compose.ui.Modifier | ||
| import androidx.compose.ui.graphics.Color | ||
| import androidx.compose.ui.graphics.painter.Painter | ||
| import androidx.compose.ui.tooling.preview.Preview |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Check which Preview import is used across commonMain files
echo "=== Checking Preview imports in commonMain ==="
rg -n "import.*tooling.preview.Preview" composeApp/src/commonMain/ --type kotlinRepository: Medicare-Call/Medicare-Call-KMP
Length of output: 1095
🏁 Script executed:
#!/bin/bash
# Check if this is a KMP project and what Compose dependencies are being used
echo "=== Checking build.gradle.kts for multiplatform setup ==="
find composeApp -name "build.gradle.kts" -type f | head -5 | xargs cat | grep -A 5 -B 5 "multiplatform\|compose\|kotlin" | head -60
echo ""
echo "=== Checking if org.jetbrains.compose is declared ==="
find composeApp -name "build.gradle.kts" -type f | xargs grep -l "org.jetbrains.compose"
echo ""
echo "=== Checking Compose Multiplatform version/setup ==="
find . -name "gradle" -o -name "libs.versions.toml" | xargs cat 2>/dev/null | grep -i compose | head -10Repository: Medicare-Call/Medicare-Call-KMP
Length of output: 3243
🏁 Script executed:
#!/bin/bash
# Check if androidMain also uses Preview and what imports it has
echo "=== Checking Preview imports in androidMain ==="
rg -n "import.*tooling.preview.Preview" composeApp/src/androidMain/ --type kotlin 2>/dev/null || echo "No androidMain directory or no matches"
echo ""
echo "=== Verify the actual dependency in commonMain ==="
grep -A 2 -B 2 "ui-tooling-preview" composeApp/build.gradle.ktsRepository: Medicare-Call/Medicare-Call-KMP
Length of output: 423
KMP 프로젝트에서 잘못된 Preview import 사용
androidx.compose.ui.tooling.preview.Preview는 Android 전용입니다. 이 프로젝트는 Compose Multiplatform을 사용하므로 commonMain에서는 org.jetbrains.compose.ui.tooling.preview.Preview를 사용해야 합니다. 같은 문제가 CallDetailScreen.kt, CareCallSummary.kt, AudioPlayerCard.kt, DailyCalendar.kt, MealSegmentControl.kt에도 있으니 함께 수정하면 좋습니다.
♻️ 수정 사항
-import androidx.compose.ui.tooling.preview.Preview
+import org.jetbrains.compose.ui.tooling.preview.Preview📝 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.
| import androidx.compose.ui.tooling.preview.Preview | |
| import org.jetbrains.compose.ui.tooling.preview.Preview |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/SpecialNoteSection.kt`
at line 18, The file imports the Android-only Preview annotation
(androidx.compose.ui.tooling.preview.Preview) which is invalid in commonMain;
replace that import with the multiplatform Preview
(org.jetbrains.compose.ui.tooling.preview.Preview) in SpecialNoteSection.kt and
make the same replacement in CallDetailScreen.kt, CareCallSummary.kt,
AudioPlayerCard.kt, DailyCalendar.kt, and MealSegmentControl.kt so all preview
usages reference the org.jetbrains.compose UI Preview; search for any remaining
androidx.compose.ui.tooling.preview.Preview occurrences and update them to
org.jetbrains.compose.ui.tooling.preview.Preview to keep commonMain compilable.
| fun CallDetailScreen( | ||
| modifier: Modifier = Modifier, | ||
| onBack: () -> Unit, | ||
| ) { |
There was a problem hiding this comment.
달력 이전 화살표가 화면 뒤로가기에 연결되어 있어 UX 오작동이 납니다.
Line 50에서 달력 화살표가 날짜 이동이 아니라 화면 이탈로 동작합니다. 상단 앱바 뒤로가기와 역할이 중복/충돌돼요.
💡 제안 수정안
fun CallDetailScreen(
modifier: Modifier = Modifier,
onBack: () -> Unit,
+ onPrevDate: () -> Unit = {},
+ onNextDate: () -> Unit = {},
) {
@@
DailyCalendar(
date = LocalDate(2026, 3, 17),
day = "오늘",
- onBack = {
- onBack()
- },
+ onBack = onPrevDate,
+ onNext = onNextDate,
)Also applies to: 47-53
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/screen/CallDetailScreen.kt`
around lines 32 - 35, CallDetailScreen currently wires the calendar "previous"
arrow to the screen-level onBack handler causing the arrow to navigate away;
change the handler used by the calendar previous-arrow inside CallDetailScreen
so it performs date navigation instead of calling onBack. Concretely, remove the
onBack invocation from the calendar-left-arrow click lambda and either call the
existing date-state updater (e.g., viewModel.changeDate(-1) or call an
onPreviousDate/onChangeDate(date) function) or add a new onPreviousDate:
()->Unit parameter to CallDetailScreen and invoke that; ensure the app bar
back-button still calls onBack so the two controls no longer conflict.
…ail-shadow-#15 # Conflicts: # composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/theme/Effect.kt
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@composeApp/build.gradle.kts`:
- Around line 165-167: 현재 build.gradle.kts에서 하드코딩된
"org.jetbrains.compose.ui:ui-tooling:1.10.1" (및 다른 위치의 "ui-tooling-preview") 의존성
문자열로 인해 버전 중복 위험이 있습니다; gradle/libs.versions.toml의 [libraries]에
compose-ui-tooling-preview 및 compose-ui-tooling 항목을 추가하고(version.ref =
"compose-multiplatform"), build.gradle.kts에서 add("debugImplementation",
"org.jetbrains.compose.ui:ui-tooling:1.10.1") 대신 버전 카탈로그
참조(libs.compose-ui-tooling 또는 라이브러리 이름에 맞게 조정)로 교체하여 모든 Compose 툴링 의존성을 중앙에서
관리하도록 수정하세요.
- Line 52: Replace the Android-only Preview import with the multiplatform
Compose Preview import in the affected composable files: change any import of
androidx.compose.ui.tooling.preview.Preview to
org.jetbrains.compose.ui.tooling.preview.Preview in the files containing the
composables CallDetailScreen, SpecialNoteSection, DailyCalendar,
CareCallSummary, AudioPlayerCard, and MealSegmentControl so the commonMain
preview dependency added in build.gradle.kts won't break iOS/Desktop builds.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 4e317aaa-0e7d-4ec2-aa43-ac46d2a5c3a8
📒 Files selected for processing (1)
composeApp/build.gradle.kts
| implementation(compose.material3) | ||
| implementation(compose.ui) | ||
| implementation(compose.components.resources) | ||
| implementation("org.jetbrains.compose.ui:ui-tooling-preview:1.10.1") |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# 목적:
# commonMain 에 Android 전용 Preview import가 남아있는지 확인
echo "[1] Android 전용 Preview import 검색"
rg -n --type=kotlin 'import androidx\.compose\.ui\.tooling\.preview\.Preview' composeApp/src/commonMain || true
echo
echo "[2] commonMain `@Preview` 사용 위치 확인"
rg -n --type=kotlin '@Preview' composeApp/src/commonMainRepository: Medicare-Call/Medicare-Call-KMP
Length of output: 2045
commonMain Preview 의존성 추가로 인한 멀티플랫폼 빌드 문제가 생길 수 있어요.
Line 52에서 CMP preview 의존성을 추가했는데, commonMain에 아직도 Android 전용 Preview import(androidx.compose.ui.tooling.preview.Preview)가 남아있어서 iOS/Desktop 빌드가 깨질 거예요.
다음 6개 파일에서 모두 org.jetbrains.compose.ui.tooling.preview.Preview로 바꿔야 합니다:
composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/screen/CallDetailScreen.kt(Line 14)composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/SpecialNoteSection.kt(Line 18)composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/DailyCalendar.kt(Line 21)composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/CareCallSummary.kt(Line 18)composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/AudioPlayerCard.kt(Line 23)composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/MealSegmentControl.kt(Line 27)
🔧 제안 수정
--- a/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/screen/CallDetailScreen.kt
+++ b/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/screen/CallDetailScreen.kt
@@
-import androidx.compose.ui.tooling.preview.Preview
+import org.jetbrains.compose.ui.tooling.preview.Preview--- a/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/SpecialNoteSection.kt
+++ b/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/SpecialNoteSection.kt
@@
-import androidx.compose.ui.tooling.preview.Preview
+import org.jetbrains.compose.ui.tooling.preview.Preview--- a/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/DailyCalendar.kt
+++ b/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/DailyCalendar.kt
@@
-import androidx.compose.ui.tooling.preview.Preview
+import org.jetbrains.compose.ui.tooling.preview.Preview--- a/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/CareCallSummary.kt
+++ b/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/CareCallSummary.kt
@@
-import androidx.compose.ui.tooling.preview.Preview
+import org.jetbrains.compose.ui.tooling.preview.Preview--- a/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/AudioPlayerCard.kt
+++ b/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/AudioPlayerCard.kt
@@
-import androidx.compose.ui.tooling.preview.Preview
+import org.jetbrains.compose.ui.tooling.preview.Preview--- a/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/MealSegmentControl.kt
+++ b/composeApp/src/commonMain/kotlin/com/konkuk/medicarecall/ui/feature/calldetail/component/MealSegmentControl.kt
@@
-import androidx.compose.ui.tooling.preview.Preview
+import org.jetbrains.compose.ui.tooling.preview.Preview🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@composeApp/build.gradle.kts` at line 52, Replace the Android-only Preview
import with the multiplatform Compose Preview import in the affected composable
files: change any import of androidx.compose.ui.tooling.preview.Preview to
org.jetbrains.compose.ui.tooling.preview.Preview in the files containing the
composables CallDetailScreen, SpecialNoteSection, DailyCalendar,
CareCallSummary, AudioPlayerCard, and MealSegmentControl so the commonMain
preview dependency added in build.gradle.kts won't break iOS/Desktop builds.
| // Compose preview tooling for Android Studio | ||
| add("debugImplementation", "org.jetbrains.compose.ui:ui-tooling:1.10.1") | ||
|
|
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# 목적:
# tooling 관련 하드코딩 버전 중복 및 중앙관리 여부 점검
echo "[1] build.gradle.kts 내 ui-tooling 하드코딩 확인"
rg -n 'ui-tooling(-preview)?:[0-9]+\.[0-9]+\.[0-9]+' composeApp/build.gradle.kts
echo
echo "[2] compose accessor 사용 여부 확인"
rg -n 'compose\.uiToolingPreview|compose\.uiTooling' composeApp/build.gradle.kts || true
echo
echo "[3] version catalog 내 tooling 정의 확인"
fd 'libs\.versions\.toml' . -x rg -n 'ui-tooling|tooling-preview|compose' {}Repository: Medicare-Call/Medicare-Call-KMP
Length of output: 1323
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "[1] Check full build.gradle.kts to understand compose plugin setup"
head -60 composeApp/build.gradle.kts | tail -20
echo
echo "[2] Check if compose.ui-tooling accessor exists"
grep -n "compose\.ui" composeApp/build.gradle.kts || echo "No direct compose.ui accessors found"
echo
echo "[3] Check gradle plugins and accessors available"
head -30 composeApp/build.gradle.kts
echo
echo "[4] Full libs.versions.toml content"
cat gradle/libs.versions.tomlRepository: Medicare-Call/Medicare-Call-KMP
Length of output: 7392
ui-tooling 버전 문자열이 중복 하드코딩돼서 추후 드리프트 위험이 있어요.
Line 52와 Line 166에서 같은 버전을 문자열로 직접 들고 있어서, Compose 버전 업할 때 한쪽만 바뀌는 실수가 생기기 쉽습니다.
가능하면 버전 카탈로그에 추가해서 통일하는 게 유지보수에 좋아요. gradle/libs.versions.toml의 [libraries] 섹션에 다음처럼 추가한 후 참조하면 됩니다:
compose-ui-tooling-preview = { group = "org.jetbrains.compose.ui", name = "ui-tooling-preview", version.ref = "compose-multiplatform" }
compose-ui-tooling = { group = "org.jetbrains.compose.ui", name = "ui-tooling", version.ref = "compose-multiplatform" }
이렇게 하면 버전 업 시 한 곳만 수정해도 모든 의존성이 따라가니까 드리프트 리스크를 없앨 수 있습니다.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@composeApp/build.gradle.kts` around lines 165 - 167, 현재 build.gradle.kts에서
하드코딩된 "org.jetbrains.compose.ui:ui-tooling:1.10.1" (및 다른 위치의
"ui-tooling-preview") 의존성 문자열로 인해 버전 중복 위험이 있습니다; gradle/libs.versions.toml의
[libraries]에 compose-ui-tooling-preview 및 compose-ui-tooling 항목을
추가하고(version.ref = "compose-multiplatform"), build.gradle.kts에서
add("debugImplementation", "org.jetbrains.compose.ui:ui-tooling:1.10.1") 대신 버전
카탈로그 참조(libs.compose-ui-tooling 또는 라이브러리 이름에 맞게 조정)로 교체하여 모든 Compose 툴링 의존성을
중앙에서 관리하도록 수정하세요.
🔗 관련 이슈
📙 작업 설명
API 연동 전 단계라 화면 데이터는 목데이터로 임시 적용했습니다.
기존에 따로 구현해둔 shadow는 삭제하였습니다.
📸 스크린샷 또는 시연 영상 (선택)
💬 추가 설명 or 리뷰 포인트 (선택)
Summary by CodeRabbit
새로운 기능
스타일