Skip to content

fix(build): repair main after the Kotlin 2.4 dependency merge storm#70

Open
jamesarich wants to merge 1 commit into
mainfrom
fix/kgp-2.4-abi-validation-dsl
Open

fix(build): repair main after the Kotlin 2.4 dependency merge storm#70
jamesarich wants to merge 1 commit into
mainfrom
fix/kgp-2.4-abi-validation-dsl

Conversation

@jamesarich

@jamesarich jamesarich commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Main broke when the Renovate backlog automerged in quick succession — each PR was green individually (ubuntu-only luck + stale merge bases), but three semantic conflicts landed together:

# Conflict Fix
1 KGP 2.4 removed the old ABI-validation DSL used by build-logic (broke every Gradle job) Migrate to the unified abiValidation { } DSL
2 SKIE 0.10.13 (latest) hard-rejects Kotlin 2.4.10 — ceiling is 2.4.0 (broke all Apple targets; renovate PR only ran ubuntu jobs) Pin Kotlin 2.4.0; comment ties the pair together for the next bump
3 kable 0.44.1 renamed ExperimentalApiExperimentalKableApi Update transport-ble test opt-in

Also regenerates the ABI reference dumps under the 2.4 toolchain — mangling suffix change ($core$org_meshtastic_core), constructors now dumped, and transport-tcp's READ_CHUNK_BYTES/READ_TIMEOUT_MS left the public dump (reviewers: please eyeball). No release has shipped yet, so dump churn has no consumer impact.

Verified locally on macOS/arm64: build-logic compile, checkKotlinAbi jvmTest, :core:iosSimulatorArm64Test + parity-app SKIE framework link, spotlessCheck detekt.

Unblocks #52 and the v0.1.0 tag (#53).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added no-argument constructors for automatic reconnection and retry configuration options.
  • API Updates

    • Updated transport error context handling.
    • Removed previously exposed TCP transport tuning constants.
  • Compatibility

    • Updated Kotlin tooling and ABI validation configuration.
    • Refined Bluetooth test compatibility for the latest Kable API.

The rapid-fire Renovate automerges each passed CI individually but broke
main in combination — three separate semantic conflicts:

1. build-logic: KGP 2.4 removed the old per-flavor ABI-validation DSL
   (AbiValidationMultiplatformExtension, its enabled property, and
   filters on the MPP variant spec). Migrate to the unified
   abiValidation { } function on the Kotlin extension, which both
   enables and configures validation.

2. Kotlin 2.4.10 -> 2.4.0: SKIE 0.10.13 (latest, 2026-06-24) hard-fails
   on 2.4.10 — its ceiling is 2.4.0 — killing every Apple-target build.
   The renovate PR went green because only ubuntu jobs ran it. Pin
   Kotlin to 2.4.0 and bump both together once SKIE adds support.
   kable 0.44.x klibs (built with Kotlin 2.4.0) resolve fine.

3. kable 0.44.1 renamed ExperimentalApi -> ExperimentalKableApi;
   transport-ble's FakePeripheral opt-in updated.

Also regenerates the ABI reference dumps under the 2.4 toolchain:
internal-member mangling changed ($core -> $org_meshtastic_core),
default constructors are now dumped, and transport-tcp's
READ_CHUNK_BYTES / READ_TIMEOUT_MS constants left the public dump —
reviewers should eyeball that last one. No published release exists
yet, so dump churn has no consumer impact.

Verified locally (macOS, arm64):
  ./gradlew :build-logic:convention:compileKotlin
  ./gradlew checkKotlinAbi jvmTest
  ./gradlew :core:iosSimulatorArm64Test \
    :samples:parity-app:linkReleaseFrameworkIosSimulatorArm64  # SKIE gate
  ./gradlew spotlessCheck detekt

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Jul 17, 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: 71c29ab8-7b2a-4182-9d82-2ecfd9bc47ec

📥 Commits

Reviewing files that changed from the base of the PR and between e089e1d and 32c1e3a.

📒 Files selected for processing (5)
  • build-logic/convention/src/main/kotlin/PublishingConventionPlugin.kt
  • core/api/jvm/core.api
  • gradle/libs.versions.toml
  • transport-ble/src/commonTest/kotlin/org/meshtastic/sdk/transport/ble/BleTransportHookTest.kt
  • transport-tcp/api/jvm/transport-tcp.api
💤 Files with no reviewable changes (1)
  • transport-tcp/api/jvm/transport-tcp.api

📝 Walkthrough

Walkthrough

The PR updates Kotlin ABI validation to the unified DSL, changes the Kotlin version to 2.4.0, refreshes JVM API declarations, updates the BLE test’s Kable opt-in annotation, and removes two public TCP constants from the API baseline.

Changes

Kotlin and API maintenance

Layer / File(s) Summary
Kotlin version and ABI validation
gradle/libs.versions.toml, build-logic/convention/src/main/kotlin/PublishingConventionPlugin.kt
The Kotlin version changes to 2.4.0, and JVM/multiplatform ABI validation uses the unified DSL with internal packages excluded.
JVM API declaration updates
core/api/jvm/core.api, transport-tcp/api/jvm/transport-tcp.api
The API baseline adds three no-argument constructors, renames the MeshtasticException transport identity method, and removes two TcpTransport constants.
BLE test opt-in update
transport-ble/src/commonTest/kotlin/org/meshtastic/sdk/transport/ble/BleTransportHookTest.kt
The test opts into ExperimentalKableApi instead of ExperimentalApi.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related issues

  • meshtastic/meshtastic-sdk issue 54 — Covers the Kotlin version change from 2.4.10 to 2.4.0.

Possibly related PRs

Poem

A rabbit hops through Kotlin’s new lane,
ABI checks grow tidy again.
Three constructors spring,
Old constants take wing,
And BLE opts in without pain.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main goal: repairing main after Kotlin 2.4-related dependency merge conflicts.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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.

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