| v0.1.37 |
Workspace scan + hover coverage across cycle-22 ecosystems |
Fix trio for the Maven / NuGet / Gradle / RubyGems / Composer surface added in v0.1.34 — the workspace-scan file walk now enumerates pom.xml, *.csproj, build.gradle.kts, packages.lock.json, gradle.lockfile, Gemfile.lock, and composer.lock (previously silently reported 0 manifests when those were the only files present); the LockfileHoverProvider now falls through to the manifest parser for the 4 dual manifest+lockfile shapes so hovering a coord inside packages.lock.json / gradle.lockfile / Gemfile.lock / composer.lock renders the custom verdict hover; and fetchVerdict now coalesces concurrent misses for the same coordinate onto a single in-flight promise so a build.gradle.kts declaring the same artifact under multiple configurations (implementation + testImplementation) fires exactly one backend GET (CLEANLIB-323 / CLEANLIB-324 / CLEANLIB-325) |
| v0.1.36 |
On-demand lockfile hover fetch + PENDING badge for INSUFFICIENT_DATA |
Cache-miss fallback in LockfileHoverProvider fetches the single hovered node so a stale/empty cache no longer degrades to a bare "verdict not yet cached" hint; verdict envelopes carrying INSUFFICIENT_DATA now surface a customer-language "pending scanner catalog" state instead of the "the tool is broken" reading customers reported (CLEANLIB-79 / CLEANLIB-269) |
| v0.1.35 |
On-save scan-summary Output line |
After every on-save scan the Output channel now surfaces a single-line summary — cleanlib: N packages scanned, K findings, D DENY / W WARN / A ALLOW — so developers get confirmation the save hook fired and see the aggregate verdict tally without opening the Problems panel; workspace-scan / config-change / activation paths stay silent to avoid duplicate logging |
| v0.1.34 |
Lockfile expansion (Maven / NuGet / Gradle / RubyGems / Composer) |
5 new ecosystems — pom.xml, *.csproj, packages.lock.json (NuGet), build.gradle.kts, gradle.lockfile, Gemfile.lock, composer.lock; verdict hover + diagnostics now surface across JVM, .NET, Ruby, PHP project trees alongside the existing npm / Python / Go / Rust coverage; 19 new parser unit tests |
| v0.1.20 |
Cycle-10 hardening bundle |
README body version-string hygiene; engine-tag mask hardening for customer-facing Hover; fail-loud cascade on HTTP 401 (no silent ALLOW fallback under rejected API key — surfaces AUTH_ERROR status-bar state + one-click "Set API Key" recovery); extension behavior consolidation |
| v0.1.19 |
Hygiene bundle |
Marketplace listing URLs brand-clean; version-string single-source from package.json (no manual sync); packaged-VSIX brand-leak closure (R2 amend) |
| v0.1.18 |
Critical bundler fix (P0) |
esbuild bundling correctness — closed silent MODULE_NOT_FOUND cascade across v0.1.15–v0.1.17 Marketplace builds; integration test ID/mask alignment |
| v0.1.17 |
Customer-surface scrub |
Mask llm_* engine-tag values in customer-facing Hover (defense-in-depth scrub) |
| v0.1.16 |
Vulnerability detail + enrichment-live status |
🛡 Vulnerability detail hover block — top 3 CVEs per package by exploit-risk score with severity / EPSS / KEV ribbon / fused exploitability pill (single-call golden surface via /exploitability/:cve); deduped advisory list; LIVE_ENRICHED status state — 5th status-bar state surfacing when both verdict-side and enrichment-side are live in the same session; sticky against transient enrich-side flap |
| v0.1.15 |
Remediation fix-plan hover |
🛠 Fix Plan hover block — sparse-by-design 7-block visitor render (CISA KEV deadline / fixed-version / recommended-version / blast-radius / fix-trust / upstream-lag / reachability) via the CleanLibrary remediation API; two new settings cleanlib.enrichApi.url + cleanlib.enrichApi.bearer; CleanStart SDK integration (@cleanstart/cleanlib-sdk) |
| v0.1.14 |
UX polish + CleanStart branding |
Hexagonal $(cleanstart) codicon + brand-cyan LIVE state palette; package_risk rich-data field; full Marketplace listing refresh against the official brand mark |
| v0.1.13 |
Listing refresh |
Marketplace listing + documentation brought current to the v0.1.12 feature surface (changelog, rich-data hover + transitive-scan sections, full configuration reference) |
| v0.1.12 |
Rich-data intelligence hover |
"📊 CleanLibrary intelligence" hover block surfacing recommended upgrade version + package-risk summary + verdict provenance + similar-package (typo-squat) signals when the backend supplies them; gap-tolerant (renders only present fields, omits cleanly when absent); 8 typed rich-data fields incl. a structured recommended-version object |
| v0.1.11 |
Transitive dependency scanning |
Lockfile-resolved transitive graph scanning (package-lock.json / Cargo.lock / go.sum / poetry.lock); cleanlib.transitiveScan (off / direct-only / full) + cleanlib.transitiveScanMaxNodes fan-out cap; verdicts for direct and transitive nodes |
| v0.1.10 |
Marketplace readiness + ergonomics |
Multi-channel notification policy controls (scan-complete / deny-verdict / fallback / error / risk-accepted); brand-essence verdict color palette; API-key persistence hardening; proprietary LICENSE + polished Marketplace metadata |
| v0.1.9 |
Tier-1 customer ergonomics |
Configurable HTTPS request timeout (5–60s; 30s default) + AbortController + classification-aware fallback (Timeout / 4xx / 5xx / Network / uncaught) with [Retry] [Show output] [Dismiss] toast + Bearer-masked Output channel + CleanLibrary: Show diagnostics Quick Pick + 4-state status bar (cyan LIVE_CONNECTED / amber LIVE_WITH_FALLBACK / red ERROR / gray NOT_CONFIGURED) |
| v0.1.8 |
Marketplace branding |
Logo integration (cyan → deep-blue gradient hexagonal mark; light + dark icons); polished package metadata for Marketplace listing |
| v0.1.7 |
Discovery + reasoning |
Welcome Quick Pick on first activation; workspace scan on open with non-modal toast; CodeLens with suggested_actions from Verdict response; inline reasoning preview |
| v0.1.6 |
Cosign attestation rendering |
Renders cosign signature + verdict_id + artifact_hash binding from App CustomerVerdictResponse envelope; surfaces signature provenance to the developer |
| v0.1.5 |
Multi-ecosystem manifests |
Parser support for package.json (npm) + requirements.txt + pyproject.toml (PyPI) + go.mod (Go) + Cargo.toml (crates); 16 new manifest-parser test cases |
| v0.1.4 |
Polish bundle |
npm package-name alias resolution (org-scoped + dist-tag forms); error-message refinement; cache-coherence pass |
| v0.1.3 |
Secure credential storage |
Bearer token migrated to OS keychain via VS Code SecretStorage; cleanlib.apiKey setting deprecated (auto-migrated on activation); CleanLibrary: Set API Key / Clear API Key Command Palette flow |
| v0.1.2 |
IDE-native surface |
Diagnostics provider (Problems panel entries per dependency) + Hover provider (verdict tooltip) + CodeActions (one-click "copy risk-acceptance rule" + "fetch verdict") + in-memory verdict cache |