What's New
Multi-Language Diagnostics Expansion (PR #178)
Major expansion of language support for LSP, AST, and directory diagnostics tools.
11 New LSP Server Configurations
| Language | Server | Extensions |
|---|---|---|
| Ruby | solargraph | .rb, .rake, .gemspec
|
| PHP | intelephense | .php, .phtml
|
| Lua | lua-language-server | .lua
|
| Bash | bash-language-server | .sh, .bash
|
| Elixir | elixir-ls | .ex, .exs
|
| Kotlin | kotlin-language-server | .kt, .kts
|
| Swift | sourcekit-lsp | .swift
|
| C# | OmniSharp | .cs
|
| Scala | metals | .scala, .sc
|
| Zig | zls | .zig
|
| Haskell | haskell-language-server | .hs, .lhs
|
7 New AST Languages (ast-grep)
Bash, Elixir, Haskell, Lua, PHP, Scala, SQL — bringing the total to 24 supported languages.
4 New Diagnostic Strategies
| Strategy | Tool | Config File |
|---|---|---|
tsc
| TypeScript compiler | tsconfig.json
|
go
| go vet | go.mod
|
rust
| cargo check (JSON) | Cargo.toml
|
python
| mypy / pylint | pyproject.toml / requirements.txt / setup.py
|
Use strategy: 'auto' (default) for automatic detection, or specify a strategy explicitly.
Security & Robustness Improvements
- Circular dependency fix — Extracted shared constants to
constants.ts - ENOENT handling — All 5 runners gracefully handle missing binaries (
tsc,go,cargo,mypy,pylint) - Skipped field consistency — All runners return informative
skippedmessages when config files are missing - Rust JSON parser — Switched from regex to
--message-format=jsonfor reliable multi-line parsing - DRY refactor —
makeSkippedResult()helper eliminates 7 duplicated blocks - Type safety —
EXT_TO_LANGtyped asRecord<string, LanguageKey>for compile-time validation
Testing
- 31 new tests for parsers, integration, and project detection
- 62 edge case validations (CRLF, Unicode, Windows paths, malformed input)
- All tests passing
Files Changed
- +1,300 lines across 14 files
- 7 new source files, 3 new test files
Full Changelog: v3.7.5...v3.7.6