github apmantza/pi-lens v3.8.71

one day ago

Added

  • ty (astral-sh/ty) support as an alternative Python language server
  • /lens-map command: a human-facing, self-contained interactive HTML project map rendered from the review graph
  • lens_diagnostic_mark tool (situational, activate via pi_lens_activate_tools): record a disposition for a diagnostics finding (#690)
  • pilens:autofix:start bus event, symmetric to pilens:format:start, so the same in-process listener can also see the agent_end actionable-warnings autofix batch before it mutates files
  • Two new pi.events bus signals so an in-process extension can observe pi-lens's deferred-format queue before it mutates files, not just after
  • lens_diagnostics mode=full and lsp_diagnostics's batch/directory sweep now cache confirmed per-file LSP results across calls

Changed

  • release.yml publishes to npm via OIDC trusted publishing instead of a long-lived NPM_TOKEN, and package.json declares an allowScripts allowlist for npm v12's install-time script review
  • Consolidated the hand-duplicated "walk up directories looking for one of a list of config filenames" loop across 4 sites
  • Extracted index.ts's tool_call handler (read-guard preflight: LSP auto-touch, read-range tracking/expansion, oldText autopatch, edit-guard block/relocation, pre-write duplicate-export detection) into clients/runtime-tool-call.ts
  • Consolidated the hand-duplicated "load a JSON cache file, try/catch, version/shape-validate" boilerplate across 7 sites

Fixed

  • pilens_health's resource footprint no longer reports dead instances from stale instance-registry entries
  • The shared project ignore matcher is now tracked-aware, so a git-tracked file whose name happens to match a .gitignore/global ignore pattern is no longer invisible to every scan and to the review graph
  • The startup scan-context walk no longer re-runs and discards itself on every single pi process start in a large monorepo
  • Review graph import resolution now prefers .ts/.tsx (and .mts/.cts) source twins over compiled .js/.mjs/.cjs siblings, and node creation is gated against untracked-AND-gitignored files
  • Scan-provenance labels no longer poison a diagnostic's dedup identity, and the workspace sweep now honors ast-grep's skipTestFiles gate like the per-edit path does
  • oxlint no longer skips test files
  • no-javascript-url ast-grep rule no longer flags a javascript: string literal used as adversarial test input, and ast-grep's own skipTestFiles policy now survives when its LSP surface (not just the in-process napi runner) is active
  • find-import-file-without-extension ast-grep rule no longer flags bare/scoped package specifiers with a subpath
  • Cold LSP servers now actually get their full warm-up budget instead of being silently capped at their normal per-edit timeout

🙏 Thanks

Thanks to the external contributors in this release:

Don't miss a new pi-lens release

NewReleases is sending notifications on new releases.