Metals v1.6.5 - Osmium
We're happy to announce the release of Metals v1.6.5, which brings several exciting new features including completions for implicit classes, auto imports for Java, Type Hierarchy support, and an updated MCP server implementation.
| Commits since last release | 110 |
| Merged PRs | 110 |
| Contributors | 16 |
| Closed issues | 43 |
| New features | 3 |
For full details: https://github.com/scalameta/metals/milestone/84?closed=1
Metals is a language server for Scala that works with VS Code, Vim, Emacs, Zed, Helix and Sublime Text. Metals is developed at the Scala Center and VirtusLab with the help from contributors from the community.
TL;DR
Check out https://scalameta.org/metals/, and give Metals a try!
- Completions for implicit classes
- Add auto imports for Java
- Switch to streamable HTTP standard
- Implement Type Hierarchy support
- Incoming Metals v2
Completions for implicit classes
Metals can now suggest methods from implicit classes that are not yet imported
in your code. When you type a method that could come from an implicit class in
your workspace or dependencies, Metals will show these completions with an
(implicit) label and automatically add the necessary import when you accept
the completion.
For example, if you want to use the millisecond method from scala.concurrent.duration package,
typing 2.mill will now suggest millisecond from DurationInt and
add import scala.concurrent.duration.DurationInt when selected. This also works for
implicit classes defined in your own workspace - if you define
implicit class MyIntOps(n: Int) with a myDouble method, you can use it
anywhere in your project and Metals will handle the import automatically.
Thanks to pielas for implementing this feature!
Add auto imports for Java
Metals now supports auto imports for Java files! When you use a class that isn't
imported yet, Metals will suggest the import and automatically add it for you
when you accept the completion. Metals won't add duplicate imports and properly handles wildcard
imports (e.g., java.util.*). If there's a naming conflict with an existing
import, Metals will insert the fully qualified class name instead.
Thanks to zielinsky for working on this!
Switch to streamable HTTP standard
The Metals MCP server has been updated to use the new streamable HTTP transport standard. This change brings the MCP implementation in line with the latest MCP specification and improves compatibility with various MCP clients.
What changed: The MCP server endpoint has been changed from /sse
(Server-Sent Events) to /mcp. For some users with common editors like Cursor,
VS Code, or Claude, Metals will automatically rewrite your existing
configuration to use the new endpoint when you start the MCP server.
Manual migration: If you have a custom MCP client configurations, you'll need
to update the URL from http://localhost:<port>/sse to
http://localhost:<port>/mcp. Metals will attempt to detect and update
configurations automatically, but if you maintain your own setup, please update
accordingly.
Implement Type Hierarchy support
Metals now supports the LSP Type Hierarchy feature, allowing you to explore class inheritance relationships directly from your editor. This feature provides three capabilities:
- Prepare Type Hierarchy: When you place your cursor on a class, trait, object, or type, you can request to see its type hierarchy.
- Supertypes: Navigate upward in the inheritance tree to see parent classes
and implemented traits. For example, selecting
Dogwill show youAnimalandAnyRefifDog extends Animal. - Subtypes: Navigate downward to discover all classes that extend or implement the selected type.
This feature works across your entire project, including dependencies stored in JAR files. The type hierarchy information is indexed and stored in a database for fast lookups.
To use this feature, look for "Show Type Hierarchy" or similar commands in your editor (the exact UI depends on your editor's LSP support).
Thanks to warcholjakub for implementing this feature!
Incoming Metals 2
We are currently testing and working on new Metals 2, which is a major overhaul of how Metals works. The main intention is to make it much better for larger monorepo setups as well as improve user experience even if your codebase is not compiling.
Take a look at the new Metals 2 website for more information.
We don not have a release date yet, but we want to make sure that all the features available in Metals 1 are available in Metals 2.
Miscellaneous
- bugfix: Filter out invalid multiline comment fold ranges (discapes)
- bugfix: Correct autoImportBuilds config key name (jklukas)
- improvement: Support
build.mill.yamlbuild files lolgab - bugfix:Fix script definition URIs to point to original .sc files (zielinsky)
- improvement: Use mill scripts if available in the workspace (tgodzik)
- improvement: Support inspecting Java generic types in MCP (warcholjakub)
- bugfix: SQL syntax highlighting in complex cases (warcholjakub)
- bugfix: Fix SQL highlighting for nested interpolators #8047 (Mensh1kov)
- improvement:Make Metals look for
./milland./mill.batfiles when identifying Mill projects lihaoyi - improvement: Show a warning when newer -release version flag is used (tgodzik)
- bugfix: ZIO test explorer reveals sub-tasks with provideLayer (krrish175-byte)
- improvement: Add memory usage warning when heap is nearly full (krrish175-byte)
- bugfix: Inline value false-positive shadowing with lambda params (krrish175-byte)
- Fix: Handle InvalidSymbolException in StacktraceAnalyzer (#7974) (krrish175-byte)
- improvement: Use jar based coursier as a fallback when not available in PATH (tgodzik)
- improvement: Compile only JVM targets by default when not focusing on Native and JS specific files. (warcholjakub)
- improvement: Forward credentials to Bloop process (krrish175-byte)
- bugfix: Fix inlining interpolated variables #8108 (johndoknjas)
- bugfix: Fix MCP server identification for multi-project workspaces (krrish175-byte)
Contributors
Big thanks to everybody who contributed to this release or reported an issue!
$ git shortlog -sn --no-merges v1.6.4..v1.6.5
42 scalameta-bot
33 Tomasz Godzik
12 dependabot[bot]
4 Jakub Warchoł
7 Krrish Biswas
2 Jeff Klukas
2 Zieliński Patryk
1 John Doknjas
1 Jonathan Burns
1 Li Haoyi
1 Lorenzo Gabriele
1 Mateusz Piękos
1 Mensh1kov
1 Miika Tuominen
1 Russ White
Merged PRs
v1.6.5 (2026-01-20)
Merged pull requests:
- fix: Fix MCP server identification for multi-project workspaces #8070 (krrish175-byte)
- build(deps): Update jackson-databind from 2.20.1 to 2.21.0 #8126 (scalameta-bot)
- build(deps): Update scalafmt-core, scalafmt-dynamic from 3.10.3 to 3.10.4 #8127 (scalameta-bot)
- build(deps): Update scalameta, semanticdb-metap, ... from 4.14.4 to 4.14.5 #8128 (scalameta-bot)
- build(deps): Update protobuf-java from 4.33.3 to 4.33.4 #8119 (scalameta-bot)
- build(deps): Update flyway-core from 11.20.1 to 11.20.2 #8121 (scalameta-bot)
- build(deps): Update cli_3, scala-cli-bsp from 1.11.0 to 1.12.0 #8122 (scalameta-bot)
- build(deps): Update requests from 0.9.0 to 0.9.2 #8120 (scalameta-bot)
- Inlining interpolated variables #8108 (johndoknjas)
- build(deps): bump undici from 6.21.3 to 6.23.0 in /website in the npm_and_yarn group across 1 directory #8116 (dependabot[bot])
- chore: Update Bloop to 2.0.18 #8114 (tgodzik)
- bugfix: Fixed reversed flag #8115 (tgodzik)
- bugfix: Make sure we use stable version #8113 (tgodzik)
- Add validation and fallback for SemanticDB version resolution #8105 (russwyte)
- bugfix: Don't test expression evaluator availability post 3.8.0 #8112 (tgodzik)
- bugfix: Use stable latest release to avoid using 2.0.0-M prematurely #8111 (tgodzik)
- docs(contributing): Improve documentation for tests and Scala 3 PC location #8106 (krrish175-byte)
- feat: Forward credentials to Bloop process #8082 (krrish175-byte)
- build(deps): Update protobuf-java from 4.33.2 to 4.33.3 #8102 (scalameta-bot)
- build(deps): Update scalameta, semanticdb-metap, ... from 4.14.3 to 4.14.4 #8103 (scalameta-bot)
- bugfix: Use proper exception handling when request to user timeouts #8101 (tgodzik)
- bugfix: Handle non relative URI in semanticdb #8100 (tgodzik)
- fix: compile only JVM targets by default #8060 (warcholjakub)
- build(deps): Update metaconfig-core from 0.18.1 to 0.18.2 #8098 (scalameta-bot)
- build(deps): Update flyway-core from 11.20.0 to 11.20.1 #8096 (scalameta-bot)
- build(deps): Update sbt, scripted-plugin from 1.11.7 to 1.12.0 #8097 (scalameta-bot)
- build(deps): Update coursier, ... from 2.1.25-M22 to 2.1.25-M23 #8094 (scalameta-bot)
- build(deps): Update mcp, mcp-json-jackson2 from 0.17.0 to 0.17.1 #8095 (scalameta-bot)
- chore: Test with Scala 3.8.0-RC6 #8092 (tgodzik)
- feat: implement Type Hierarchy support #8058 (warcholjakub)
- Add hint to gradle docs for manual bloopInstall #8084 (jbburns)
- improvement: Use jar based coursier as a fallback #8077 (tgodzik)
- Fix: Handle InvalidSymbolException in StacktraceAnalyzer (#7974) #8068 (krrish175-byte)
- tests: Revert tested version to 2.13.12 for older bazel versions #8079 (tgodzik)
- chore: Update react to 19.2.3 #8080 (tgodzik)
- improvement: Switch to new endpoint and offer a rewrite #8081 (tgodzik)
- Fix: Inline value false-positive shadowing with lambda params (#7944) #8069 (krrish175-byte)
- chore: Update bloop-maven-plugin to 2.0.3 #8083 (tgodzik)
- chore: Test metals with Scala 3.8.0-RC5 #8078 (tgodzik)
- build(deps): bump qs from 6.14.0 to 6.14.1 in /website in the npm_and_yarn group across 1 directory #8064 (dependabot[bot])
- Add memory usage warning when heap is nearly full #8066 (krrish175-byte)
- build(deps): bump actions/upload-artifact from 5 to 6 #8072 (dependabot[bot])
- build(deps): bump coursier/setup-action from 1 to 2 #8073 (dependabot[bot])
- build(deps-dev): bump @types/node from 24.10.1 to 25.0.3 in /website #8074 (dependabot[bot])
- build(deps): Update jsoup from 1.21.2 to 1.22.1 #8076 (scalameta-bot)
- fix: ZIO test explorer reveals sub-tasks with provideLayer (#8054) #8063 (krrish175-byte)
- improvement: Show a warning when newer -release version flag is used #8059 (tgodzik)
- techdebt: Switch to streamble HTTP standard #8057 (tgodzik)
- bugfix: Create a fallback for static imports in java #8056 (tgodzik)
- Make Metals look for
./milland./mill.batfiles when identifying Mill projects #8055 (lihaoyi) - fix: sql nested interpoles #8047 (Mensh1kov)
- build(deps): Update flyway-core from 11.19.1 to 11.20.0 #8049 (scalameta-bot)
- build(deps): Update metaconfig-core from 0.17.0 to 0.18.1 #8051 (scalameta-bot)
- build(deps): Update ujson from 4.4.1 to 4.4.2 #8053 (scalameta-bot)
- build(deps): Update scalafmt-core, scalafmt-dynamic from 3.10.2 to 3.10.3 #8052 (scalameta-bot)
- build(deps): Update mdoc-interfaces from 2.8.1 to 2.8.2 #8050 (scalameta-bot)
- chore: Bump next to 3.8.0-RC4 #8046 (tgodzik)
- bugfix: Update scalameta to 4.14.3 #8045 (tgodzik)
- chore: Send enabled rules in initialize params #8042 (tgodzik)
- bugfix: Fix issues with latest mill version #8043 (tgodzik)
- chore: Update bazel-bsp to 4.0.2 #8041 (tgodzik)
- build(deps): Update coursier, ... from 2.1.25-M21 to 2.1.25-M22 #8040 (scalameta-bot)
- improvement: Allow downloading nightly presentation compiler versions #8039 (tgodzik)
- build(deps): Update flyway-core from 11.19.0 to 11.19.1 #8038 (scalameta-bot)
- build(deps): bump loader-utils from 2.0.2 to 2.0.4 in /website in the npm_and_yarn group across 1 directory #8036 (dependabot[bot])
- build(deps): Update semanticdb-java from 0.11.1 to 0.11.2 #8037 (scalameta-bot)
- fix: SQL syntax highlighting #8035 (warcholjakub)
- fix(mcp): support inspecting Java generic types #8033 (warcholjakub)
- chore: Update scalameta to 4.14.2 #8032 (tgodzik)
- improvement: Use mill scripts if available in the workspace #8034 (tgodzik)
- build(deps): Update sbt-scalafix, scalafix-interfaces from 0.14.4 to 0.14.5 #8030 (scalameta-bot)
- build(deps): Update cli_3, scala-cli-bsp from 1.10.1 to 1.11.0 #8031 (scalameta-bot)
- chore: Update Scala CLI to 1.10.1 #8028 (tgodzik)
- build(deps): Update flyway-core from 11.18.0 to 11.19.0 #8023 (scalameta-bot)
- build(deps): Update scalafmt-core from 3.9.10 to 3.10.2 #8024 (scalameta-bot)
- Fix script definition URIs to point to original .sc files #8020 (zielinsky)
- chore: Add support for 2.12.21 #8019 (tgodzik)
- chore: Update mcp to newest version #8016 (tgodzik)
- chore: Bump Scala to 3.3.7 #8000 (tgodzik)
- Add auto imports for Java #7978 (zielinsky)
- Completions for implicit classes #7919 (pielas)
- build(deps): Update protobuf-java from 4.33.1 to 4.33.2 #8010 (scalameta-bot)
- build(deps): Update coursier, ... from 2.1.25-M20 to 2.1.25-M21 #8011 (scalameta-bot)
- build(deps): Update scalafmt-core from 3.9.4 to 3.9.10 #8013 (scalameta-bot)
- build(deps): Update mdoc-interfaces from 2.8.0 to 2.8.1 #8012 (scalameta-bot)
- build(deps): Update scalafmt-dynamic from 3.10.0 to 3.10.2 #8014 (scalameta-bot)
- chore: Don't crash when database is corrupted #8009 (tgodzik)
- chore: Clean workspace after Bazel tests to reduce disk usage #8008 (tgodzik)
- Support
build.mill.yamlbuild files #7985 (lolgab) - build(deps): Update mdoc-interfaces from 2.7.2 to 2.8.0 #8005 (scalameta-bot)
- build(deps): Update metaconfig-core from 0.16.0 to 0.17.0 #8006 (scalameta-bot)
- build(deps): Update flyway-core from 11.14.1 to 11.18.0 #8004 (scalameta-bot)
- fix: Bazel docs specify wrong extension for projectview.bazelproject #8002 (jklukas)
- fix: correct autoImportBuilds config key name #8001 (jklukas)
- bugfix: Filter out invalid multiline comment fold ranges #7979 (discapes)
- build(deps): bump express from 4.21.2 to 4.22.1 in /website in the npm_and_yarn group across 1 directory #7996 (dependabot[bot])
- build(deps): Update lz4-java from 1.8.0 to 1.8.1 #7989 (scalameta-bot)
- build(deps): bump actions/checkout from 5 to 6 #7991 (dependabot[bot])
- build(deps): bump @easyops-cn/docusaurus-search-local from 0.49.2 to 0.52.2 in /website #7992 (dependabot[bot])
- build(deps-dev): bump @types/node from 24.6.2 to 24.10.1 in /website #7993 (dependabot[bot])
- build(deps): bump mdast-util-to-hast from 13.1.0 to 13.2.1 in /website in the npm_and_yarn group across 1 directory #7994 (dependabot[bot])
- build(deps): Update flyway-core from 11.14.0 to 11.14.1 #7988 (scalameta-bot)
- build(deps): bump node-forge from 1.3.1 to 1.3.2 in /website in the npm_and_yarn group across 1 directory #7977 (dependabot[bot])
- build(deps): Update protobuf-java from 4.32.1 to 4.33.1 #7981 (scalameta-bot)
- build(deps): Update ujson from 4.3.2 to 4.4.1 #7983 (scalameta-bot)
- build(deps): Update coursier, ... from 2.1.25-M19 to 2.1.25-M20 #7984 (scalameta-bot)
- build(deps): Update jackson-databind from 2.20.0 to 2.20.1 #7980 (scalameta-bot)
- build(deps): Update os-lib from 0.11.5 to 0.11.6 #7982 (scalameta-bot)
- chore: Test Scala 3.8.0-RC2 #7976 (tgodzik)
- docs: Add release notes for Metals 1.6.4 #7971 (tgodzik)
