You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+25Lines changed: 25 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [0.10.0] - 2026-06-11
9
+
10
+
### Added
11
+
-**Stability Doctor (IDE plugin)** — a ranked, quantified "what to fix first" list that combines the static stability verdict, the downstream cascade blast radius, and measured runtime waste (Reality Check) into prioritized prescriptions. Scores are **ESTIMATED** (static only, works with no device) or **MEASURED** (backed by live heatmap data; measured waste always outranks estimates). Each prescription shows its problem parameters with static reasons, runtime grades, and value provenance, plus one-click fixes: change `var` → `val` (aborts if write usages exist), annotate with `@Immutable`/`@Stable`, add the type to the stability configuration file, and wrap call-site arguments in `remember(keys) { ... }` for silent-waste parameters (guarded by conservative safety rules and a preview dialog). New **Doctor** tool-window tab, **Code → Run Stability Doctor** action, and a settings group.
12
+
-**Trace-All mode (Gradle + compiler + runtime)** — opt-in module-wide auto-instrumentation: every restartable composable is traced as if it carried `@TraceRecomposition`, so the Live Heatmap, Reality Check, and Stability Doctor get module-wide runtime data without manual annotations.
13
+
```kotlin
14
+
composeStabilityAnalyzer {
15
+
traceAll {
16
+
enabled.set(true) // default: false (opt-in)
17
+
threshold.set(2) // default: 2 — skips the initial-composition burst
18
+
variants.set(listOf("debug")) // default: ["debug"]; never applies to tests
19
+
}
20
+
}
21
+
```
22
+
Explicit `@TraceRecomposition` annotations keep their own tag/threshold; previews, inline/readonly/non-restartable composables, and property getters are excluded automatically.
23
+
-**Fully qualified names in recomposition logs** — log headers now carry trailing `(fq: com.example.UserProfile)` and `(auto)` tokens (backward compatible with older parsers), so the IDE attributes runtime data precisely even when composables share a simple name across packages. `RecompositionEvent` gains additive `fqName` and `isAutoTraced` fields.
24
+
25
+
### Fixed
26
+
-**Android Studio freeze when starting the heatmap on large projects** (#168) — the typealias-resolution fallback iterated and parsed every Kotlin file in the project, and the heatmap inlay refresh ran analysis on the EDT. Lookups now use stub indexes, and the refresh computes on a background thread (the EDT only applies inlay mutations).
27
+
-**AGP 9 no longer leaks to consumers** (#165, thanks to @valeriopilo-tomtom) — the Gradle plugin depends on `gradle-api` as `compileOnly` and isolates all AGP types behind an Android-only registrar, so KMP/JVM projects without AGP work and AGP 8.x projects no longer get AGP 9 on their buildscript classpath.
28
+
-**Nullable types now match the stability configuration file** (#166, thanks to @xplayerCZ) — `kotlinx.datetime.LocalTime?` matches a `kotlinx.datetime.LocalTime` config entry.
29
+
30
+
### Changed
31
+
-**Runtime disabled-path hardening** — with `ComposeStabilityAnalyzer.setEnabled(false)`, trackers allocate nothing (early exits before any event construction); the tracker cache is thread-safe and keyed by fully qualified name to avoid cross-package collisions.
Copy file name to clipboardExpand all lines: compose-stability-analyzer-idea/CHANGELOG.md
+9Lines changed: 9 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,15 @@
2
2
3
3
All notable changes to the IntelliJ IDEA plugin will be documented in this file.
4
4
5
+
## [0.10.0] - 2026-06-11
6
+
7
+
### Added
8
+
-**Stability Doctor** — a ranked, quantified fix list combining the static stability verdict, cascade blast radius, and measured runtime waste into prioritized prescriptions with one-click fixes (`var` → `val`, `@Immutable`/`@Stable`, stability-config entry, and guarded `remember(...)` hoisting for silent-waste parameters). Scores are **ESTIMATED** without a device and upgrade to **MEASURED** during a heatmap session. New **Doctor** tool-window tab, **Code → Run Stability Doctor** action, and a **Stability Doctor** settings group.
9
+
-**Precise runtime-data matching** — heatmap/Reality/Doctor data is keyed by fully qualified name when the runtime reports it (`(fq:)` log token, runtime ≥ 0.10.0), so same-named composables across packages no longer share inlays; older runtimes keep working via simple-name fallback.
10
+
11
+
### Fixed
12
+
-**Android Studio freeze when starting the heatmap on large projects** (#168) — typealias and source-location lookups now use stub indexes instead of iterating/parsing every project file, and the heatmap inlay refresh runs its analysis on a background thread (the EDT only applies inlay mutations). Refresh ticks are skipped while a previous cycle is still running and during indexing.
<li><b>New: Stability Doctor</b> - A ranked, quantified "what to fix first" list combining the static stability verdict, cascade blast radius, and measured runtime waste into prioritized prescriptions with one-click fixes (var → val, @Immutable/@Stable, stability-config entry, and guarded remember(...) hoisting for silent-waste parameters). Works without a device (ESTIMATED scores) and upgrades to MEASURED during a heatmap session. New Doctor tool-window tab and Code → Run Stability Doctor action.</li>
80
+
<li><b>Trace-All support</b> - With the Gradle plugin's new traceAll mode (0.10.0), the Heatmap, Reality Check, and Doctor receive module-wide runtime data without manual @TraceRecomposition annotations; runtime data is matched by fully qualified name, so same-named composables across packages resolve precisely.</li>
81
+
<li><b>Fixed: Android Studio freeze when starting the heatmap on large projects</b> - lookups now use stub indexes and the inlay refresh runs its analysis on a background thread.</li>
0 commit comments