diff --git a/CHANGELOG.md b/CHANGELOG.md index e0569e8..33a9417 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ ## Unreleased +## 0.4.0 + +- **Useful docs on first use.** `docs` and `api` now automatically add public upstream docs for the requested release, anonymously. The existing fetcher resolves exact `refs/tags/` refs, rejects same-named branches, and peels annotated tags to an immutable commit before downloading bounded docs. Missing registry packages and major-version website docs remain explicit opt-in. +- **Clear network controls.** `--no-fetch` or `LOCKDOCS_FETCH=0` disables query package/docs downloads; `--offline` or `LOCKDOCS_OFFLINE=1` prevents all downloads, including the embedding model. MCP `offline: true` restricts a call to installed/cached package and upstream files. Automatic upstream requests never use ambient GitHub credentials. +- **Honest provenance and failures.** Structured answers include the source, requested version and upstream manifest; ordinary broad text answers retain a budgeted source/fallback summary. Fetch reports preserve their original flat fields alongside richer provenance. Installed-version drift is rejected instead of substituted, and git dependencies use checkout files rather than registry releases or guessed tags. +- **Safe cache enrichment and retry.** Explicit fetching upgrades release-only caches with docs-site enrichment. Later default/offline queries preserve opted-in site docs and provenance. Transient registry lookup or file-download failures do not become permanent empty-doc results or overwrite a compatible complete cache; failures are disclosed and explicit enrichment remains retryable. Legacy format-3 caches are revalidated online and disclosed when read offline. +- **Shared runtime.** Embeddings, identifier tokenization and supported cache-root resolution now use mcp-kit 0.3, alongside the shared MCP server, setup and npm launcher. +- **One-click editor setup.** README and docs offer Cursor and VS Code install links; desktop bundles prompt for the project folder used to resolve the lockfile. +- **Measured defaults.** The benchmark separately measures real first-use behavior from an empty isolated cache without credentials: 70/105. Explicit prefetch remains 96/105 and package-only hybrid 60/105; the prefetch score is not presented as the default score. - The CLI prints one GitHub star line to stderr after the fifth successful interactive run, once ever (counter in the cache directory). It is silent for the MCP server, with `--json`, in CI, and when stderr is not a terminal; `LOCKDOCS_NO_STAR_HINT=1` turns it off. ## 0.3.0 diff --git a/Cargo.lock b/Cargo.lock index 720cc69..9bf8b68 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -584,7 +584,7 @@ dependencies = [ [[package]] name = "lockdocs" -version = "0.3.0" +version = "0.4.0" dependencies = [ "anyhow", "lockdocs-core", @@ -594,7 +594,7 @@ dependencies = [ [[package]] name = "lockdocs-core" -version = "0.3.0" +version = "0.4.0" dependencies = [ "anyhow", "dirs 7.0.0", diff --git a/Cargo.toml b/Cargo.toml index c8d7505..c502210 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["crates/lockdocs-core", "crates/lockdocs"] resolver = "2" [workspace.package] -version = "0.3.0" +version = "0.4.0" edition = "2021" license = "MIT" repository = "https://github.com/SylphxAI/lockdocs" diff --git a/package.json b/package.json index e906a6f..50cf05d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lockdocs-workspace", - "version": "0.3.0", + "version": "0.4.0", "private": true, "type": "module", "description": "lockdocs monorepo: Rust engine (crates/), npm packages (packages/), docs (docs/), benchmark (bench/).", diff --git a/packages/lockdocs/package.json b/packages/lockdocs/package.json index c01d93e..a5929be 100644 --- a/packages/lockdocs/package.json +++ b/packages/lockdocs/package.json @@ -1,6 +1,6 @@ { "name": "@sylphx/lockdocs", - "version": "0.3.0", + "version": "0.4.0", "mcpName": "io.github.SylphxAI/lockdocs", "description": "Exact-version library docs from your lockfile — local, offline, no rate limits.", "bin": { @@ -15,11 +15,11 @@ "node": ">=18" }, "optionalDependencies": { - "@sylphx/lockdocs-darwin-arm64": "0.3.0", - "@sylphx/lockdocs-darwin-x64": "0.3.0", - "@sylphx/lockdocs-linux-x64-gnu": "0.3.0", - "@sylphx/lockdocs-linux-arm64-gnu": "0.3.0", - "@sylphx/lockdocs-win32-x64-msvc": "0.3.0" + "@sylphx/lockdocs-darwin-arm64": "0.4.0", + "@sylphx/lockdocs-darwin-x64": "0.4.0", + "@sylphx/lockdocs-linux-x64-gnu": "0.4.0", + "@sylphx/lockdocs-linux-arm64-gnu": "0.4.0", + "@sylphx/lockdocs-win32-x64-msvc": "0.4.0" }, "keywords": [ "mcp", diff --git a/packages/npm/darwin-arm64/package.json b/packages/npm/darwin-arm64/package.json index 5ca13e4..a8c119e 100644 --- a/packages/npm/darwin-arm64/package.json +++ b/packages/npm/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@sylphx/lockdocs-darwin-arm64", - "version": "0.3.0", + "version": "0.4.0", "description": "lockdocs native binary for darwin-arm64", "os": [ "darwin" diff --git a/packages/npm/darwin-x64/package.json b/packages/npm/darwin-x64/package.json index e0d0b5a..126b107 100644 --- a/packages/npm/darwin-x64/package.json +++ b/packages/npm/darwin-x64/package.json @@ -1,6 +1,6 @@ { "name": "@sylphx/lockdocs-darwin-x64", - "version": "0.3.0", + "version": "0.4.0", "description": "lockdocs native binary for darwin-x64", "os": [ "darwin" diff --git a/packages/npm/linux-arm64-gnu/package.json b/packages/npm/linux-arm64-gnu/package.json index f9f9900..4e412e3 100644 --- a/packages/npm/linux-arm64-gnu/package.json +++ b/packages/npm/linux-arm64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@sylphx/lockdocs-linux-arm64-gnu", - "version": "0.3.0", + "version": "0.4.0", "description": "lockdocs native binary for linux-arm64-gnu", "os": [ "linux" diff --git a/packages/npm/linux-x64-gnu/package.json b/packages/npm/linux-x64-gnu/package.json index 6ea8784..aca7baa 100644 --- a/packages/npm/linux-x64-gnu/package.json +++ b/packages/npm/linux-x64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@sylphx/lockdocs-linux-x64-gnu", - "version": "0.3.0", + "version": "0.4.0", "description": "lockdocs native binary for linux-x64-gnu", "os": [ "linux" diff --git a/packages/npm/win32-x64-msvc/package.json b/packages/npm/win32-x64-msvc/package.json index de0a3c0..9000536 100644 --- a/packages/npm/win32-x64-msvc/package.json +++ b/packages/npm/win32-x64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@sylphx/lockdocs-win32-x64-msvc", - "version": "0.3.0", + "version": "0.4.0", "description": "lockdocs native binary for win32-x64-msvc", "os": [ "win32" diff --git a/server.json b/server.json index 6bd4d20..26e4d14 100644 --- a/server.json +++ b/server.json @@ -7,13 +7,13 @@ "url": "https://github.com/SylphxAI/lockdocs", "source": "github" }, - "version": "0.3.0", + "version": "0.4.0", "websiteUrl": "https://sylphxai.github.io/lockdocs/", "packages": [ { "registryType": "npm", "identifier": "@sylphx/lockdocs", - "version": "0.3.0", + "version": "0.4.0", "transport": { "type": "stdio" },