Skip to content
Limited Edition DevTools

Versions-LE

Find where the same dependency is constrained differently across a repository’s manifests.

FreeOpen sourceMITNo network access

The command-line tool and its MCP server are written and tested. The VS Code extension is not written yet, so there is nothing to install from the Marketplace or Open VSX — those links appear here when it ships rather than before.

No editor in the loop? versions-le mcp runs the same engine as an MCP server, so an agent can call compare_versions over stdio, with no editor and no Node, and cargo install versions-le puts the same check in a terminal. Every way to install it.

versions-le .
error npm: zod ("^3.22.0" (api/package.json) and "^4.0.0" (web/package.json) cannot both be satisfied by one version) [api/package.json, web/package.json]
info npm: react (a dist tag resolves to whatever is newest at install time) [web/package.json]
refused unknown_grammar react: a dist tag is a moving target, not a version range; excluded from comparison [web/package.json]
2 findings across 2 manifests — 1 error, 0 warning, 1 info
exit 1
A real run against two package.json files in one repository. The summary above is what a person reads; the same findings go to stdout as JSON, which is what a script reads.

What Versions-LE does

The build broke because one crate asks for serde 1.0.200 and another asks for serde 2. Or it did not break, and will, because CI has been running on a toolchain below the minimum a manifest declares. Versions-LE reads the version constraints across package.json, Cargo.toml, pyproject.toml, go.mod and GitHub workflow files, then reports where the same dependency is constrained inconsistently. Two constraints no single version can satisfy is an error, decided by interval arithmetic rather than string comparison; different but satisfiable is a warning; a floating pin is information. Comparison never crosses an ecosystem, and a grammar it does not model is named in the report rather than approximated into a range.

What people use it for

Fail before CI does

A pair of constraints no single version satisfies is an error and a non-zero exit, so the build stops before the deploy does.

Catch CI below the floor

A workflow toolchain that has drifted under the minimum version a manifest declares is the failure nobody notices until a release.

Diff against a baseline

The report carries no timestamp, so two runs over an unchanged tree produce identical output and a review can diff them.

Install Versions-LE

Command lineComing soon

cargo install versions-le

Not on crates.io yet — v0.1.0 builds from the repository today, and this command starts working the day it publishes. Follow the repository.

VS CodeComing soon

ext install nolindnaidoo.versions-le

The extension is not written yet, so this id resolves to nothing on the Marketplace. It is the id it will take. Follow the repository.

Cursor / VSCodiumComing soon

cursor --install-extension OffensiveEdge.versions-le

Same again for the forks, which resolve Open VSX rather than the Marketplace. Follow the repository.

Zed

versions-le mcp

Works in Zed today — add the command above as a custom MCP server from the agent panel, and compare_versions appears in its tool list. There is no one-click listing in Zed's extension registry yet.

AI agents

versions-le mcp

Runs Versions-LE's engine as an MCP server over stdio, so an agent can call compare_versions with no editor and no Node. The binary is the server — there is nothing else to install.

Where it ships

One engine, 6 places to get it. The ids differ by registry — copy the one for the editor you use.

Where Versions-LE lives

The other 15

Extract string values from JSON, YAML, CSV, TOML, INI, and .env — for i18n.

Extract numeric values from JSON, YAML, CSV, TOML, INI, and .env.

Pull every file path out of JS/TS imports, JSON, HTML, CSS, TOML, CSV, and .env files.

Extract and analyze colors from CSS, SCSS, LESS, Stylus, HTML, JS/TS, and SVG.

Extract URLs from documentation, configs, and code.

Extract date and time data from logs, configs, and code.

Extract every quantity with its unit, normalised to one base unit so two configs can be compared.

Find every UUID, ULID, NanoID, ObjectId and Snowflake, and decode the time inside it.

Find every IP address, CIDR block and MAC address in a tree, normalized and classified.

Find, test, and validate the regular expressions in any file — match reports and built-in ReDoS screening.

Check whether a page is actually scrapeable before you burn hours debugging.

Audit translation catalogues for missing keys, placeholder drift and structural mismatches.

Detect and sanitize credentials, tokens, API keys, and private keys locally — before you commit.

Spot missing keys across your .env files — automatic checks, a status bar counter, and a markdown report.

Find the Unicode that hides meaning — Trojan Source controls, invisibles, homoglyphs, mixed scripts.