Skip to content

v3.8.72

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Jul 12:25

Added

  • Subagent identity in the instance registry
  • Same-workspace warm LSP attach (opt-in soak)
  • Resource-aware cross-process LSP budget policy
  • Review-graph JavaScript/TypeScript import resolution now follows tsconfig project references
  • getWorkspaceTopology — shared, memoized workspace-topology marker index
  • Root/language-root resolution migrated onto the workspace-topology index — second wave
  • Empirical monorepo test harness — Track B of the #775 root-resolution audit
  • New project_report registered tool (+ MCP mirror pilens_project_report)

Fixed

  • Markdownlint no longer passes the invalid --disable MD013 CLI option
  • safeSpawnAsync (and the deprecated sync safeSpawn) no longer build a cmd.exe command line from caller-tainted input on Windows
  • Multi-server clientScope: "all" diagnostic touches now get the same silent-clean confirm #799 gave the single-server hot path
  • Windows subprocess arguments no longer pass through Node's shell:true concatenation
  • CI drift alerts no longer interpolate third-party output into shell code
  • Windows temp-dir teardown no longer fails tests with EPERM/ENOTEMPTY
  • lens_diagnostic_mark no longer trusts a stale caller-supplied line verbatim — it verifies/reanchors against current diagnostics before writing anything
  • Silent-clean workspace-indexing LSP warm-ups no longer pay the generic 20-second cold floor
  • Cold lens_diagnostics full sweeps no longer burn 2x20s on marksman for a clean markdown project, and no longer re-pay a failed warm-up on every retry sweep
  • mutation-control config follow-ups (#792): global autofix.enabled now honored (docs promised it, code ignored it), the MCP …
  • deferred auto-format queue: records are now owned by the queuing session/turn (#791)
  • compat-smoke behavioral harness: scratch-dir cleanup crash (ENOTEMPTY race) no longer discards assertion results and falsely … (#785)
  • A review graph no longer keeps serving a stale pre-cap snapshot once a repo grows past the review-graph file cap, and project_report now says so honestly
  • Package-local .pi-lens.json ignore patterns are now honored — layered the same way nested .gitignores are
  • Two Track B (#775) follow-ups from the empirical monorepo test harness
  • Three monorepo quick-wins from the #775 root-resolution audit
  • collectSourceFiles/collectSourceFilesAsync (clients/source-filter.ts) now bound the walk by directory entries VISITED, not just source files FOUND
  • The startup source-file count walk now stops after a bounded number of directory entries instead of traversing the entire project tree
  • writeState in clients/diagnostic-dispositions.ts now writes the disposition store via tmp+rename instead of a plain fs.writeFileSync
  • lens_diagnostic_mark dispositions now apply to the cached lens_diagnostics delta/all modes immediately, without waiting for the file to be re-dispatched
  • Remaining cwd-rooted scan roots now carry the same isAtOrAboveHomeDir ceiling, and the source-file walk is capped structurally
  • A sweep warm-up that times out now retries once and, if still cold, skips that server's files for the rest of the sweep instead of letting a wedged server drag the whole run
  • A single backpressured LSP server no longer times out the didOpen/didChange notify write for an entire clientScope:"all" file touch, zeroing every co-touched healthy server's diagnostics
  • lens_diagnostics mode=full no longer launches heavyweight analyzers from $HOME or above
  • symbol_search's cold word-index build no longer walks an unbounded tree from $HOME
  • hasOxlintConfig now detects .oxlintrc.jsonc, oxlint.config.ts, and oxlint.config.mts

Changed

  • Incumbent LSP wait policy now has one process-neutral module boundary
  • Review-graph file budget now tapers instead of scaling flatly or cliff-dropping above 1,000 files
  • Review-graph JS/TS imports now honor compilerOptions.baseUrl and paths aliases, including relative extends chains
  • Nested mutation controls now layer per edited file
  • symbol_search/pilens_symbol_search gained paths/lang filters, per-hit suggestedNext discovery hints, and warm-review-graph annotations
  • New lazyEnvNumber(envName, fallback) factory in clients/env-utils.ts
  • Introduced a shared writeFileAtomic/writeFileAtomicAsync helper (clients/atomic-write.ts) and migrated four of the five hand-rolled ${target}.tmp-${pid} + renameSync/rename writers onto it
  • Consolidated the repo's recursive tree walkers onto a shared bounded-walk engine in clients/source-walker.ts
  • Unified the five independently-hardcoded project-size budgets behind one configurable maxProjectFiles scale knob

🙏 Thanks

Thanks to the external contributors in this release: