Skip to content

feat: add KMP support to dari-core - #88

Merged
easyhooon merged 8 commits into
mainfrom
feat/kmp-core-support
Aug 10, 2026
Merged

easyhooon merged 8 commits into
mainfrom
feat/kmp-core-support

Conversation

@easyhooon

@easyhooon easyhooon commented Aug 9, 2026 •

Copy link
Copy Markdown
Owner

Summary

Progresses #13.

  • Convert dari-core to Kotlin Multiplatform with Android, JVM, iOS x64, iOS arm64, and iOS simulator arm64 targets
  • Move portable models and interceptor contracts to commonMain while preserving the existing Android public API and io.github.easyhooon:dari-core root coordinate
  • Keep the inspector runtime, WebView integration, persistence, notifications, and UI Android-only
  • Add common tests, API compatibility smoke tests, KMP publication support, CI verification, and usage documentation

Compatibility

  • Android bytecode remains pinned to Java 11
  • Existing Android AAR public JVM signatures match the published 1.7.0 artifact
  • KMP root metadata redirects consumers to platform-specific Android, JVM, and iOS artifacts

Verification

  • ./gradlew :dari-core:compileAndroidMain :dari-core:jvmTest :dari-core:testAndroidHostTest :dari-core:ktlintCheck
  • ./gradlew :dari:assemble :dari-noop:assemble :sample:assembleDebug
  • Published KMP root, Android, and JVM artifacts to Maven Local
  • CI compiles all three iOS targets and their tests on macOS

Summary by CodeRabbit

  • New Features
    • Added a Kotlin Multiplatform core supporting Android, JVM, and iOS.
    • Added shared configuration models, message direction types, and payload metadata for binary/protobuf inspection.
    • Added interception contracts for monitoring Web-to-App and App-to-Web requests and responses.
  • Documentation
    • Updated module documentation with platform support, dependency setup, and Android-only feature details.
  • Quality
    • Added automated cross-platform validation and expanded compatibility and behavior tests.

@coderabbitai

coderabbitai Bot commented Aug 9, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: a99db662-0262-43a8-bf57-b4179b031f2e

📥 Commits

Reviewing files that changed from the base of the PR and between 0d1dcc3 and 7999f88.

📒 Files selected for processing (3)
  • .github/workflows/kmp-core.yml
  • dari-core/build.gradle.kts
  • dari-core/src/commonTest/kotlin/com/easyhooon/dari/PublicApiSmokeTest.kt
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/kmp-core.yml

📝 Walkthrough

Walkthrough

dari-core is converted to Kotlin Multiplatform for Android, JVM, and iOS. Shared configuration, message, clock, and interception contracts are added. Common tests, CI verification, publishing updates, and module documentation support the migration.

Changes

KMP core migration

Layer / File(s) Summary
KMP module and publishing setup
gradle/libs.versions.toml, build.gradle.kts, dari-core/build.gradle.kts, dari/build.gradle.kts, dari-noop/build.gradle.kts, .github/workflows/kmp-core.yml, .claude/skills/resolve-coderabbit-review/learned-patterns.md
The build configures Kotlin Multiplatform targets, publishing, version updates, and macOS-based CI verification.
Shared models and platform time
dari-core/src/commonMain/kotlin/com/easyhooon/dari/*, dari-core/src/*Main/kotlin/com/easyhooon/dari/Clock.*.kt
Shared configuration, message metadata, direction values, payload metadata, and platform clock implementations are added. MessageEntry uses multiplatform time and UTF-8 sizing.
Bridge and protobuf interception contracts
dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/*
Bridge and protobuf interceptor interfaces define request, response, decoding, direction, and payload contracts.
Cross-platform verification and module documentation
dari-core/src/commonTest/kotlin/com/easyhooon/dari/*, README.md, documentation/content/docs/modules.mdx, documentation/content/docs/ko/modules.mdx
Common tests validate configuration, message behavior, legacy construction, and interceptor callbacks. Documentation describes KMP support and Android-only runtime features.

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

Possibly related issues

Possibly related PRs

  • easyhooon/dari#2 — Introduces the same dari-core shared types that this PR migrates to Kotlin Multiplatform.
  • easyhooon/dari#16 — Adds the DariConfig API and maxContentLength validation retained in this migration.
  • easyhooon/dari#81 — Adds the protobuf interception contracts and payload metadata moved into shared code here.

Suggested labels: enhancement

Poem

A rabbit hops through common code,
With clocks that cross each platform road.
Messages, payloads, contracts align,
CI checks each bridge in time.
KMP carrots grow in every lane!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 22.73% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding Kotlin Multiplatform support to dari-core.
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 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/kmp-core-support

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

🧹 Nitpick comments (2)
.github/workflows/kmp-core.yml (1)

40-45: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Run the common tests on an iOS simulator.

These tasks compile iOS production and test sources, but they do not execute the common tests on iOS. Add the iOS simulator test task when the macos-15 runner provides a compatible simulator.

This validates the iOS clock actual and shared runtime behavior.

🤖 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 @.github/workflows/kmp-core.yml around lines 40 - 45, Add the Kotlin
Multiplatform iOS simulator test execution task to the workflow’s existing iOS
task list, alongside the compile tasks, using the simulator-compatible task for
the macos-15 runner. Keep the current production and test compilation tasks
unchanged.
dari-core/build.gradle.kts (1)

10-20: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

Set the Java compile target to 11.

withJava() enables Java compilation, but this file only sets Kotlin bytecode to JvmTarget.JVM_11. The Android Java sources are not constrained to Java compatible bytecode, so use Java 11 compatibility for the Android Java compilation.

🤖 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 `@dari-core/build.gradle.kts` around lines 10 - 20, Update the Android
configuration near the KotlinCompile settings and kotlin.android block to set
Java source and target compatibility to Java 11 alongside JvmTarget.JVM_11.
Ensure the Java compilation enabled by withJava() produces Java 11-compatible
bytecode.
🤖 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 @.github/workflows/kmp-core.yml:
- Around line 5-20: Add "gradlew" to both paths filters in the workflow’s
pull_request and push trigger definitions so wrapper changes run KMP
verification; preserve all existing path entries.
- Line 29: Update the actions/checkout@v4 step in the workflow to set
persist-credentials to false, preventing the checkout token from being stored in
local Git configuration while leaving the rest of the checkout behavior
unchanged.

In `@dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt`:
- Around line 31-43: The DariConfig primary constructor changes must preserve
the previous JVM constructor descriptor for existing Android binaries. In
DariConfig, add the required compatibility constructor or overload using the
former parameter set and delegate new fields to their defaults; update
DariInterceptor’s affected construction or usage site only as needed to route
through the compatibility-preserving API. Ensure both old compiled callers and
new callers can instantiate DariConfig without changing existing behavior.

In `@README.md`:
- Around line 225-231: Update the README dependency snippet to avoid the
undefined dariVersion reference by using a clear version placeholder such as
<version>, or define dariVersion within the example before it is used.

---

Nitpick comments:
In @.github/workflows/kmp-core.yml:
- Around line 40-45: Add the Kotlin Multiplatform iOS simulator test execution
task to the workflow’s existing iOS task list, alongside the compile tasks,
using the simulator-compatible task for the macos-15 runner. Keep the current
production and test compilation tasks unchanged.

In `@dari-core/build.gradle.kts`:
- Around line 10-20: Update the Android configuration near the KotlinCompile
settings and kotlin.android block to set Java source and target compatibility to
Java 11 alongside JvmTarget.JVM_11. Ensure the Java compilation enabled by
withJava() produces Java 11-compatible bytecode.
🪄 Autofix

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: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8aedc6b0-156d-44b1-9344-69ff3f472c59

📥 Commits

Reviewing files that changed from the base of the PR and between 945ae39 and 931cf1f.

📒 Files selected for processing (23)
  • .github/workflows/kmp-core.yml
  • README.md
  • build.gradle.kts
  • dari-core/build.gradle.kts
  • dari-core/src/androidMain/kotlin/com/easyhooon/dari/Clock.android.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/Clock.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/MessageDirection.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/MessageEntry.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/MessagePayloadMetadata.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/MessageStatus.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/DariInterceptor.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/ProtobufDariInterceptor.kt
  • dari-core/src/commonTest/kotlin/com/easyhooon/dari/DariConfigTest.kt
  • dari-core/src/commonTest/kotlin/com/easyhooon/dari/MessageEntryTest.kt
  • dari-core/src/commonTest/kotlin/com/easyhooon/dari/PublicApiCompatibilityTest.kt
  • dari-core/src/iosMain/kotlin/com/easyhooon/dari/Clock.ios.kt
  • dari-core/src/jvmMain/kotlin/com/easyhooon/dari/Clock.jvm.kt
  • dari-noop/build.gradle.kts
  • dari/build.gradle.kts
  • documentation/content/docs/ko/modules.mdx
  • documentation/content/docs/modules.mdx
  • gradle/libs.versions.toml

Comment thread .github/workflows/kmp-core.yml
Comment thread .github/workflows/kmp-core.yml
Comment thread README.md

@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.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 4

🧹 Nitpick comments (2)
.github/workflows/kmp-core.yml (1)

40-45: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Run the common tests on an iOS simulator.

These tasks compile iOS production and test sources, but they do not execute the common tests on iOS. Add the iOS simulator test task when the macos-15 runner provides a compatible simulator.

This validates the iOS clock actual and shared runtime behavior.

🤖 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 @.github/workflows/kmp-core.yml around lines 40 - 45, Add the Kotlin
Multiplatform iOS simulator test execution task to the workflow’s existing iOS
task list, alongside the compile tasks, using the simulator-compatible task for
the macos-15 runner. Keep the current production and test compilation tasks
unchanged.
dari-core/build.gradle.kts (1)

10-20: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

Set the Java compile target to 11.

withJava() enables Java compilation, but this file only sets Kotlin bytecode to JvmTarget.JVM_11. The Android Java sources are not constrained to Java compatible bytecode, so use Java 11 compatibility for the Android Java compilation.

🤖 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 `@dari-core/build.gradle.kts` around lines 10 - 20, Update the Android
configuration near the KotlinCompile settings and kotlin.android block to set
Java source and target compatibility to Java 11 alongside JvmTarget.JVM_11.
Ensure the Java compilation enabled by withJava() produces Java 11-compatible
bytecode.
🤖 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 @.github/workflows/kmp-core.yml:
- Around line 5-20: Add "gradlew" to both paths filters in the workflow’s
pull_request and push trigger definitions so wrapper changes run KMP
verification; preserve all existing path entries.
- Line 29: Update the actions/checkout@v4 step in the workflow to set
persist-credentials to false, preventing the checkout token from being stored in
local Git configuration while leaving the rest of the checkout behavior
unchanged.

In `@dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt`:
- Around line 31-43: The DariConfig primary constructor changes must preserve
the previous JVM constructor descriptor for existing Android binaries. In
DariConfig, add the required compatibility constructor or overload using the
former parameter set and delegate new fields to their defaults; update
DariInterceptor’s affected construction or usage site only as needed to route
through the compatibility-preserving API. Ensure both old compiled callers and
new callers can instantiate DariConfig without changing existing behavior.

In `@README.md`:
- Around line 225-231: Update the README dependency snippet to avoid the
undefined dariVersion reference by using a clear version placeholder such as
<version>, or define dariVersion within the example before it is used.

---

Nitpick comments:
In @.github/workflows/kmp-core.yml:
- Around line 40-45: Add the Kotlin Multiplatform iOS simulator test execution
task to the workflow’s existing iOS task list, alongside the compile tasks,
using the simulator-compatible task for the macos-15 runner. Keep the current
production and test compilation tasks unchanged.

In `@dari-core/build.gradle.kts`:
- Around line 10-20: Update the Android configuration near the KotlinCompile
settings and kotlin.android block to set Java source and target compatibility to
Java 11 alongside JvmTarget.JVM_11. Ensure the Java compilation enabled by
withJava() produces Java 11-compatible bytecode.
🪄 Autofix

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: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8aedc6b0-156d-44b1-9344-69ff3f472c59

📥 Commits

Reviewing files that changed from the base of the PR and between 945ae39 and 931cf1f.

📒 Files selected for processing (23)
  • .github/workflows/kmp-core.yml
  • README.md
  • build.gradle.kts
  • dari-core/build.gradle.kts
  • dari-core/src/androidMain/kotlin/com/easyhooon/dari/Clock.android.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/Clock.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/MessageDirection.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/MessageEntry.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/MessagePayloadMetadata.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/MessageStatus.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/DariInterceptor.kt
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/ProtobufDariInterceptor.kt
  • dari-core/src/commonTest/kotlin/com/easyhooon/dari/DariConfigTest.kt
  • dari-core/src/commonTest/kotlin/com/easyhooon/dari/MessageEntryTest.kt
  • dari-core/src/commonTest/kotlin/com/easyhooon/dari/PublicApiCompatibilityTest.kt
  • dari-core/src/iosMain/kotlin/com/easyhooon/dari/Clock.ios.kt
  • dari-core/src/jvmMain/kotlin/com/easyhooon/dari/Clock.jvm.kt
  • dari-noop/build.gradle.kts
  • dari/build.gradle.kts
  • documentation/content/docs/ko/modules.mdx
  • documentation/content/docs/modules.mdx
  • gradle/libs.versions.toml
🛑 Comments failed to post (1)
dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt (1)

31-43: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

config='dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt'
interceptor='dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/DariInterceptor.kt'

# Inspect the predecessor declarations and the current descriptor-changing diff.
git show "HEAD^:${config}" 2>/dev/null || true
git show "HEAD^:${interceptor}" 2>/dev/null || true
git diff HEAD^ -- "$config" "$interceptor"

# Locate the repository's declared API compatibility tooling and API dumps.
fd -HI '.*(api|compat|binary).*' . || true
rg -n -C 3 'DariConfig|onWebToAppRequest|onAppToWebRequest|1\.7\.0' \
  -g '*.kt' -g '*.kts' -g '*.api' .

Repository: easyhooon/dari

Length of output: 24348


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== git history =="
git log --oneline -10 || true

echo
echo "== current declarations =="
cat -n dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt | sed -n '1,90p'
echo
cat -n dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/DariInterceptor.kt | sed -n '1,80p'
echo
cat -n dari-core/src/commonMain	kotlin/com/easyhooon/dari/interceptor/DefaultDariInterceptor.kt | sed -n '1,90p'

echo
echo "== compatibility artifacts/tooling =="
git ls-files | rg -n '(\.api$|api|binary|compat|compatibility|versioning|library|aarm|android|publish|build\.gradle|gradle\.kts)$' || true

echo
echo "== build config around compatibility publishing =="
for f in $(git ls-files | rg '(^|/)build\.gradle(\.kts)?|(^|/)settings\.gradle(\.kts)?$'); do
  echo "--- $f"
  rg -n -C 2 'api|compat|binary|kotlin|android|multiplatform|library|publication|publish|1\.7\.0|1\.7|compatibility' "$f" || true
done

echo
echo "== compatibility test =="
cat -n dari-core/src/commonTest/kotlin/com/easyhooon/dari/PublicApiCompatibilityTest.kt | sed -n '1,120p'

echo
echo "== current refs if available =="
git tag -l | sed -n '1,80p' || true
git branch -a | sed -n '1,80p' || true

Repository: easyhooon/dari

Length of output: 4816


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== build compatibility and publishing config =="
git ls-files | rg '(^|/)build\.gradle(\.kts)?$|(^|/)settings\.gradle(\.kts)?$|gradle\.properties|local\.properties|\.kotlin_module$|\.api$|api/' || true

for f in settings.gradle.kts settings.gradle build.gradle.kts build.gradle gradle.properties; do
  if [ -f "$f" ]; then
    echo "--- $f ---"
    rg -n -C 3 'api|compat|binary|kotlin|android|multiplatform|library|publication|publish|1\.7\.0|1\.7|compatibility|maven|binaryCompatibility|apiDump|apiCheck|kotlinMultiplatform' "$f" || true
  fi
done

echo
echo "== published 1.7.0 references in tracked and remote refs =="
git tag -l '1.7.0' || true
git show "1.7.0:dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt" 2>/dev/null | sed -n '1,90p' || true
git show "1.7.0:dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/DariInterceptor.kt" 2>/dev/null | sed -n '1,60p' || true
git branch -r 2>/dev/null | sed -n '1,80p' || true

echo
echo "== all DariInterceptor declarations =="
git ls-files | rg 'DariInterceptor\.kt$|DefaultDariInterceptor\.kt$|PublicApiCompatibilityTest\.kt$' | while read -r f; do
  echo "--- $f ---"
  cat -n "$f" | sed -n '1,120p'
done

Repository: easyhooon/dari

Length of output: 14778


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== 1.7.0 DariConfig and DariInterceptor from origin/HEAD~1, if available =="
git show "origin/HEAD~1:dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt" 2>/dev/null | sed -n '1,90p' || true
git show "origin/HEAD~1:dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/DariInterceptor.kt" 2>/dev/null | sed -n '1,60p' || true

echo
echo "== exact diff for both files =="
git diff "origin/HEAD~1" -- dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/DariInterceptor.kt

echo
echo "== JVM descriptor probe for Kotlin primary constructor/def-arg methods =="
python3 - <<'PY'
from pathlib import Path
import re

for path in [
    "dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt",
    "dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/DariInterceptor.kt",
]:
    text = Path(path).read_text()
    print(f"-- {path} --")
    for m in re.finditer(r'fun\s+\w+\((.*?)\)\s*(?:=|$\s*$)', text, re.S):
        print(m.group(0).replace("\n", " "))
    # Show parameter names with defaults without executing repo code.
    for m in re.finditer(r'fun\s+([^\s(]+)\s*\n?\s*(.*?)\)', text, re.S):
        name, params = m.group(1, 2)
        print(name, [re.sub(r'\s*.+$', '', p.strip()) for p in params.split(',')])
PY

Repository: easyhooon/dari

Length of output: 4788


Keep the existing DariConfig constructor descriptor while adding the new fields.

Kotlin data-class arguments change the primary constructor and generated default-argument bridge. Add the compatibility wrapper/overloads so existing Android clients compiled against the previous constructor can still instantiate DariConfig.

📍 Affects 2 files
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt#L31-L43 (this comment)
  • dari-core/src/commonMain/kotlin/com/easyhooon/dari/interceptor/DariInterceptor.kt#L17-L23
🤖 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 `@dari-core/src/commonMain/kotlin/com/easyhooon/dari/DariConfig.kt` around
lines 31 - 43, The DariConfig primary constructor changes must preserve the
previous JVM constructor descriptor for existing Android binaries. In
DariConfig, add the required compatibility constructor or overload using the
former parameter set and delegate new fields to their defaults; update
DariInterceptor’s affected construction or usage site only as needed to route
through the compatibility-preserving API. Ensure both old compiled callers and
new callers can instantiate DariConfig without changing existing behavior.

@easyhooon

Copy link
Copy Markdown
Owner Author

🤖 CodeRabbit Review Resolution

Total unresolved: 3 | Applied: 3 | Declined: 0

✅ Applied

Severity File Comment Change Commit
🟡 .github/workflows/kmp-core.yml Wrapper changes skipped CI (link) Added gradlew to both path filters e430a85
🟡 .github/workflows/kmp-core.yml Checkout persisted credentials (link) Disabled credential persistence 546c723
🟡 README.md Undefined version variable (link) Replaced it with <version> 697fc4e

❌ Declined

None.

@easyhooon
easyhooon merged commit 9189dd9 into main Aug 10, 2026
4 checks passed
@easyhooon
easyhooon deleted the feat/kmp-core-support branch August 10, 2026 02:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant