CHANGELOG
Changelog
0.1.0-rc.5 (2026-02-26)
Bug Fixes
0.1.0-rc.4 (2026-02-26)
Bug Fixes
0.1.0-rc.3 (2026-02-26)
Bug Fixes
- engine: skip unquoted aliases (#452) (9c5c89a)
- expert: always use MIX_ENV=dev when building engine (#442) (60cc5b7), closes #431
- expert: honor users PATH (#456) (c003eba)
- expert: send correct version in server_info (#457) (31a4226)
- isolate engine builds and retry them on dependency errors (#454) (3205d56)
- make Refactorex available on all trigger kinds (#445) (97c810b)
- properly setup logger (#455) (ba10ae8)
0.1.0-rc.2 (2026-02-24)
Features
Bug Fixes
- ensure
MIX_BUILD_PATHis set for child processes (#436) (3178302) - expert: check start_child return in initialized handler (#371) (de979ce)
- forward logs through window log handler (#418) (c608dc8), closes #382
- support multiple elixir versions on multiroot projects (#413) (dee595d)
0.1.0-rc.1 (2026-02-22)
Features
Bug Fixes
- build expert on latest nixpkgs (#422) (d3eb92c)
- bump spitfire v0.3.7 (#425) (ce508c8)
- engine: don't collect sibling scopes in Phoenix router (#420) (b72bfc8)
- expert: don't crash on missing root_uri (#412) (11ed716)
- forge: progress message ordering (#427) (f3b9187)
- migrate expert runtime logging to OTP handlers (#419) (8f2dda5)
- provide typespec docs on hover for private functions (#407) (79c5451)
Miscellaneous Chores
- release as 0.1.0-rc.1 (6f5986e)
0.1.0-rc.0 (2026-02-19)
⚠ BREAKING CHANGES
- add CLI flag handling (#185)
Features
- add CLI flag handling (#185) (46713a1)
- add engine subcommands to expert (#254) (d7c348c)
- add missing require code action (#283) (a9ee0ec)
- configure Workspace Symbols to return all symbols on empty query (#293) (03ec5c6)
- create undefined function code action (#287) (9624b3a)
- engine: hover for module attributes (#329) (1330370)
- engine: indicate progress when loading checkpoint (#313) (fad5a0b)
- engine: support shorthand notation inside ~H sigil (#278) (e1e5666)
- engine: use ElixirSense for hover resolution (#351) (0e7896b)
- epmdless clustering (#205) (488d3a9)
- epmdless deployments (#167) (9cfb5cc)
- on the fly engine builds (#24) (51eb6f1)
- use Spitfire to provide document symbols on documents with syntax errors (#288) (2ed7a81)
- windows support (#219) (d0927ce)
- workspace folders (#18) (1204313), closes #136
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/2in 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
Unreleased
No changes yet