github apmantza/pi-lens v3.8.74

2 hours ago

Added

  • 🙏 Huge thanks to @AngriestBird (Kenny McCormick), this round's standout community contributor
  • Prompt-cache observability (refs #1018, closes #1018)
  • Word-index build/refresh/persist outcomes are now durably observable
  • Closed four observability gaps in recently-changed typos-config and project-snapshot code (refs #533)
  • Review-graph checkpoint discards and write failures are now observable
  • The review-graph full build is now resumable across sessions
  • Bundled default typos allowlist for projects without their own config
  • Session-start latency is attributable end to end
  • Review-graph LSP fallback nodes
  • Standalone out-of-band review-graph build CLI
  • /lens-perf surfaces slow phases in-session

Changed

  • Session-start perf: bound the change-log replay + defer log cleanup (closes #1019)
  • Config-consistency pass on the #166 flag registry (refs #166, #533)
  • Normalized call-graph impact checks into structured ProjectDiagnostics
  • Parallelized the per-turn madge dependency check
  • Every runtime toggle is now settable from BOTH the CLI and ~/.pi-lens/config.json, driven by one declarative registry (closes #166)
  • actionableWarnings.autoFix.maxFixes is now actually read
  • Flag provenance gained an env tier and reports the global tier more accurately
  • Unknown top-level keys in ~/.pi-lens/config.json now warn once instead of being dropped silently
  • The review-graph resume checkpoint (#936) now offloads its gzip to the shared persist worker (refs #958, #883)
  • Project snapshot body is now written gzipped by a worker thread
  • Session warmup refreshes the word index incrementally
  • Project scans feed compact structural IR into review-graph builds
  • Session-start performance: LSP pre-warm, snapshot meta-gate, compact cached snapshot
  • Warm LSP names enrich tree-sitter read expansion
  • Installer subprocesses are lifetime-coupled
  • Managed tool installs are cross-process serialized
  • Ordinary tests never install managed tools
  • Installer orphan/locking regressions are process-tested
  • Downgrade TypeScript unsafe-regex to advisory and suppress escaped-before- assignment false positives (refs #932)
  • Review-graph persistence no longer serializes or compresses on the event loop (refs #939)
  • Raise and make the review-graph persist ceiling useful
  • Logger hot paths now coalesce queued lines and rotate during long sessions
  • Incremental review-graph updates avoid redundant whole-graph copies and index rebuilds (refs #939)
  • Reverse-dependency indexes update at import-edge granularity
  • Review-graph file-cap degradation is now explicit and count-honest
  • Project scans release every scan-local fact after each file
  • Repair eight non-compiling Java, C++, CSS and PHP tree-sitter rules (refs #884).
  • Repair four non-compiling Go, Rust, and Kotlin tree-sitter rules (refs #884).
  • Project diagnostics now use one file-major scan pass
  • A project scan runs its rule set in one tree walk, not one walk per rule
  • Project scans parse each file once
  • Tree-sitter cache pressure is measurable
  • Dead incremental-parse cache API removed.
  • Faster LSP teardown and tool probes

Fixed

  • Read-before-edit guard now survives a session resume (#1041)
  • turn_summary_emit quiet-window task no longer fails on a stale pi ctx (the #483 quiet window's most frequent live-dogfood error — 55×)
  • Word index no longer serves stale postings after a case/separator-divergent edit (refs #1025, closes #1025 item #2)
  • Cascade honesty: degraded/uncomputed impact no longer renders as clean (refs #1023, closes #1023)
  • Disposition marks under a nested monorepo language root are no longer silently dropped (refs #1030, closes #1030; pairs with #1024)
  • Disposition anchor path-form stability (refs #1024, closes #1024)
  • lens_diagnostics mode=all no longer replays a resolved blocker (refs #1020, closes #1020)
  • Cache-friendly ephemeral context injection (refs #1016, closes #1016)
  • Fixed: ts-ssrf no longer flags fixed/const endpoint URLs built with new URL(...) as SSRF sinks, while still catching tainted URLs (closes #1000, refs #533, #963)
  • Fixed: no-javascript-url/no-javascript-url-js no longer flag defensive javascript:-URL filters (refs #533)
  • Contained spawn/callback failures that could crash the host (pidusage bug class) (refs #533)
  • Fixed: opengrep security findings now surface project-wide in lens_diagnostics mode=full (refs #585, #584, #533)
  • Fixed: test-runner findings now surface project-wide in lens_diagnostics mode=full (closes #1004, refs #585, #533)
  • Guarded Windows CPU/RSS resource sampling so a best-effort sampler can no longer crash the pi host (refs #620, #533)
  • Stabilized the two remaining flaky/environment-sensitive tests tracked in #902.
  • pi-lens build-graph honestly reports a capped, over-the-cap persist
  • ts-ssrf no longer trusts naming convention as proof of a fixed URL
  • Remaining test-suite spawns routed off shell:true to close the Windows-spawn flake class
  • Tree-sitter post-filters no longer leave silently dead rules
  • Capped word indexes disclose partial coverage
  • pilens_health keeps disabled LSP servers visible
  • Cold symbol_search failures are now observable and honest
  • Failed heavyweight analyzers no longer masquerade as clean runs
  • The footer refreshes as LSP servers come online during a cold lens_diagnostics mode=full sweep (refs #798)
  • Tree-sitter WASM aborts are now visible instead of silently disabling structural analysis for the rest of the process (refs #915)
  • pilens_rebuild can no longer destroy an npm-installed pi-lens
  • Review-graph background failures are no longer silent
  • Resolve nested C# and F# project roots for dotnet builds (refs #895).
  • A mid-scan tree-sitter WASM abort no longer replaces the authoritative project-diagnostics snapshot with a silently truncated result (refs #891)
  • Block-wrapped switch cases no longer report false fall-through errors
  • Project-wide enumeration now covers every registered file kind
  • CMake files now reach a real LSP server
  • Fish LSP policy is no longer dead wiring
  • Editing an inherited tree-sitter rule now invalidates the inheriting language's RuleCache
  • Small edits no longer pay the entity-extraction cost
  • The per-edit tree-sitter runner walks the tree once, not once per rule
  • A transient grammar-load failure no longer disables batched rule scans for the process lifetime
  • module-report parses plain JS under the correct tree-sitter grammar
  • A rule whose query fails to compile now warns once instead of silently reporting nothing
  • TreeCache mtime false misses and FIFO eviction
  • Eight enabled typescript/javascript tree-sitter rules whose queries never compiled (refs #884)
  • A column-0 comment after a query: | block no longer breaks the rule
  • Seven ruby security rules never compiled and never produced a finding
  • Six python rules never compiled or never fired
  • Project scans run tree-sitter rules for every supported language, not just 10 extensions
  • .dart files are now included in project-wide source enumeration
  • Tree-sitter rules were compiled against the wrong grammar
  • Project scans ran rules from -disabled/ directories
  • .tsx parsed with the typescript grammar
  • An unimplemented post_filter reported every raw match instead of none.
  • YAML scalars kept their trailing comments
  • tree-sitter runner no longer double-increments already 1-indexed line/column (refs #448)

Security

  • Debug logs redact credential-shaped text before it reaches disk

🙏 Thanks

Thanks to the external contributors in this release:

Don't miss a new pi-lens release

NewReleases is sending notifications on new releases.