-
Notifications
You must be signed in to change notification settings - Fork 10
kotlin 2.3.0 structure migration #320
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@CodeRabbit review |
✅ Actions performedReview triggered.
|
WalkthroughThis PR restructures the sample app from a single Changes
Possibly related PRs
Suggested reviewers
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing touches
🧪 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 8
🧹 Nitpick comments (6)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/actions/NavActionReplace.kt (1)
1-1: LGTM! Well-structured navigation destination.The renaming from
NavReplacetoNavActionReplaceimproves consistency with the new project structure. The navigation setup correctly demonstrates the replace action with proper controller configuration and destination registration.Optional: Consider updating the nav controller key for consistency
For naming consistency with the renamed destination, you might update the key on line 24:
val nc = rememberNavController( - key = "Replace nav controller", + key = "NavActionReplace nav controller", startDestination = NavActionReplaceScreen1, )This is purely cosmetic and doesn't affect functionality.
Also applies to: 20-41
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/data/NavDataFreeArgs.kt (1)
95-95: Consider usingvalinstead ofvar.The
argsvariable is assigned once and never reassigned. Following Kotlin best practices, declare it asvalfor immutability.🔎 Apply this diff:
- var args = freeArgs<Any>() + val args = freeArgs<Any>()sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/actions/NavActionRoute.kt (1)
137-137: Consider documenting or removing the unused generic type parameter.The
<String>generic type parameter onNavActionRouteScreen3doesn't appear to be utilized within the destination's composable body. If this is intentional for demonstration purposes, consider adding a comment explaining it. Otherwise, it could be removed for clarity.🔎 View suggested change if the type parameter is not needed:
-private val NavActionRouteScreen3 by navDestination<String> { +private val NavActionRouteScreen3 by navDestination {sample/shared/build.gradle.kts (1)
13-23: Consider setting JVM target for thejvm()target as well.The Android library sets
jvmTarget.set(JvmTarget.JVM_17), but thejvm()target at line 14 doesn't explicitly set its JVM target. For consistency, consider configuring the JVM target for both.🔎 Apply this diff to set JVM target consistently:
kotlin { - jvm() + jvm { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } + } androidLibrary {sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/state/StateViewModel.kt (1)
152-178: Consider consolidatingSimpleViewModelandSharedSimpleViewModel.Both classes have identical implementations - they differ only in how they're instantiated (screen-scoped vs nav-controller-scoped). Consider using a single class with a descriptive parameter or comment explaining the scoping difference occurs at the call site.
🔎 Possible consolidation:
-class SimpleViewModel : ViewModel() { +class CounterViewModel : ViewModel() { private val _counter = MutableStateFlow(0) val counter = _counter.asStateFlow() init { viewModelScope.launch { while (isActive) { _counter.value++ delay(1000) } } } } -class SharedSimpleViewModel : ViewModel() { - private val _counter = MutableStateFlow(0) - val counter = _counter.asStateFlow() - - init { - viewModelScope.launch { - while (isActive) { - _counter.value++ - delay(1000) - } - } - } -}Then use
CounterViewModelfor both cases, where the scoping is determined by the call site:
viewModel { CounterViewModel() }for screen-scopedviewModel(nc) { CounterViewModel() }for nav-controller-scoped (shared)However, keeping them separate may be intentional for demonstration purposes to clearly show the different ViewModel types in a sample app.
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/App.kt (1)
22-22: Consider optimizing array concatenation.The spread operator suppression on line 22 and the array concatenation on lines 40-41 suggest awareness of potential performance implications. While acceptable for typical feature counts, consider using a builder pattern for cleaner, more efficient array construction.
🔎 Alternative approach:
-@Suppress("SpreadOperator") fun App( platformFeatures: PlatformFeatures? = null, navControllerConfig: NavController.() -> Unit = {}, overlay: @Composable (navController: NavController) -> Unit = {}, ) { CompositionLocalProvider(LocalPlatformFeatures provides platformFeatures) { AppTheme { Surface(Modifier.fillMaxSize()) { val rootNavController = rememberNavController( key = "rootNavController", startDestination = HomeScreen, configuration = navControllerConfig ) + val destinations = buildList { + add(HomeScreen) + addAll(HomeItems.flatMap { it.items }.map { it.destination }) + platformFeatures?.features?.forEach { add(it.destination) } + }.toTypedArray() Navigation( navController = rootNavController, - destinations = arrayOf( - HomeScreen, - *HomeItems.flatMap { it.items }.map { it.destination }.toTypedArray(), - *(platformFeatures?.features?.map { it.destination }?.toTypedArray() ?: emptyArray()) - ), + destinations = destinations, modifier = Modifier.fillMaxSize(), contentTransformProvider = { navigationPlatformDefault(it) } )Also applies to: 38-42
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
sample/app-ios/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.pngis excluded by!**/*.pngsample/app-wasm/src/wasmJsMain/resources/images/tiamat.pngis excluded by!**/*.png
📒 Files selected for processing (74)
.github/workflows/verify.yml(2 hunks).run/App Android.run.xml(1 hunks).run/App Desktop + Hot Reload.run.xml(1 hunks).run/App Desktop.run.xml(1 hunks).run/App Web.run.xml(1 hunks).run/App iOs.run.xml(1 hunks).run/Clean.run.xml(1 hunks).run/Run Abi Update.run.xml(1 hunks).run/Run Jvm Tests.run.xml(1 hunks).run/Run Static Analysis.run.xml(1 hunks)README.md(0 hunks)build.gradle.kts(1 hunks)gradle.properties(2 hunks)gradle/libs.versions.toml(3 hunks)gradle/tiamat.toml(1 hunks)sample/app-android/build.gradle.kts(1 hunks)sample/app-android/src/main/AndroidManifest.xml(1 hunks)sample/app-android/src/main/kotlin/composegears/tiamat/app/MainActivity.kt(2 hunks)sample/app-android/src/main/kotlin/composegears/tiamat/app/TiamatSampleApp.kt(1 hunks)sample/app-android/src/main/kotlin/composegears/tiamat/app/platform/CameraXLifecycleScreen.kt(2 hunks)sample/app-android/src/main/kotlin/composegears/tiamat/app/platform/HiltScreen.kt(1 hunks)sample/app-android/src/main/kotlin/composegears/tiamat/app/platform/PredictiveBack.android.kt(1 hunks)sample/app-android/src/main/kotlin/composegears/tiamat/app/platform/icons/FlipCameraAndroid.kt(1 hunks)sample/app-android/src/main/kotlin/composegears/tiamat/app/platform/icons/Lens.kt(1 hunks)sample/app-ios/Tiamat.xcodeproj/project.pbxproj(5 hunks)sample/app-ios/iosApp/ContentView.swift(1 hunks)sample/app-ios/iosApp/iOSApp.swift(1 hunks)sample/app-jvm/build.gradle.kts(1 hunks)sample/app-jvm/kotlin/main.kt(1 hunks)sample/app-wasm/build.gradle.kts(1 hunks)sample/composeApp/build.gradle.kts(0 hunks)sample/composeApp/src/androidMain/kotlin/composegears/tiamat/sample/platform/Platform.android.kt(0 hunks)sample/composeApp/src/commonMain/kotlin/composegears/tiamat/sample/App.kt(0 hunks)sample/composeApp/src/commonMain/kotlin/composegears/tiamat/sample/platform/Platform.kt(0 hunks)sample/composeApp/src/iosMain/kotlin/composegears/tiamat/sample/MainViewController.kt(0 hunks)sample/composeApp/src/iosMain/kotlin/composegears/tiamat/sample/platform/Platform.ios.kt(0 hunks)sample/composeApp/src/jvmMain/kotlin/composegears/tiamat/sample/platform/Platform.jvm.kt(0 hunks)sample/composeApp/src/wasmJsMain/kotlin/composegears/tiamat/sample/platform/Platform.wasmJs.kt(0 hunks)sample/shared/build.gradle.kts(1 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/App.kt(1 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/HomeScreen.kt(4 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/layouts/LayoutAdaptiveListDetails.kt(8 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/layouts/LayoutOverlayDestinations.kt(10 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/layouts/LayoutTwoPane.kt(6 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/actions/NavActionForwardAndBack.kt(6 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/actions/NavActionReplace.kt(6 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/actions/NavActionRoute.kt(8 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/animations/NavAnimationCustom.kt(9 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/animations/NavAnimationSharedElementTransition.kt(7 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/data/NavDataArgs.kt(5 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/data/NavDataFreeArgs.kt(5 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/data/NavDataResult.kt(6 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/data/NavDataSerializable.kt(7 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/patterns/NavPatternNested.kt(6 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/patterns/NavPatternTabs.kt(7 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/other/OtherDestinationsGraph.kt(6 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/other/OtherExtensions.kt(7 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/other/OtherNavStackAlteration.kt(10 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/state/StateCustomSaveState.kt(7 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/state/StateRetain.kt(5 hunks)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/state/StateViewModel.kt(10 hunks)sample/shared/src/iosMain/kotlin/composegears/tiamat/sample/MainViewController.kt(1 hunks)settings.gradle.kts(1 hunks)tiamat-destinations/compiler-plugin/api/tiamat-destinations-compiler.api(1 hunks)tiamat-destinations/compiler-plugin/src/main/kotlin/com/composegears/tiamat/destinations/TiamatDestinationsComponentRegistrar.kt(1 hunks)tiamat-destinations/tiamat-destinations/build.gradle.kts(1 hunks)tiamat/api/android/tiamat.api(0 hunks)tiamat/api/jvm/tiamat.api(0 hunks)tiamat/api/tiamat.klib.api(0 hunks)tiamat/build.gradle.kts(1 hunks)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposableNavDestination.kt(0 hunks)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposableNavEntry.kt(3 hunks)tiamat/src/commonMain/kotlin/com/composegears/tiamat/navigation/SavedState.kt(1 hunks)tiamat/src/commonTest/kotlin/com/composegears/tiamat/navigation/SavedStateRecordTests.kt(0 hunks)
💤 Files with no reviewable changes (14)
- sample/composeApp/src/jvmMain/kotlin/composegears/tiamat/sample/platform/Platform.jvm.kt
- sample/composeApp/src/iosMain/kotlin/composegears/tiamat/sample/MainViewController.kt
- tiamat/src/commonTest/kotlin/com/composegears/tiamat/navigation/SavedStateRecordTests.kt
- tiamat/api/android/tiamat.api
- tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposableNavDestination.kt
- sample/composeApp/src/androidMain/kotlin/composegears/tiamat/sample/platform/Platform.android.kt
- README.md
- sample/composeApp/src/commonMain/kotlin/composegears/tiamat/sample/App.kt
- sample/composeApp/src/commonMain/kotlin/composegears/tiamat/sample/platform/Platform.kt
- sample/composeApp/src/wasmJsMain/kotlin/composegears/tiamat/sample/platform/Platform.wasmJs.kt
- sample/composeApp/build.gradle.kts
- sample/composeApp/src/iosMain/kotlin/composegears/tiamat/sample/platform/Platform.ios.kt
- tiamat/api/jvm/tiamat.api
- tiamat/api/tiamat.klib.api
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-09-29T20:14:34.056Z
Learnt from: vkatz
Repo: ComposeGears/Tiamat PR: 273
File: tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposableNavDestination.kt:114-129
Timestamp: 2025-09-29T20:14:34.056Z
Learning: In Tiamat navigation framework, MutableSavedState used with rememberSaveable in saveableViewModel function is intentional and works correctly. The MutableSavedState doesn't need to be directly serializable because state persistence is handled through the NavEntry.setSavedStateSaver mechanism and NavController's custom Saver implementation, not through rememberSaveable's direct serialization.
Applied to files:
tiamat/src/commonMain/kotlin/com/composegears/tiamat/navigation/SavedState.ktsample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/data/NavDataSerializable.kttiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposableNavEntry.ktsample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/state/StateRetain.ktsample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/state/StateCustomSaveState.ktsample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/state/StateViewModel.kt
🧬 Code graph analysis (20)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/animations/NavAnimationSharedElementTransition.kt (2)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (1)
Screen(123-165)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/patterns/NavPatternTabs.kt (3)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (1)
Screen(123-165)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/AppTheme.kt (1)
AppTheme(97-106)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/actions/NavActionReplace.kt (2)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (1)
Screen(123-165)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/layouts/LayoutAdaptiveListDetails.kt (2)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/AppTheme.kt (1)
AppTheme(97-106)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/data/NavDataSerializable.kt (2)
tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposableNavDestination.kt (2)
navArgs(42-44)freeArgs(73-76)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposableNavEntry.kt (1)
tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/NavDestination.kt (1)
Content(51-54)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/layouts/LayoutOverlayDestinations.kt (1)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (2)
Screen(123-165)AppButton(41-60)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/App.kt (1)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/AppTheme.kt (1)
AppTheme(97-106)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/animations/NavAnimationCustom.kt (3)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (1)
Screen(123-165)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/AppTheme.kt (1)
AppTheme(97-106)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/other/OtherExtensions.kt (3)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (1)
Screen(123-165)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/AppTheme.kt (1)
AppTheme(97-106)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/state/StateViewModel.kt (4)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (1)
Screen(123-165)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposableNavDestination.kt (1)
navController(15-16)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/AppTheme.kt (1)
AppTheme(97-106)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/actions/NavActionRoute.kt (2)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (2)
AppButton(41-60)VSpacer(21-24)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/layouts/LayoutTwoPane.kt (3)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (1)
Screen(123-165)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/AppTheme.kt (1)
AppTheme(97-106)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/data/NavDataArgs.kt (2)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (1)
Screen(123-165)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/HomeScreen.kt (1)
tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposableNavDestination.kt (1)
navController(15-16)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/actions/NavActionForwardAndBack.kt (3)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (1)
Screen(123-165)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/AppTheme.kt (1)
AppTheme(97-106)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/data/NavDataResult.kt (4)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (2)
Screen(123-165)VSpacer(21-24)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposableNavDestination.kt (1)
navResult(93-96)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/AppTheme.kt (1)
AppTheme(97-106)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/app-android/src/main/kotlin/composegears/tiamat/app/MainActivity.kt (1)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/App.kt (1)
App(23-50)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/other/OtherNavStackAlteration.kt (3)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/CoreComponents.kt (1)
Screen(123-165)sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/AppTheme.kt (1)
AppTheme(97-106)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/patterns/NavPatternNested.kt (2)
sample/shared/src/commonMain/kotlin/composegears/tiamat/sample/ui/AppTheme.kt (1)
AppTheme(97-106)tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposablePreview.kt (1)
TiamatPreview(53-70)
⏰ 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). (2)
- GitHub Check: verify-android-jvm-wasm
- GitHub Check: verify-ios
| buildSettings = { | ||
| ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
| CODE_SIGN_IDENTITY = "Apple Development"; | ||
| CODE_SIGN_IDENTITY = "Developer ID Application"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Find and read the project file around lines 301 and 326
FILE_PATH="sample/app-ios/Tiamat.xcodeproj/project.pbxproj"
if [ -f "$FILE_PATH" ]; then
echo "=== Lines 295-310 ==="
sed -n '295,310p' "$FILE_PATH"
echo ""
echo "=== Lines 320-335 ==="
sed -n '320,335p' "$FILE_PATH"
echo ""
echo "=== Searching for all CODE_SIGN_IDENTITY occurrences ==="
rg "CODE_SIGN_IDENTITY" "$FILE_PATH" -n
else
echo "File not found at $FILE_PATH"
# Try to find the project file
find . -name "project.pbxproj" -type f 2>/dev/null | head -5
fiRepository: ComposeGears/Tiamat
Length of output: 1579
Fix iOS code signing certificate: "Developer ID Application" is for macOS, not iOS.
"Developer ID Application" is a macOS certificate type for distribution outside the App Store. For iOS projects, use:
- Debug: "Apple Development" (or "iPhone Developer" for legacy projects)
- Release: "Apple Distribution" (or "iPhone Distribution" for legacy projects)
Developer ID Application certificates are for Mac applications distributed outside the App Store, not for iOS. Apple experts strongly recommend against using Developer ID for day-to-day development and recommend using Apple Development for local development instead.
🤖 Prompt for AI Agents
In sample/app-ios/Tiamat.xcodeproj/project.pbxproj around line 301, the
CODE_SIGN_IDENTITY is set to "Developer ID Application" which is a macOS
certificate and not valid for iOS; change the identity to the appropriate iOS
certificates—use "Apple Development" (or "iPhone Developer" for legacy) for
Debug builds and "Apple Distribution" (or "iPhone Distribution" for legacy) for
Release builds, updating the CODE_SIGN_IDENTITY entries (or build
configuration-specific settings) accordingly so Debug and Release use the
correct iOS identities.
...ed/src/commonMain/kotlin/composegears/tiamat/sample/content/navigation/data/NavDataResult.kt
Show resolved
Hide resolved
tiamat/src/commonMain/kotlin/com/composegears/tiamat/compose/ComposableNavEntry.kt
Show resolved
Hide resolved
| @@ -0,0 +1,8 @@ | |||
| <component name="ProjectRunConfigurationManager"> | |||
| <configuration default="false" name="App iOs" type="AppleRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Tiamat" TARGET_NAME="iosApp" CONFIG_NAME="Debug" IS_LOCATION_SIMULATION_SUPPORTED="true" SCHEME_NAME="App iOs" IS_LOCATION_SIMULATION_ALLOWED="true" LOCATION_SCENARIO_ID="com.apple.dt.IDEFoundation.CurrentLocationScenarioIdentifier" LOCATION_SCENARIO_TYPE="1" APPLICATION_LANGUAGE="IDELaunchSchemeLanguageUseSystemLanguage" APPLICATION_REGION="" DEVELOPMENT_TEAM="${TEAM_ID}" RUN_TARGET_PROJECT_NAME="Tiamat" RUN_TARGET_NAME="iosApp" MAKE_ACTIVE="TRUE" SHOULD_DEBUG_EXTENSIONS="false"> | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
File can be renamed into iOS
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'v add separate file name prefixes to keep em in order "App / Run"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I mean not 'iOs' but 'iOS'
| alias(libs.plugins.compose.compiler) | ||
| } | ||
|
|
||
| sourceSets.main { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks redundant
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's should available by default

Fixes #318 by migration to kotlion 2.3.0 + compose 1.10.+ structure
Fixes #312 hilt integration
Fixes #313 compose version update onto 1.10.+
Fixes
SaveStateHandleSummary by CodeRabbit
Release Notes
New Features
Refactor
Chores
✏️ Tip: You can customize this high-level summary in your review settings.