Skip to content

feat(kotlin): update language server to 262.9593.0 - #1811

Merged
opcode81 merged 6 commits into
oraios:mainfrom
TyceHerrman:agent/kotlin-lsp-262.9593.0
Aug 8, 2026
Merged

feat(kotlin): update language server to 262.9593.0#1811
opcode81 merged 6 commits into
oraios:mainfrom
TyceHerrman:agent/kotlin-lsp-262.9593.0

Conversation

@TyceHerrman

Copy link
Copy Markdown
Contributor

Summary

  • Update Serena's managed Kotlin LSP from 261.13587.0 to 262.9593.0.
  • Support JetBrains' platform-specific .sit, .tar.gz, and .win.zip archives, bundled JBR launchers, and Windows ARM64 builds.
  • Preserve custom-version compatibility across the legacy archive layout and both modern CDN paths.
  • Give the modern IntelliJ server a per-project system path and wait for its explicit startup-ready notification.
  • Add dependency-resolution and startup regression tests, and update the documentation and changelog.

JetBrains still labels Kotlin LSP pre-alpha and does not publish a formal stable channel. This uses the newest published release while retaining Serena's existing CI quarantine for the resource-sensitive live Kotlin tests.

Validation

  • uv run pytest -vv test/solidlsp/kotlin/test_kotlin_dependency_provider.py test/solidlsp/kotlin/test_kotlin_startup.py (17 passed)
  • Same focused suite with CI=true (17 passed, confirming the new regression tests are not quarantined)
  • GRADLE_USER_HOME=... uv run pytest -vv test/solidlsp/kotlin/test_kotlin_basic.py -m kotlin on Python 3.13.14 (4 passed)
  • uv run poe lint
  • uv run poe type-check
  • git diff --check

Checklist

  • This PR follows the guidelines in CONTRIBUTING.md regarding the scope of PRs.
  • For changes that add features or fix problems, I have added an entry to CHANGELOG.md, which concisely describes the change.

@TyceHerrman
TyceHerrman marked this pull request as ready for review August 4, 2026 00:52
@TyceHerrman
TyceHerrman force-pushed the agent/kotlin-lsp-262.9593.0 branch from a83fbce to cf77047 Compare August 6, 2026 18:34
@MischaPanch

Copy link
Copy Markdown
Member

@opcode81 is using the new mechanism you introduced for managing LS dependencies appropriate here?

@TyceHerrman

Copy link
Copy Markdown
Contributor Author

I did some other work here beside just updating the kotlin LS, but i could keep only those changes and then the new LS dependency management could be run after to update kotlin ls

@MischaPanch MischaPanch left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will let @opcode81 review, so I just had a brief look and some comments. This bypasses existing download mechanisms - both old and new - thus increasing code complexity. If possible, such bypassing should be avoided

"osx-x64": (".sit", "zip", ("kotlin-server-{version}", "bin", "intellij-server")),
"osx-arm64": ("-aarch64.sit", "zip", ("kotlin-server-{version}", "bin", "intellij-server")),
}
KOTLIN_SERVER_LAUNCHER_NAMES = frozenset({"intellij-server", "intellij-server.exe"})

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one name should be enough, we can condition on the OS

url=f"https://download-cdn.jetbrains.com/kotlin-lsp/{version}/kotlin-lsp-{version}-{kotlin_suffix}.zip",
archive_type="zip",
launcher_parts=("kotlin-lsp.cmd",) if platform_id.is_windows() else ("kotlin-lsp.sh",),
sha256=INITIAL_KOTLIN_LSP_SHA256_BY_SUFFIX.get(kotlin_suffix) if version == INITIAL_KOTLIN_LSP_VERSION else None,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is there no sha on this path? Generally, the branching should be documented

raise ValueError(f"Kotlin LSP version must contain only dot-separated integers: {version!r}") from exc


def _uses_kotlin_server_packaging(version: str) -> bool:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know this is just an isolated small thing, but still I'm not a fan of these functions. They could be inlined, they seem to only exist to support tests, and tests should generally not import private functions unless there is a very good reason. I also doubt that the tests add too much value giving the amount of mocking going on there.

Overall, I think the code selecting the download path can be shortened and explained a bit better.

@TyceHerrman

Copy link
Copy Markdown
Contributor Author

i didn't think about it in previous comment, but now i updated the Kotlin provider to use DownloadedDependency from #1799.

Addressed the three review points. Launcher detection is now OS-specific, the pinned initial and current artifacts use the central checksum database and arbitrary custom versions explicitly remain unverified, and the download-path selection is consolidated and documented without the top-level private helpers.

…9593.0

Conflicts:
	CHANGELOG.md
	src/solidlsp/resources/downloaded_dependency_hashes.json
@opcode81
opcode81 merged commit 217517e into oraios:main Aug 8, 2026
22 checks passed
@opcode81

opcode81 commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Thanks!

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.

3 participants