github expert-lsp/expert v0.1.0-rc.0

latest releases: nightly, v0.1.8, v0.1.7...
pre-release5 months ago

0.1.0-rc.0 (2026-02-19)

For those following really closely, we will be announcing this in the next day or so. The team will be ensuring that the VSCode extension can correctly download the pre-compiled release and things seem fine.

Please check out https://expert-lsp.org/news in the coming days for a full announcement that includes expectations for this release. We want people to be excited, but we also want them to be aware that they may still run into bugs. We want to know about these bugs, so please create issues and work with us to solve them.

Thanks for following along!

Note

The changes listed here are probably not super relevant since this is the first release, but it contains all the patches since we started using the release-please workflow early in development. Subsequent release changelogs will be more useful.

⚠ BREAKING CHANGES

  • add CLI flag handling (#185)

Features

Bug Fixes

  • add lsp logging when failing to find an elixir executable (#169) (4dfba22)
  • avoid crashing when calling ActiveProjects.active?/1 (#297) (ae352b9)
  • better handling of native<->lsp conversions (#34) (88dc456)
  • bring back completions for things defined in test files (#32) (8d7a47a)
  • clamp start_char for comletion prefix (#239) (46d3446)
  • cli: don't crash when there is no CLI arg provided (#348) (9a9140e)
  • cli: show per tool version engine builds (#301) (399b2a0)
  • correctly order aliases (#322) (fb269fa)
  • Crash when typing english (#742) (697eac9), closes #741
  • Current module not identified in defimpl (#665) (29f1055)
  • deps: update sourceror to 1.10.1 to fix range calculations (#362) (59489c7)
  • disable shell sessions when fetching the PATH (#177) (78236ef)
  • do not clamp character recvd from client (#123) (1a3b843)
  • don't convert to_lsp twice in server specific messages (#190) (33bb850)
  • don't sometimes hang (5d6bcde)
  • Edge case for module loading (#738) (dbbef2c)
  • elixir path discovery (#248) (f9b119c)
  • engine_node: error reason not being shown (#277) (c7b7fa8)
  • engine: avoid duplicate spec annotation when falling back to ElixirSense (#410) (5b4faee)
  • engine: code lens exception when mix.exs not found (#281) (f9c81da)
  • engine: correctly match any-struct references (#347) (6a92581)
  • engine: don't attempt search when ETS checkpoint is loading (#308) (438c965)
  • engine: don't crash on hover for piped expression in curly braces in HEEx (#350) (f0044d6)
  • engine: don't crash when calling references on an atom (#396) (a8badfc)
  • engine: don't terminate search store on timeout (#338) (d91f6af), closes #303
  • engine: download Hex and Rebar only if missing (#337) (bc7f57e)
  • engine: handle failing build script (#188) (ce9ac22)
  • engine: handle matches against any struct (#343) (86fe8ec)
  • engine: improve entity resolution for HEEx components with curly braces (#328) (eff68bf)
  • engine: index functions with default arguments (#402) (1aea6c7)
  • engine: resolve correct arity from inside ~H sigil (#314) (d2eacc0)
  • engine: stuck on format request (#378) (aa5ba2b)
  • engine: support go to definition when function is called via MODULE (#261) (b1d5e17)
  • Exclude expert dependencies from completions based on project dependencies (3a47058)
  • expert: always log PATH on start (#387) (bfeb8a2)
  • expert: build engine for elixir version 1.16.1 and below (#330) (2a2bdd9)
  • expert: correctly handle unicode characters sent via port (#388) (4fe530b)
  • expert: print to stderr when no transport argument provided (#280) (fc841e4)
  • expert: save new configuration after workspace/didChangeConfiguration (#282) (b060d23)
  • expert: spec completions for functions with guards (#406) (d615858)
  • fallback to packaged or system elixir (#300) (10262cf)
  • filter out RELEASE_ROOT from PATH instead of running a login shell (#344) (375391c)
  • fix release-all command (492022f)
  • fixup namespacing and packaging (#29) (69ac8fe)
  • forge: don't crash on analysis of code with incorrect aliases (#408) (7c30502)
  • forge: handle interpolation when it starts with a special token (#342) (dd7b027)
  • forge: improve log when Spitfire crashes (#352) (80900e5)
  • formatting format incorrectly when contain special character (#252) (b5b001b)
  • Function definition extractor chokes on macro functions (#682) (ccf355f), closes #680
  • give proper argument to TaskQueue.add/2 in Server.handle_message (#791) (34ee071)
  • handle missing metadata in indexer extractors (#390) (71c33f1)
  • handle spitfire crashes (#319) (ffe360c)
  • handle string ids in requests (#120) (5d6bcde)
  • include erlang source files when packaging engine (580ccc8)
  • inherited PATH pollutes project environment (#298) (8e1bb3d)
  • interpolation_ranges/1 should work for empty interpolations (#321) (3ec1810)
  • Invalid reads for requests that contain multi-byte characters (#661) (f6ca36f)
  • let the system figure out the elixir version for the project (#162) (5dacce4)
  • log project's erl path (#367) (d8c81cd)
  • make sure asdf shims are in the PATH (#87) (7626f90)
  • Module suggestion was incorrect for files with multiple periods (#705) (824df66), closes #703
  • nil.struct/0 is undefined when receiving shutdown (#250) (849003e)
  • nix: use eval release command (#199) (25f80c8)
  • Non-string test names crash exunit indexer (#676) (29373d5), closes #675
  • properly log when engine fails to initialize (#244) (81e1184)
  • properly set the mix env when building expert (4caf258)
  • release: don't cd into rel directory before starting app (#268) (3b76e97)
  • remove all usages of epmd (#339) (cef4adb)
  • remove erts from extra_applications (#202) (aa8bd84)
  • remove escape sequences from PATH in fish (#237) (b237fd5)
  • Resolve doesn't recognize zero-arg defs as functions (#606) (38a649c), closes #604
  • resolve function delegates on hover docs (#399) (a3c629a)
  • revert "feat: epmdless deployments (#167)" (#180) (0f66faa)
  • revert dev server (#48) (9345e31)
  • sanitize node names (#323) (7591304)
  • start projects after server is initialized (#294) (76d6cd5)
  • stop sending genlsp datastructures to engine (#31) (43d406f)
  • support Fish shell's space-separated PATH format (#172) (9803293)
  • support mise et al on windows (#304) (3cc343f)
  • support Nushell for PATH detection (#272) (8a9fd3d)
  • trim any quotes wrapping PATH when elixir is managed by mise (#82) (d828966)
  • trim PATH returned by shell (#213) (735199d)
  • update document store on didchange even without the engine running (#326) (c80b72d)
  • update gen_lsp to 0.11.3 (#315) (13cfee6), closes #245
  • update spitfire to v0.3.4 (#373) (6f57f16)
  • update spitfire to v0.3.5 (#376) (85822fe)
  • use Calendar.UTCOnlyTimeZoneDatabase instead of project configured tz database (#324) (9e913f6)
  • use correct build directory when namespacing expert (b6540dd)
  • use dynamic registrations and start project node asynchronously (#30) (e1ce165)
  • use minimal PATH on unix instead of fully removing it (#305) (74da1a5)
  • use project directory when building engine (#203) (c5ac441)
  • utf8_prefix should take into account empty lines (#164) (16c21e0)

Miscellaneous Chores

Don't miss a new expert release

NewReleases is sending notifications on new releases.