github expert-lsp/expert v0.2.0

4 hours ago

0.2.0 (2026-10-20)

Features

Bug Fixes

  • bring back remote shell (#584) (f85c7a5)
  • build a single engine for multiple projects using the same toolchain versions (#509) (7501e68)
  • bump spitfire to v0.3.13 (#714) (899149e)
  • ci: forward major/minor outputs from the release job (#950) (11993a8), closes #942
  • clear stale diagnostics as you type (#878) (2afc03c)
  • compile the engine with MIX_ENV=dev (#749) (aefdcaa)
  • correctly pass Elixir source path config (#760) (762d145)
  • deps: bump spitfire and deps with security advisories (#939) (5484274), closes #938
  • diagnostics take a long time to update (#871) (f9c8099)
  • don't connect to the epmd daemon (#553) (292ed7a)
  • don't discard multiple diagnostics from file and project compilation (#841) (91b1f74)
  • don't index build paths (#652) (e19117d)
  • don't infinitely loop prompting to fetch dependencies if it fails (#548) (335c68b)
  • don't load deps before the project is compiled (#839) (861c700)
  • don't reverse text document params (#884) (01b9f4a)
  • don't use token_metadata option when compiling (#845) (0f766d0)
  • eager loading for large projects (#610) (81f324f)
  • engine build crashes when changing tooling versions (#710) (2b307c9)
  • engine: add project stack lock (#654) (d1cac1d)
  • engine: analyzer gets confused with overlapping aliases (#816) (ff8e68f)
  • engine: correct project path checks on Windows (#757) (03ff52c)
  • engine: don't crash in EEx on hover (#666) (822e35e)
  • engine: drop edit window to 100ms (#872) (05594aa)
  • engine: fix interpreting words inside strings as identifiers (#579) (8926a03)
  • engine: improve compatibility check messaging (#716) (fc0b737)
  • engine: improve progress notifications (#803) (ecbaa7d)
  • engine: increase build timeout duration, add batch uri reindex with debounce (#698) (ba07dcd)
  • engine: keep ModuleStore alive across builds (#889) (8cada72)
  • engine: preload deps and don't prune code paths (#768) (ccce6af)
  • engine: resolve entity with correct arity in (h)eex (#663) (1fefc5c)
  • engine: resolve formatter against project mix config (#834) (cbddc62)
  • engine: respect formatter line length in Refactorex actions (#571) (f12c48a)
  • engine: run formatter in Mix project context (#711) (99f2719)
  • engine: set target when evaluating config diagnostics (#731) (ea7158c)
  • engine: stop double applying alias suffix when prefix is aliased (#545) (9de53c2)
  • engine: unify import lookup to correctly resolve local calls (#547) (728b76e)
  • exclude debug applications with MIX_ENV=prod (#794) (21a488b), closes #786
  • expert_credo: prevent infinite hang in with_stdin/2 (#372) (811578b)
  • expert: add no-op handler for $/setTrace (#564) (4f425a2)
  • expert: always scrub env vars (#703) (b501d67)
  • expert: correct use translation (#767) (1519e99)
  • expert: extend list of editors having VSCode completion bug (#736) (c0494e9)
  • expert: fix Node.start for Elixir pre-1.19 (#720) (bbb466c)
  • expert: force unicode encoding on IO (#852) (ee84f46)
  • expert: log correct path when looking up executables (#675) (4dff00f)
  • expert: remote shell command on Windows (#657) (ee2ab46)
  • expert: remove release root entries from subprocess PATH (#699) (a101caa)
  • expert: use document from request as fallback when document is not in the store (#693) (5daee68)
  • find references imported by use (#823) (e035c2c)
  • forge: handle bitstrings in interpolation (#865) (b979b9b), closes #256
  • forge: monitor beam rewriting worker process (#370) (c8be4e9)
  • forge: normalize Erlang release candidate versions (#639) (babcd42), closes #640
  • forge: reset ASCII assumption on a new line (#687) (b59dd76), closes #623
  • forge: use project.root_uri for cache key in Forge.Project.config (#575) (deb019b)
  • handle LSP supported invalid configuration values (#551) (e973cfc)
  • hang at startup if .bashrc contains exec call (#527) (73b8d28)
  • improve performance of formatting (#804) (63ae6eb)
  • improve release overlays (#578) (3ee0a1b)
  • improve startup time and module introspection (#604) (f0a788a)
  • improve struct reference completion handling errors in struct completions (#774) (c5674bc)
  • incorrect undefined protocol function diagnostic (#820) (77a6e74)
  • index macro-generated definitions from compiler traces (#856) (d564f25)
  • index project sources even when compile reports error (#809) (5039c10)
  • make sure to return only Diagnostic.Result struct as diagnostics (#782) (c763351)
  • nix: only expose the expert launcher (#899) (ef346b7), closes #429
  • only index sibling beams when origin source file changes (#707) (03a56b5)
  • only register watchers if the client advertises support for them (#907) (711cb75)
  • port Refactorex into Forge (#747) (c27bf61)
  • prevent formatter cache from forgetting the formatter for a path (#831) (8bc8afc)
  • properly calculate callback completion line range (#846) (627309d), closes #785
  • properly handle typespec errors; prevent diagnostics crash (#879) (eb0a7e4)
  • read beam binary directly instead of using Module functions (#876) (d56e468)
  • record module binary if module metata read fails (#874) (cf76479)
  • refactorex: use field-level comparison for cursor detection (#642) (14e59a4)
  • relax Hex connectivity timeout (#858) (423be25), closes #538
  • release: ensure start_expert works if symlinked (#572) (c11f489)
  • resolve the right formatter for each file (#880) (491f81f)
  • rework workspace folders and project discovery (#566) (345aa34)
  • schedule compiles for ready engines only (#762) (7dd317b)
  • skip expanding non-grouped aliases (#898) (bdd5d81)
  • skip regular files on engine clean (#613) (ce93691)
  • stop calls to IO and other writes to stdout from crashing Expert. (#824) (f76b96a)
  • stop checking dependency beam mtime (#890) (728cf1d)
  • support erlang module aliases for rename remote function (#855) (0a5cd77)
  • update nixpkgs, switch to beamPackages.overrideScope (#896) (5fbe174)
  • use host resolution to check internet (#870) (eb0ac70)

Performance Improvements

  • avoid forced warm-start compiles (#866) (81f13e6), closes #863
  • compact entry blob ranges (#906) (d61a178)
  • expert: fold code in one AST pass (#883) (212f383)
  • expert: only retain definitions in indexer source_keys (#919) (1625f28)
  • expert: optimize fuzzy scorer subject preprocessing (#944) (63cf9fb)
  • expert: parallelize beam entry creation in worker tasks (#937) (73b0d1e)
  • expert: stream entries on index refresh (#922) (f1104f2)
  • expert: stream entries on index replacement (#920) (5f5824f)
  • expert: use partial index for entries caller (#928) (439328e)
  • expert: use range queries for sqlite prefix search (#935) (3e30770)
  • indexer: cache application and available modules (#634) (9bc521d)
  • indexer: only use relevant extractors when indexing deps (#641) (161f040)
  • move indexer to the manager node (#905) (8d6007f)
  • use beam metadata for dependencies (#670) (710c736)

Reverts

  • downgrade burrito to 1.5 and zig to 0.15.0 (#844) (0215beb)
  • feat: use compiler tracers for project indexing (#705) (#763) (d79e0b7)

Don't miss a new expert release

NewReleases is sending notifications on new releases.