Repository navigation
Releases
v0.5.1
A maintenance release that gives the VS Code extension its Marketplace icon. Neither server changes; the Python package idfkit-lsp and the npm package @idfkit/language-server are republished at 0.5.1 only because all three artifacts are released from one tag.
Added
- Marketplace icon: the extension manifest now declares
images/icon.png, which ismarks/tile.pngfrom idfkit-brand atidentity-2026.5, the tile the README header already uses. Version 0.5.0 declared no icon, so its listing showed the Marketplace placeholder.
Upgrade notes
- No action is required. The extension updates through VS Code as usual, and
pip install -U idfkit-lspornpm install @idfkit/language-server@latestinstalls a functionally identical server.
v0.5.0
This release makes the VS Code extension work as packaged. The VSIX now carries the language service it needs, the release workflow publishes it to the Visual Studio Marketplace, and the extension no longer starts the source server on an interpreter that cannot run it. The minimum versions rise to VS Code 1.90 and Node 20. Neither server gains or loses a capability.
Raised minimum versions
- VS Code 1.90 (previously 1.86) (#38). VS Code 1.90 is the first release on Electron 29, whose Node 20 runtime is the one the model server runs on by default. VS Code 1.86 to 1.89 run Node 18, which the
@idfkitpackages the model server depends on do not support. - Node 20 (previously 18) for the npm package
@idfkit/language-server(#38). This matchesengines.nodein@idfkit/core,@idfkit/idfkitand@idfkit/language0.4.0. The bundle now targetsnode20.
Users of VS Code 1.86 to 1.89, and editors that run idfkit-language-server on Node 18, should remain on 0.4.0 until they upgrade. The Python source server is not affected.
Features
- Visual Studio Marketplace publishing (#41): the release workflow packages the extension, checks the VSIX, attaches it to the GitHub release, and publishes that same file to the Marketplace through Trusted Publishing, with no stored token. Prereleases are skipped, because the Marketplace accepts only
major.minor.patch. python -m idfkit_lsp --version(#43): prints the source server's level and exits. It answers only after the server and its libraries have loaded, so its exit status states whether an interpreter can run the server.- Comment toggling for
.idffiles in VS Code (#40): alanguage-configuration.jsonholds the line comment marker and nothing else. It is recorded incapabilities.jsonas an editor-specific limitation, because the protocol has no request through which a server could supply it. Other editors configure their own marker. - Package headers (#48, #49): the README, the npm package and the PyPI package open with the idfkit identity header. The PyPI package gains a description, which it previously lacked.
Fixes
- The packaged extension now carries the language service (#37). A VSIX built with
vsce packagecontained no@idfkitpackage, so the model server could not resolve@idfkit/idfkitand advertised no model text capability. The npm package@idfkit/language-serverwas not affected. - The source server is not started on an interpreter that cannot run it (#43). The extension first asks the configured interpreter for
-m idfkit_lsp --version. On failure, the reason goes to the output channel and one information message appears per interpreter. This replaces the error notification, the five restarts and the unhandled rejections that every Python file previously caused on a machine without the server. - A source server that closes during startup is no longer restarted.
- idfkit: Restart Language Servers reads
idfkitLsp.pythonPathagain, so a corrected setting takes effect without reloading the window. idfkit: Open Documentation states why it cannot answer when the source server is not running. - Clearing
idfkitLsp.pythonPathnow meanspython3, as documented, rather than an empty command.
Other changes
- The source server depends on
idfkit1.2.0 (previously 1.1.1) (#31). - The Marketplace listing is written for users; development material moved to
CONTRIBUTING.md(#36). .vscodeignoreis an allowlist. Agent instructions, the Python server's source, tool configuration,levels.jsonand source maps no longer ship in the VSIX (#39).- CI builds the VSIX from a clean checkout, checks that its model server advertises what
capabilities.jsonmarks present, and runs the protocol suite against it (#42).
Upgrade notes
- VS Code users on 1.90 or newer: upgrade transparently. Install from the Marketplace once the listing is live, or from the VSIX attached to this release.
- Python source server:
uv tool install -U idfkit-lsporpip install -U idfkit-lsp. No configuration change is required. It now resolvesidfkit1.2.0. - Other editors using the model server:
npm install -g @idfkit/language-server@lateston Node 20 or newer.
v0.4.0
This release puts the model server on npm. Editors other than VS Code (Neovim, Helix, Zed, anything that starts a language server from a command) can now install it without cloning this repository and building it. Neither server gains or loses a capability.
Features
-
The model server is published to npm as
@idfkit/language-server(#34). It needs Node 20 or newer and brings the idfkit library and its language service with it:npm install -g @idfkit/language-server idfkit-language-server --stdio
Or run it without installing:
npx @idfkit/language-server --stdio. In Neovim:vim.lsp.config.idfkit_model = { cmd = { 'idfkit-language-server', '--stdio' }, filetypes = { 'idf' }, root_markers = { '.git' }, }
An editor extension can install the package and run
dist/main.js --stdioon its own Node runtime. Every release now publishes to npm and PyPI from the same tag, so the npm version, the PyPI version and the VS Code extension always agree.
Changes
- The model server reaches idfkit only through
@idfkit/idfkit(#34), now that the shared package is published. It is an exact dependency, at 0.4.0, and the fallbacks to@idfkit/coreand@idfkit/languageunder their own names are gone. If the library is missing, the server now asks for@idfkit/idfkitand@idfkit/language. - The model server's package was renamed from
@idfkit/lsp-model-serverto@idfkit/language-server, which is also the name it reports inserverInfo.
Upgrade notes
- VS Code: update the extension as usual. It bundles the model server, so nothing else changes.
pip install idfkit-lsp: the source server is unchanged apart from its version. It still pins idfkit 1.1.1.- Other editors: if you were running
model-server/dist/main.jsfrom a clone, switch your launch command toidfkit-language-server --stdioand delete the clone.
v0.3.0
A maintenance release that moves both servers to the current library levels: the source server to idfkit 1.1.1, and the model server to idfkit-js 0.4.0. Neither server gains or loses a capability; capabilities.json is unchanged from 0.2.0.
Changes
- The source server requires idfkit 1.1.1 (#27, #30). The exact pin moves from 1.0.0rc1, through 1.0.0, to 1.1.1. The pin remains exact, so
pip install idfkit-lsp==0.3.0installs idfkit 1.1.1 alongside it. - The model server resolves
@idfkit/coreand@idfkit/languageat 0.4.0 (#28), up from 0.2.0. - The model server looks for the idfkit facade as
@idfkit/idfkit(#21). npm refused the unscoped nameidfkit, so the facade and its subpaths (@idfkit/idfkit/language,@idfkit/idfkit/node) are published under the scope. Until the facade is published, the model server continues to fall back to@idfkit/coreand@idfkit/languageunder their own names.
Upgrade notes
- Source server users can upgrade with
pip install -U idfkit-lsporuv tool upgrade idfkit-lsp, provided the environment can hold idfkit 1.1.1. A project that must remain on an earlier idfkit should either pinidfkit-lsp==0.2.0or run the server from an environment of its own (for example,uvx --from idfkit-lsp==0.3.0 idfkit-lsp). - Model server users need take no action: the model server ships inside the editor extension with its dependencies.
- The remaining changes since 0.2.0 (#20, #25, #26) concern continuous integration and the consumer register, and do not affect either server.
Full changelog: v0.2.0...v0.3.0
v0.2.0
The first release of idfkit-lsp on PyPI. pip install idfkit-lsp now installs the source server, the language server for Python code that uses idfkit. It is the release the editor plugin's language-server entry has been waiting on, since that entry had nothing to resolve.
What is in this package
This package is the source server only. It answers completion, hover, signature help and diagnostics for Python files that import idfkit. The model server, which serves EnergyPlus model text through @idfkit/language, runs on the editor's own Node runtime and ships inside the editor extension, not in this wheel.
Features
- Answers derived from the installed library (#15). The callables that produce a document, and the type names the server recognises, are read from the idfkit you have installed rather than from a table in this repository. A new idfkit release no longer needs a matching edit here before the server knows about it.
- One declaration of what the server answers (#15).
capabilities.jsonis the single record of what each server advertises. It travels inside the wheel, both servers advertise from it, and the test suite holds it against the servers in both directions. - The server can say what it is running (#15). An
idfkit-lsp/versionsrequest returns the server's version and the library levels it read. As of #19,idfkit_lsp.__version__gives the same answer.
Fixes
- The version the package reports is the version it is (#19).
__version__said0.1.0while the package declared0.2.0. It is now read from the installed distribution. - Messages name an install that exists (#16). When the language service is missing, the guard now tells you to install
@idfkit/language, which you can, rather thanidfkiton npm, which is not published.
Packaging
- MIT licence, carried in the wheel (#19).
- Published as a wheel only, through PyPI trusted publishing (#19). A source distribution of the server cannot carry the declaration file it needs to start.
- Requires Python 3.10 to 3.13. Pins
idfkit==1.0.0rc1,pygls==2.1.1andlsprotocol==2025.0.0exactly.
Upgrade notes
This is a first installation, not an upgrade. The server pins idfkit exactly, so give it an environment of its own rather than the one your project runs in:
pip install idfkit-lsp==0.2.0 # into a dedicated virtual environment
uvx --from idfkit-lsp==0.2.0 --prerelease=allow python -m idfkit_lsp # or its own environment, fetched on demanduvx needs --prerelease=allow for this release. idfkit-lsp 0.2.0 depends on idfkit==1.0.0rc1, a pre-release, and uv installs a pre-release of an indirect dependency only when told to; without the flag it stops with "pre-releases weren't enabled". pip accepts the exact pre-release pin as it is. The flag stops being needed once idfkit-lsp depends on a stable idfkit. (Corrected 2026-09-11: these notes first showed the uvx command without the flag, which fails.)
In the editor extension, point idfkitLsp.pythonPath at that interpreter if it is not the one on your path.
v0.1.0
First tagged release of idfkit-lsp — a Language Server Protocol implementation and VS Code extension for idfkit-powered EnergyPlus IDF/epJSON editing.
What's in this release
- Python LSP server (
server/) built on pygls 2.0, providing completions, hover docs, and signature help for IDF objects and fields. - VS Code extension (
client/) that spawns the Python server, auto-detects the server venv, and surfaces startup errors directly in the editor. - AST-based type inference over user code via
IdfKitAnalyzer— tracks imports, variable types (DOCUMENT,COLLECTION,OBJECT), and lexical scopes. - Schema-driven hover and completions backed by
idfkit's bundled epJSON schemas (now 17 versions, 8.9.0 through 26.1.0 via idfkit 0.8.0). - "Open Documentation" VS Code command that deep-links hover targets to the matching page on docs.idfkit.com.
- Structured logging across server modules, bridged through the LSP channel so client-side users see what the server sees.
Dependencies
- `idfkit==0.8.0` — adds EnergyPlus 26.1.0 schema support and the `idfkit migrate` CLI.
- `pygls>=2.0`, `lsprotocol`.
Compatibility
- Python 3.10–3.13 (server).
- VS Code 1.85+ (client).
- Works against all 17 EnergyPlus versions supported by idfkit 0.8.0.