github apmantza/pi-lens v4.2.0

3 hours ago

Added

  • Add Typst language support (refs #3037)
  • Opt-in compact LSP status line (ui.compactLspStatus, --lens-compact-lsp-status) (refs #3099)
  • Opt-in off mode for the LSP status line (ui.hideLspStatus, --lens-hide-lsp-status) (closes #3099)
  • Allow an explicit analysis root below the home ceiling (closes #2053)
  • Detect tests that drive the registry against the run-shared PI_LENS_HOME (refs #3042, #3050)
  • Opt Typst (tinymist) into the nightly LSP clean-gate (refs #3037, #3164)

Changed

  • Auto-rerun the second infra kill on one head, and sweep master-only workflow lanes (refs #2042, #3043)
  • Record per-cgroup memory/PID/PSI samples and a 200ms watch cadence in CI (refs #2042)
  • Clarify merge-time defect-shape catalog allocation and add two contract screens (refs #2996)
  • Merge-train and reviewer contracts gain five rules from the 2026-09-12 train (refs #2996)
  • External reports are assessed against the code and their load-bearing questions answered before dispatch (refs #3001)
  • Deny TMPDIR=.probe-home in the Bash guard hook and forbid raw commit-ish Git spawns under tests/ (refs #3026, #3050)
  • Skip unchanged PR-body lint on synchronize (refs #3030)
  • Fold the ast-grep catalog source-walk onto one effective-catalog helper (refs #3053)
  • Fold the tree-sitter query loader onto js-yaml (refs #3054)
  • Cut the two heaviest test files' peak memory by 8.4 GB and gate the budget (refs #3058)
  • Enforce the DegradationKind union against every emitted kind (refs #3071)
  • Bound the Unit tests job with timeout-minutes (refs #3111)
  • Bound every remaining workflow job with a measured timeout-minutes (refs #3111, closes #3123)
  • Close two gaps in the DegradationKind coverage sweep (refs #3071, #3138, closes #3140)
  • Check PR-body claims with Markdown-aware sentence units (refs #2904)
  • Verify PR-body code citations (refs #2904)
  • Recognise PR test references by shape and placement (refs #2904)
  • Keep PR-body fixture setup in process (refs #3016)
  • Contracts from the 2026-09-10 merge train.
  • Retro 2026-09-15 outputs
  • Retrospective contract
  • Keep incomplete observation evidence separate from mutation attribution (refs #2984)
  • Pin the availability gate's three known text-anchoring blind spots.

Removed

  • decideClassifierAction in ci-failure-classifier.mjs (refs #3086)

Fixed

  • Never signal a pid pi-lens does not own (refs #2042)
  • Bind cached project findings to the bytes they were scanned from (refs #2154)
  • Keep advisory tool names host-aware (refs #2535)
  • Add explicit fake LSP pull/push ordering controls (refs #2824)
  • Scope project-diagnostics runner retirement by analyzed file coverage (refs #2887)
  • Isolate registry consumers and restore probe-home state (refs #2912)
  • Drain and track lens-map fixtures (refs #2912)
  • Handle PEP 668 pip hosts (closes #2916)
  • Complete slice-2 session guard cleanup (refs #2939)
  • Guard long-lived containers against unbounded growth (refs #2981, refs #2988)
  • Keep bridge bookkeeping alive across session transitions (closes #2992)
  • Discover monorepo-root ESLint and Oxlint configs across nested package.json boundaries (refs #3017)
  • Install managed archive tools with format-aware extraction (refs #3020)
  • Make the formatter's no-config indentation fallback stable (refs #3038)
  • Honor a rule's own ignores paths over LSP (refs #3041)
  • Fixed tests/index-vanished-instance-wiring.test.ts reddening in the CI Unit
  • Stop indent-retarget from basing deeper nesting on a block comment's alignment (closes #3052)
  • Exclude template-literal interiors from the formatter's indentation fallback (closes #3059)
  • Re-arm the tree-sitter query parse-failure record every session (refs #3070)
  • Governance sweeps no longer race a scratch test file written into tests/ (closes #3082, closes #3092)
  • Isolate test orphan-backstop state (refs #3083)
  • lens_diagnostics source=lsp honors your marks, rule policy and inline ignores (closes #3088, closes #3041, refs #3047)
  • Drain stdin to EOF in the guard-bash PreToolUse hook instead of a single readFileSync(0) (#3089)
  • with-memory-watch survives a full stdout pipe instead of dying on it (closes #3097)
  • A mis-cased path and a normalized read now share one anchor on POSIX (refs #3098, refs #3090)
  • The turn-end late-auxiliary advisory and the cold-neighbour cascade run honor a disposition mark (#3102)
  • Vanished-file diagnostic reaches the run log on a passing suite (refs #3107)
  • Reclaim stale tmp-hygiene-baseline-<run>.json files on the existing backstop stale arm (refs #3109, #2912, #3100)
  • Retry the mem-watch write-failure note through the same channel that retries every other line, with a bound of its own (closes #3110, closes #3115)
  • Nested agent-data trees no longer cost a project its startup scan, and a project-scope tools.<name>.enabled is no longer called invalid (fixes #3112)
  • Stop indent-retarget from basing deeper nesting on a template literal's alignment (closes #3116)
  • Recognise regex literals in the indentation template-lexer's conservative state (refs #3120)
  • A global-only actionableWarnings.autoFix.maxFixes written in a project .pi-lens.json is no longer dropped in silence (fixes #3131)
  • The in-lane per-edit cascade block honors a disposition mark (#3157)
  • A file created under a spelling the filesystem re-cases keeps its write record (refs #3163)
  • The release workflow's publish toolchain is now exercised before a release (closes #2940)
  • PR-body test-reference check stops flagging commands, output, and prose (closes #3013)
  • Keep fork pull requests out of token-capped CI writes (closes #2993)
  • Widget disposition reconciliation is admission-ordered (refs #1616)
  • Share explicit analysis-root validation across heavyweight diagnostics consumers (refs #2053).
  • Preserve the analysed file state across concurrent writes (refs #2499)
  • Directory-target observed codemods are analysed over rewritten files (closes #2500)
  • Measure stale async test-runner verdicts (refs #2542)
  • Pin backstop assertions to their sweep row (closes #2669)
  • Register only the read range the host delivered (refs #2802)
  • Keep CI verdict labels fresh across pushes (refs #2856)
  • Project data directory slug carries a path hash (closes #2874)
  • Require a SQL sink signal for TypeScript SQL injection findings (closes #2909)
  • Marker-root freshness (refs #2922)
  • Unify test filename classification (refs #2928)
  • Opengrep scan refusal reporting (closes #2943)
  • Anchor the test-runner child on the module its command runs in (refs #2944)
  • Keep side-effect autofixes out of target identity (refs #2957)
  • Harden backstop retry regression coverage (refs #2958)
  • Keep findings when a partial scan has no coverage paths (refs #2962)
  • Share language markers across runner cwd resolution (closes #2965, closes #2966, closes #2964)
  • Bound the spawn usage sampler's concurrency, rate and lifetime (refs #2968)
  • Classify CUDA/HIP .cuh headers (refs #2986)
  • Decline ktlint autofix when project agreement is unavailable (refs #3000)
  • Require project tool agreement before autonomous writes (refs #3005)
  • Confirm same-size all-LSP blocker rewrites (refs #3011)
  • Adopt NDJSON rotation bounds across extension reloads (closes #3012)
  • Compile against @types/node 26.5.1 (refs #3026)
  • Require chart topology for Helm YAML classification (refs #3034)
  • Stale inline blockers from non-LSP analyzers (closes #2982)
  • Classify YAML files under Helm templates/ directories as Helm templates
  • Put pnpm 11's resolved global bin directory ($PNPM_HOME/bin) on PATH in
  • Fix install-smoke's pnpm global-bin setup for pnpm 11 projects declaring npm by writing the setting globally in both pi-load and …
  • Restrict install-smoke pull-request runs to the master base branch and
  • Fix per-hook tool-result budget classification, formatter attribution, and deferred-format delivery.
  • Keep lifecycle hooks within per-hook wall budgets (refs #2523)
  • Keep latency-logger test mocks faithful to production exports (refs #2281)
  • vi-mock export sweep reads importOriginal<T>() as a pass-through
  • Stop the /lens-perf occupancy guard flaking under CI contention (closes #2886)
  • Keep deferred fixture roots tracked until their final drained cleanup pass (refs #2912)
  • Drain deferred jscpd fixture cleanup (refs #2912)
  • Remove test scratch directories on exit (refs #2912)
  • Spawn-cwd scanner derives one vocabulary from the seam and freezes (closes #2927)
  • Keep the #2992 regression probe out of system temp (refs #2912)
  • Isolate instance-reaper-unref from the run-shared PI_LENS_HOME (refs #3050)

🙏 Thanks

Thanks to the external contributors in this release:

Don't miss a new pi-lens release

NewReleases is sending notifications on new releases.