2.5.0
Release notes for 2.5.0.
Released: 2026-07-04
A feature release for the claudeResources integration: it can now scan CLAUDE.md files from a wider repo root while writing generated output into its own content collection, plus a boundary-matching fix for excludeDirs and a test-suite reliability improvement.
Features
claudeResources: add an optionalscanRootsetting that decouples the CLAUDE.md discovery root from the generated-output base. Previously a singleprojectRootcontrolled both, which conflicted when a doc site lives in a repo subdirectory —scanRoot(defaults toprojectRoot) now governs CLAUDE.md discovery and relative-path resolution independently, so a subdirectory doc site can scan repo-wide while still writing into its own collection. UnsetscanRootis byte-identical to before (ff425ef8, zudolab/zudo-doc#2558, #2559, #2560)
Bug Fixes
claudeResources:excludeDirsmatching is now path-boundary-aware — an exclude entry fordistno longer wrongly matches a prefix-colliding sibling likedist-extra. Applied identically to both the package and thecreate-zudo-doctemplate copy (2036ba79, zudolab/zudo-doc#2561)claudeResources: fix a follow-up edge case where a trailing-separatorexcludeDirsentry (e.g. adocsDirpassed as"docs/") could bypass the new boundary-aware compare; entries are now normalized before comparison (3c860181)
Other Changes
Strengthen
claudeResourcestest coverage: the runner's no-self-rescan test now drops a decoy CLAUDE.md inside the output dir to directly exercise thedocsDirexclude (previously only asserted idempotency, which passed vacuously), and thescanRootfield is mirrored into all five e2e fixtures' settings casts (0f9ef5a4, zudolab/zudo-doc#2560)Deflake subprocess-heavy root unit tests under CPU load:
scripts/__tests__/**now runs as a dedicated vitest project with a 60s per-test budget (previously rode vitest's 5s default, which could time out under host contention), andpnpm b4push's root-unit-tests step caps vitest workers to reduce self-inflicted contention (7daa6260, zudolab/zudo-doc#2563, #2565)