Releases: Hessesian/kmp-lsp
Releases · Hessesian/kmp-lsp
Release list
v0.24.0
What's Changed
- fix(perf+indexer): scan.lock sentinel, spawn_blocking apply, O(n) bulk insert by @Hessesian in #167
Full Changelog: v0.23.0...v0.24.0
v0.23.0
v0.22.1
v0.22.0
What's Changed
- feat: agent confluence — check, --exclude-imports, diagnose fixes, parser false positive by @Hessesian in #166
Full Changelog: v0.21.0...v0.22.0
v0.21.0
Features
- Sources-JAR auto-mount —
*-sources.jarfiles are now unpacked in-memory at startup directly from the Gradle module cache (~/.gradle/caches/modules-2/files-2.1). Go-to-definition into library source code (Compose, AndroidX, Kotlin stdlib, …) works automatically without runningkmp-lsp extract-sources. The manualextract-sourcesstep is no longer needed for most projects; it remains available as a fallback for cases where Gradle sources are not cached locally. - Sources-JAR parse cache — parsed sources JARs are fingerprinted and cached on disk. On subsequent startups, unchanged JARs are loaded from the cache instead of re-parsed, making cold-start indexing significantly faster for large Gradle caches.
- Semantic tokens: import highlighting —
importstatements now receive aNAMESPACEsemantic token over the full dotted path (e.g.java.util.Scanner,androidx.compose.ui.Modifier) in both Kotlin and Java files. - Diagnostics off async thread —
when-branch diagnostics and call-argument diagnostics are now computed insidetokio::task::spawn_blocking, keeping the async runtime free during CPU-bound work. Reduces stutter on large files.
Bug fixes
- Extension function diagnostics — call-argument diagnostics now correctly resolve extension functions: receiver type is matched against the extension's first implicit parameter, preventing false-positive "missing argument" errors on extension calls.
- Generic type inference in diagnostics —
whenbranch type member resolution no longer varies by query order; type cache always resolves with an empty branch set to eliminate key-collision instability. - Inlay hints:
::classarguments — inlay hints now infer the correct type fromSomeClass::classliteral arguments by delegating toresolve_call_expr_type. - JAR symbols in go-to-def — JAR-indexed symbols are now reachable through all lookup paths: explicit import, qualified, and unqualified. Package is correctly extracted from sidecar detail.
- Copy() inside receiver lambdas —
copy()calls inside lambda receivers are no longer incorrectly attributed to JAR symbols, preventing noise in hover and diagnostics. - install.sh — rewrote with
#!/usr/bin/env bashshebang (was/bin/sh), correctgunzipdecompression forkmp-jar-indexer, and literal-match checksum lookup viaawk(wasgrepwith regex hazard on dots).
What's Changed
- fix: resolve extension functions on uppercase class qualifiers by @Hessesian in #156
- fix: generic type param inference + extension fn precedence over members by @Hessesian in #157
- fix(sources-jar): dedup on reindex, retain extensions on reset, sources-wins over compiled by @Hessesian in #160
- fix: parameter diagnostics correctly resolve extension functions by @Hessesian in #158
- fix(perf): move diagnostic computation into spawn_blocking by @Hessesian in #163
- fix(install+semantic-tokens): fix install.sh and highlight import statements by @Hessesian in #164
Full Changelog: v0.20.0...v0.21.0
What's Changed
- fix: resolve extension functions on uppercase class qualifiers by @Hessesian in #156
- fix: generic type param inference + extension fn precedence over members by @Hessesian in #157
- fix(sources-jar): dedup on reindex, retain extensions on reset, sources-wins over compiled by @Hessesian in #160
- fix: parameter diagnostics correctly resolve extension functions by @Hessesian in #158
- fix(perf): move diagnostic computation into spawn_blocking by @Hessesian in #163
- fix(install+semantic-tokens): fix install.sh and highlight import statements by @Hessesian in #164
Full Changelog: v0.20.0...v0.21.0
What's Changed
- fix: resolve extension functions on uppercase class qualifiers by @Hessesian in #156
- fix: generic type param inference + extension fn precedence over members by @Hessesian in #157
- fix(sources-jar): dedup on reindex, retain extensions on reset, sources-wins over compiled by @Hessesian in #160
- fix: parameter diagnostics correctly resolve extension functions by @Hessesian in #158
- fix(perf): move diagnostic computation into spawn_blocking by @Hessesian in #163
- fix(install+semantic-tokens): fix install.sh and highlight import statements by @Hessesian in #164
Full Changelog: v0.20.0...v0.21.0
v0.20.0
What's Changed
- feat: Windows port — cross-platform path normalisation and CI matrix by @Hessesian in #153
- rename: kotlin-lsp → kmp-lsp (Kotlin Multiplatform Language Server) by @Hessesian in #155
Full Changelog: v0.19.1...v0.20.0
v0.19.1
v0.18.0
What's Changed
- fix(references): nested uppercase types no longer pollute from unrelated importers by @Hessesian in #123
Full Changelog: v0.17.2...v0.18.0
v0.17.2
v0.17.1
What's Changed
- Kotlin cli refactor scripts by @Hessesian in #116
- refactor(sig): fix two high-CRAP complexity offenders by @Hessesian in #118
- fix(completion): include cross-package symbols for single-char uppercase prefix by @Hessesian in #120
- fix(rename): guard against keyword renames in Kotlin and Java by @Hessesian in #121
Full Changelog: v0.16.0...v0.17.1