github apmantza/pi-lens v3.8.70

5 hours ago

Added

  • Review-graph symbols now carry an owner-qualified display name, and calls/references edges gain two more resolution tiers
  • lsp_diagnostics/lens_diagnostics sweeps now warm up the primary server once before the per-file loop starts, instead of the first few files eating cold-spawn-adjacent timeouts
  • Registry-independent backstop orphan sweep
  • Review-graph symbol-node IDs are now collision-safe
  • docs/ is now included in the published npm package
  • pi-lens can now measure its own total CPU/RAM footprint — host process, every live LSP child, and every transient analyzer spawn
  • Cross-process LSP budget — first prototype of #449 slice 2
  • lens_diagnostics mode=full breaks its confirmed/unconfirmed LSP-sweep tally down per primary server, and separates primary-vs-auxiliary findings
  • lens_diagnostics mode=full no longer renders a timed-out (or errored) per-file LSP check as false-clean
  • lsp_diagnostics directory-mode file cap raised from 50 to 100
  • lsp_diagnostics/lens_diagnostics can now render a genuinely confirmed "clean" for classic typescript-language-server, not just "unconfirmed"
  • lens_diagnostics mode=full runs gitleaks on any git repo, not only ones with an explicit gitleaks config
  • A genuine silentOnClean drift finding now files/updates a persistent tracking issue instead of only riding along in the routine docs-refresh PR
  • opengrep moved off the full-workspace LSP sweep onto a dedicated CLI extractor
  • lens_diagnostics mode=full now fetches the heavyweight project analyzers FRESH instead of reading a possibly-hours-stale cache
  • module_report flags middle-man / delegate-only classes
  • Retroactive changelog entry: runtimeInstall + canonical-bin discovery for gopls/csharp-ls/fsautocomplete (Go + .NET slice of #241)
  • Nightly compat-smoke now pins avtc-pi-subagent's env vocabulary too
  • Regression coverage for confusable-hyphen normalization in the read-guard's content comparison
  • Persistent bus-events.log for pilens:files:touched/pilens:diagnostics publish outcomes
  • MCP auto session_start is now visible and self-healing
  • read_symbol self-healing misses + doc-comment inclusion + duplicate-name disambiguation
  • Shared makeRunnerCtx() test helper for dispatch-runner tests
  • Auto-install lua-language-server via the archive-tree bundle machinery
  • lsp_diagnostics separates primary-server confirmation from auxiliary-scanner findings, plus a new serverScope param
  • lens_diagnostics mode=full/lsp_diagnostics no longer burns a full per-file wait on EVERY markdown file in a sweep
  • Test-runner support for PHPUnit and mix test (ExUnit)

Performance

  • Pinned jscpd bumped from 3.5.10 to 5.0.12
  • KnipClient.runAnalyze() now caches between runs
  • zizmor is no longer an LSP candidate for non-GitHub-Actions YAML files

Changed

  • Unify the directory-walk decision shared by the three source walkers
  • Adopt pi's dynamic tooling for situational ast-grep/lsp-navigation tools
  • Auxiliary-LSP profile lookup: shared blocking/semantic policy + memoized source lookup
  • dead-code-client.ts and knip-client.ts no longer each hand-roll their own copy of the "climb up looking for a project-root marker" loop
  • lsp_diagnostics' batch/directory scan now serializes touches within a single LSP server the same way lens_diagnostics mode=full has since #387

Fixed

  • nested-ternary/long-parameter-list/no-dupe-class-members had ZERO coverage in the ast-grep NAPI fallback runner on .ts files
  • ast-grep NAPI fallback runner no longer silently drops a rule's utils: block
  • ast-grep -js twin rules no longer double-fire on .ts files in the in-process NAPI runner
  • Dynamic tool deactivation for the 5 situational tools now actually runs, instead of failing silently on every session_start
  • lsp_diagnostics's serverScope: "primary" actually skips auxiliary scanners now, and the common case drops back to one LSP round trip per file instead of two
  • Per-edit test-runner findings: fixed a broad vitest include glob producing vacuous 0p/0f "passes" on plain source files, and stopped silently discarding real results when the turn advanced mid-run
  • lens_diagnostics mode=full's workspace sweep no longer front-loads an entire server group's didOpen burst in one uninterrupted pass
  • Launching Pi from $HOME and then editing an absolute-path file in another repo could block Pi's event loop for 470-500+ SECONDS while the cascade pipeline walked the entire home directory
  • A genuine LSP server crash could go completely unlogged when the JSON-RPC connection tore down before the process's own exit event fired
  • runWorkspaceDiagnostics's batch pre-open pass (#608) could hang an entire full-workspace sweep un-abortably
  • lens_diagnostics mode=full now runs the heavyweight-analyzer fresh-fetch CONCURRENTLY with the LSP sweep instead of after it, fixing a real-world case where all 7 analyzers went cold
  • lens_diagnostics mode=full/lsp_diagnostics full-workspace sweeps no longer defeat #271's watched-files debounce, fixing a 0%-100% run-to-run false-timeout rate
  • Managed npm tools now re-install when their packageName version pin changes
  • // nosemgrep inline suppression now honored by lsp_diagnostics/lens_diagnostics, not just per-edit dispatch
  • high-fan-out/high-complexity no longer false-positive on describe()/it() test bodies
  • fact-rules diagnostics now stamp tool: "fact-rules" instead of their own rule id, fixing scattered turn-summary grouping
  • clientScope: "all" (the standalone lsp_diagnostics tool and lens_diagnostics_full) now gets per-server-aware diagnostics timeouts instead of one flat cap for every spawned server
  • A timed-out LSP diagnostics check no longer presents as a confirmed-clean result and no longer erases known-good diagnostic state
  • lens_diagnostics mode=full and lsp_diagnostics now reconcile fresh scan results into the footer/widget-state cache
  • Native TS7 no longer inherits classic typescript-language-server's silentOnClean cascade fast path
  • LSP diagnostics no longer briefly cache stale results after rapid edits
  • recordDiagnostics drops superseded writes to the widget-state diagnostics cache (same race class as #555)
  • Dropped the redundant ast_dump tool registration
  • bus-events.log registered with the log-cleanup retention sweep, and MANAGED_LOG_FILES replaced with auto-derivation
  • Test runner now resolves mirrored test-tree layouts

Don't miss a new pi-lens release

NewReleases is sending notifications on new releases.