From cd760a956a28b21491f7315e4fe1a2ff46bd60d1 Mon Sep 17 00:00:00 2001 From: Alexey Karimov Date: Mon, 10 Aug 2026 22:09:40 +0500 Subject: [PATCH 1/4] docs(gradle-plugin): correct the Kotlin bound and add 4.0.4 notes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 4.0.3 notes stated "Kotlin 2.1 through 2.3 are unaffected". Running each line's real compiler over a Compose consumer with the bundled compiler plugin loaded disproves it: 2.2 and 2.3 abort the build with a NoSuchMethodError on irCall, whose builder receiver Kotlin 2.2 widened. The gate shipped in 4.0.3 therefore admitted two lines that break. - Adds the 4.0.4 entry describing the corrected bound (Kotlin 2.1) and the actual blast radius: only projects pairing Compose with Bugsee's :compose integration were affected, since the injection pass exits early when the Bugsee Compose runtime is absent. - Marks the incorrect statement in the 4.0.3 entry with a caution admonition rather than silently rewriting a released note. - Annotates the older "Adds Kotlin 2.3 compatibility" line, which described the plugin's own build and not the bundled compiler plugin. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Change-Id: I4a7dcb9e84d28db5d9b78c9a971597394db8751e --- docs/sdk/android/gradle-plugin/releases.mdx | 38 ++++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/docs/sdk/android/gradle-plugin/releases.mdx b/docs/sdk/android/gradle-plugin/releases.mdx index e37b714..c94c2c3 100644 --- a/docs/sdk/android/gradle-plugin/releases.mdx +++ b/docs/sdk/android/gradle-plugin/releases.mdx @@ -9,6 +9,29 @@ slug: "/sdk/android/gradle-plugin/releases" ## 4.x (SDK 7.x) +### 4.0.4 (August 2026) + +Corrects the Kotlin version bound introduced in 4.0.3. Upgrade if your project uses Kotlin 2.2 or +newer together with Bugsee's Compose integration. + +- **Compose instrumentation is no longer loaded into Kotlin 2.2 and 2.3.** 4.0.3 introduced a gate + that skips the bundled Compose compiler plugin on Kotlin versions it has not been verified + against, but set the bound at 2.3 — one line too permissive in both directions. Running each + line's compiler against a Compose consumer shows 2.2 and 2.3 abort the build with + `NoSuchMethodError: irCall(IrBuilderWithScope, IrSimpleFunctionSymbol)`: Kotlin 2.2 widened that + builder's receiver type, and a compiled call site binds the exact signature, so the change is + binary-breaking even though the source still compiles. The bound is now Kotlin 2.1. + + This only ever affected projects that pair Compose with Bugsee's `:compose` integration — the + injection pass exits early when the Bugsee Compose runtime is absent, so a Compose app without it + built normally. + + On Kotlin 2.2 and newer, Compose tag and secure-modifier injection is disabled with a warning and + the build succeeds. Everything else — network, logs, crashes, ANRs, startup tracing — is + unaffected, and Compose views are still captured; only the source-name tagging and automatic + secure-field marking are lost. Restoring the feature on 2.2–2.4 requires the compiler plugin to be + built separately against each Kotlin line, which is planned for a following release. + ### 4.0.3 (August 2026) Adds WebSocket capture, makes every bytecode injection verify that the SDK on the classpath can @@ -37,10 +60,14 @@ actually support it, and adds Gradle 9 compatibility. Drop-in upgrade from 4.0.x - **Compose instrumentation is skipped on unverified Kotlin versions.** The bundled Compose compiler plugin is built against a specific Kotlin compiler API, and Kotlin 2.4 changed it — loading the plugin into a 2.4 compiler aborted the build with a `ClassCastException` that an app author could - neither diagnose nor work around. On Kotlin versions the plugin has not been verified against - (currently anything above 2.3), Compose tag and secure-modifier injection is now disabled with a - warning instead, and the build succeeds. Kotlin 2.1 through 2.3 are unaffected. Support for 2.4 - will follow in a later release. + neither diagnose nor work around. On Kotlin versions the plugin has not been verified against, + Compose tag and secure-modifier injection is now disabled with a warning instead, and the build + succeeds. + + :::caution + The bound shipped in 4.0.3 was set at Kotlin 2.3, which is incorrect — 2.2 and 2.3 also abort the + build. Use 4.0.4 or newer, where the bound is 2.1. + ::: - **Auto-added SDK floor raised to 7.1.0.** When the plugin adds `com.bugsee:bugsee-android` for an app that has not declared it, the version range is now `[7.1.0,8.0.0)`. Apps that declare the SDK version themselves are unaffected. @@ -151,7 +178,8 @@ App-startup bytecode tracing tiers (MINIMAL through FULL) plus the typed `Startu - VCS information (branch, commit, dirty flag) is now sent as a nested object in the upload payload rather than flat fields. - Bundle upload tasks are now compatible with Gradle's configuration cache, and the app token is masked in log output. - Maven publishing signing tasks are now disabled cleanly when GPG credentials aren't present, replacing a workaround that broke configuration cache. -- Adds Kotlin 2.3 compatibility. +- Adds Kotlin 2.3 compatibility. *(Correction: this covered the plugin's own build only. The + bundled Compose compiler plugin does not support Kotlin 2.2 or newer — see 4.0.4.)* ### 4.0.0-beta3 (April 23 2026) From 9e4ba14a41973181d528190a9682ca4e7f46019f Mon Sep 17 00:00:00 2001 From: Alexey Karimov Date: Mon, 10 Aug 2026 22:28:14 +0500 Subject: [PATCH 2/4] docs(gradle-plugin): document 4.0.5 instead of the unshipped 4.0.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 4.0.4 was the gate-only hotfix and was never published. 4.0.5 contains it plus the restored Compose support on Kotlin 2.2-2.4, so documenting 4.0.4 would describe a version nobody can install. The entry now covers both halves: the per-Kotlin-line compiler-plugin artifacts and the automatic selection between them, and the correction to the 4.0.3 bound with the reason it was wrong. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Change-Id: I6e3825c02b3eeaeabe9db07edc4598c7ad0cc8b1 --- docs/sdk/android/gradle-plugin/releases.mdx | 48 ++++++++++++--------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/docs/sdk/android/gradle-plugin/releases.mdx b/docs/sdk/android/gradle-plugin/releases.mdx index c94c2c3..8a3b43f 100644 --- a/docs/sdk/android/gradle-plugin/releases.mdx +++ b/docs/sdk/android/gradle-plugin/releases.mdx @@ -9,28 +9,36 @@ slug: "/sdk/android/gradle-plugin/releases" ## 4.x (SDK 7.x) -### 4.0.4 (August 2026) +### 4.0.5 (August 2026) -Corrects the Kotlin version bound introduced in 4.0.3. Upgrade if your project uses Kotlin 2.2 or -newer together with Bugsee's Compose integration. +Restores Jetpack Compose instrumentation on Kotlin 2.2, 2.3 and 2.4, and corrects the Kotlin version +bound introduced in 4.0.3. Upgrade if your project uses Kotlin 2.2 or newer with Compose. -- **Compose instrumentation is no longer loaded into Kotlin 2.2 and 2.3.** 4.0.3 introduced a gate - that skips the bundled Compose compiler plugin on Kotlin versions it has not been verified - against, but set the bound at 2.3 — one line too permissive in both directions. Running each - line's compiler against a Compose consumer shows 2.2 and 2.3 abort the build with - `NoSuchMethodError: irCall(IrBuilderWithScope, IrSimpleFunctionSymbol)`: Kotlin 2.2 widened that - builder's receiver type, and a compiled call site binds the exact signature, so the change is - binary-breaking even though the source still compiles. The bound is now Kotlin 2.1. +- **Compose instrumentation now supports Kotlin 2.2, 2.3 and 2.4.** The bundled Compose compiler + plugin binds the exact API of the Kotlin compiler it was built against, so a single artifact + cannot serve every Kotlin release. It is now published once per Kotlin line, and the Gradle plugin + selects the matching one from your project's Kotlin version: - This only ever affected projects that pair Compose with Bugsee's `:compose` integration — the - injection pass exits early when the Bugsee Compose runtime is absent, so a Compose app without it - built normally. + | Your Kotlin | Artifact resolved | + | --- | --- | + | 1.9 – 2.1 | `com.bugsee:bugsee-compose-compiler-plugin` | + | 2.2 – 2.3 | `com.bugsee:bugsee-compose-compiler-plugin-k22` | + | 2.4 | `com.bugsee:bugsee-compose-compiler-plugin-k24` | - On Kotlin 2.2 and newer, Compose tag and secure-modifier injection is disabled with a warning and - the build succeeds. Everything else — network, logs, crashes, ANRs, startup tracing — is - unaffected, and Compose views are still captured; only the source-name tagging and automatic - secure-field marking are lost. Restoring the feature on 2.2–2.4 requires the compiler plugin to be - built separately against each Kotlin line, which is planned for a following release. + No configuration is required — the selection is automatic. On a Kotlin release no variant has been + verified against yet, Compose tag and secure-modifier injection stands down with a warning and the + build succeeds, as before. + +- **Corrects the Kotlin bound shipped in 4.0.3.** That release added a gate meant to skip the Compose + compiler plugin on unverified Kotlin versions, but set the bound at 2.3 — which does not hold. + Kotlin 2.2 widened the receiver type of an IR builder function, and a compiled call site binds the + exact signature, so 2.2 and 2.3 aborted the build with + `NoSuchMethodError: irCall(IrBuilderWithScope, IrSimpleFunctionSymbol)` rather than standing down. + + This only affected projects that pair Compose with Bugsee's Compose integration — the injection + pass exits early when the Bugsee Compose runtime is absent, so a Compose app without it built + normally. Every supported combination is now verified by running each Kotlin line's real compiler + and checking the injected call reaches the compiled output. ### 4.0.3 (August 2026) @@ -66,7 +74,7 @@ actually support it, and adds Gradle 9 compatibility. Drop-in upgrade from 4.0.x :::caution The bound shipped in 4.0.3 was set at Kotlin 2.3, which is incorrect — 2.2 and 2.3 also abort the - build. Use 4.0.4 or newer, where the bound is 2.1. + build. Use 4.0.5 or newer, which supports 2.2-2.4 properly. ::: - **Auto-added SDK floor raised to 7.1.0.** When the plugin adds `com.bugsee:bugsee-android` for an app that has not declared it, the version range is now `[7.1.0,8.0.0)`. Apps that declare the SDK @@ -179,7 +187,7 @@ App-startup bytecode tracing tiers (MINIMAL through FULL) plus the typed `Startu - Bundle upload tasks are now compatible with Gradle's configuration cache, and the app token is masked in log output. - Maven publishing signing tasks are now disabled cleanly when GPG credentials aren't present, replacing a workaround that broke configuration cache. - Adds Kotlin 2.3 compatibility. *(Correction: this covered the plugin's own build only. The - bundled Compose compiler plugin does not support Kotlin 2.2 or newer — see 4.0.4.)* + bundled Compose compiler plugin gained Kotlin 2.2+ support only in 4.0.5.)* ### 4.0.0-beta3 (April 23 2026) From 0f0973bccce5869b6359e750232f1c01f4187912 Mon Sep 17 00:00:00 2001 From: Alexey Karimov Date: Tue, 11 Aug 2026 09:41:10 +0500 Subject: [PATCH 3/4] docs(gradle-plugin): document 4.0.4, which did publish after all MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 4.0.5 entry was written when 4.0.4 was still unpublished, so the page skipped from 4.0.5 to 4.0.3. 4.0.4 has since been released and is installable, leaving a published version with no release note. Adds a short entry marking it superseded and pointing at 4.0.5. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Change-Id: I3d9e5eaf3890bc22e735d6aa816dce70fec168e2 --- docs/sdk/android/gradle-plugin/releases.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/sdk/android/gradle-plugin/releases.mdx b/docs/sdk/android/gradle-plugin/releases.mdx index 8a3b43f..8cfd8f8 100644 --- a/docs/sdk/android/gradle-plugin/releases.mdx +++ b/docs/sdk/android/gradle-plugin/releases.mdx @@ -40,6 +40,16 @@ bound introduced in 4.0.3. Upgrade if your project uses Kotlin 2.2 or newer with normally. Every supported combination is now verified by running each Kotlin line's real compiler and checking the injected call reaches the compiled output. +### 4.0.4 (August 2026) + +Superseded by 4.0.5 — upgrade past it. + +- **Stops loading the Compose compiler plugin into Kotlin 2.2 and 2.3.** A correction to the bound + shipped in 4.0.3, which admitted two Kotlin lines that abort the build (see 4.0.5 for the + underlying cause). On Kotlin 2.2+ this release disables Compose tag and secure-modifier injection + with a warning rather than failing. 4.0.5 restores the injection on those lines, so there is no + reason to stay on 4.0.4. + ### 4.0.3 (August 2026) Adds WebSocket capture, makes every bytecode injection verify that the SDK on the classpath can From cfe15629010189b6ceebba66af000706c4ccba10 Mon Sep 17 00:00:00 2001 From: Alexey Karimov Date: Wed, 12 Aug 2026 17:18:49 +0500 Subject: [PATCH 4/4] docs(gradle-plugin): simplify the 4.0.4 and 4.0.5 notes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drop the compiler-internals detail (NoSuchMethodError signatures, the moved extension-registration API, the per-Kotlin artifact coordinates) and describe what a consumer sees: which Kotlin versions Compose instrumentation covers, that selection is automatic, and which combination used to fail the build. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Change-Id: I8c8b2d50c4a367a4deba6960b38b7cc0a964871a --- docs/sdk/android/gradle-plugin/releases.mdx | 56 +++++++-------------- 1 file changed, 19 insertions(+), 37 deletions(-) diff --git a/docs/sdk/android/gradle-plugin/releases.mdx b/docs/sdk/android/gradle-plugin/releases.mdx index 8cfd8f8..09abc2d 100644 --- a/docs/sdk/android/gradle-plugin/releases.mdx +++ b/docs/sdk/android/gradle-plugin/releases.mdx @@ -11,44 +11,26 @@ slug: "/sdk/android/gradle-plugin/releases" ### 4.0.5 (August 2026) -Restores Jetpack Compose instrumentation on Kotlin 2.2, 2.3 and 2.4, and corrects the Kotlin version -bound introduced in 4.0.3. Upgrade if your project uses Kotlin 2.2 or newer with Compose. - -- **Compose instrumentation now supports Kotlin 2.2, 2.3 and 2.4.** The bundled Compose compiler - plugin binds the exact API of the Kotlin compiler it was built against, so a single artifact - cannot serve every Kotlin release. It is now published once per Kotlin line, and the Gradle plugin - selects the matching one from your project's Kotlin version: - - | Your Kotlin | Artifact resolved | - | --- | --- | - | 1.9 – 2.1 | `com.bugsee:bugsee-compose-compiler-plugin` | - | 2.2 – 2.3 | `com.bugsee:bugsee-compose-compiler-plugin-k22` | - | 2.4 | `com.bugsee:bugsee-compose-compiler-plugin-k24` | - - No configuration is required — the selection is automatic. On a Kotlin release no variant has been - verified against yet, Compose tag and secure-modifier injection stands down with a warning and the - build succeeds, as before. - -- **Corrects the Kotlin bound shipped in 4.0.3.** That release added a gate meant to skip the Compose - compiler plugin on unverified Kotlin versions, but set the bound at 2.3 — which does not hold. - Kotlin 2.2 widened the receiver type of an IR builder function, and a compiled call site binds the - exact signature, so 2.2 and 2.3 aborted the build with - `NoSuchMethodError: irCall(IrBuilderWithScope, IrSimpleFunctionSymbol)` rather than standing down. - - This only affected projects that pair Compose with Bugsee's Compose integration — the injection - pass exits early when the Bugsee Compose runtime is absent, so a Compose app without it built - normally. Every supported combination is now verified by running each Kotlin line's real compiler - and checking the injected call reaches the compiled output. +Restores Jetpack Compose instrumentation on Kotlin 2.2, 2.3 and 2.4. Upgrade if your project uses +Kotlin 2.2 or newer together with Compose. + +- **Compose instrumentation works on current Kotlin versions again.** Compose tag and secure-field + injection previously only worked on Kotlin 2.1 and older. It now covers Kotlin 2.2, 2.3 and 2.4, + with the plugin selecting the right build for your Kotlin version automatically — no configuration + needed. On a Kotlin release that has not been verified yet, Compose instrumentation is skipped + with a warning and your build still succeeds, as before. + +- **Fixes a build failure on Kotlin 2.2 and 2.3.** In 4.0.3, projects combining Compose with + Bugsee's Compose integration could fail to build on those Kotlin versions. Projects using Compose + without Bugsee's Compose integration were unaffected. ### 4.0.4 (August 2026) Superseded by 4.0.5 — upgrade past it. -- **Stops loading the Compose compiler plugin into Kotlin 2.2 and 2.3.** A correction to the bound - shipped in 4.0.3, which admitted two Kotlin lines that abort the build (see 4.0.5 for the - underlying cause). On Kotlin 2.2+ this release disables Compose tag and secure-modifier injection - with a warning rather than failing. 4.0.5 restores the injection on those lines, so there is no - reason to stay on 4.0.4. +- **Disables Compose instrumentation on Kotlin 2.2 and newer** rather than failing the build, after + the version limit shipped in 4.0.3 turned out to be too permissive. 4.0.5 restores the + instrumentation on those versions, so there is no reason to stay on 4.0.4. ### 4.0.3 (August 2026) @@ -83,8 +65,8 @@ actually support it, and adds Gradle 9 compatibility. Drop-in upgrade from 4.0.x succeeds. :::caution - The bound shipped in 4.0.3 was set at Kotlin 2.3, which is incorrect — 2.2 and 2.3 also abort the - build. Use 4.0.5 or newer, which supports 2.2-2.4 properly. + The Kotlin version limit shipped in 4.0.3 was set one release too high — Compose instrumentation + still fails the build on Kotlin 2.2 and 2.3. Use 4.0.5 or newer, which supports them properly. ::: - **Auto-added SDK floor raised to 7.1.0.** When the plugin adds `com.bugsee:bugsee-android` for an app that has not declared it, the version range is now `[7.1.0,8.0.0)`. Apps that declare the SDK @@ -196,8 +178,8 @@ App-startup bytecode tracing tiers (MINIMAL through FULL) plus the typed `Startu - VCS information (branch, commit, dirty flag) is now sent as a nested object in the upload payload rather than flat fields. - Bundle upload tasks are now compatible with Gradle's configuration cache, and the app token is masked in log output. - Maven publishing signing tasks are now disabled cleanly when GPG credentials aren't present, replacing a workaround that broke configuration cache. -- Adds Kotlin 2.3 compatibility. *(Correction: this covered the plugin's own build only. The - bundled Compose compiler plugin gained Kotlin 2.2+ support only in 4.0.5.)* +- Adds Kotlin 2.3 compatibility. *(Correction: this covered the plugin's own build. Compose + instrumentation gained Kotlin 2.2+ support only in 4.0.5.)* ### 4.0.0-beta3 (April 23 2026)