All notable changes to PwrSearch are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning. Releases are automated by release-please from Conventional Commits.
1.2.0 (2026-04-17)
1.1.4 (2026-04-16)
1.1.3 (2026-04-16)
1.1.2 (2026-04-16)
1.1.1 (2026-04-15)
- ci: move publish job into release-please workflow (524c521)
- ci: use correct branch name in release-please workflow (69b59e9)
1.1.0 (2026-04-15)
- add Get-RepoRoot cmdlet, rename _sd to sd, drop Razzle _XROOT (e25297f)
- add Get-RepoRoot cmdlet, rename _sd to sd, drop Razzle _XROOT (ec4ce9e)
PwrSearch.psd1module manifest (ModuleVersion1.0.0, tracked by release-please viax-release-please-versionmarker).build.ps1— buildssrc/SearchDir.csprojviadotnet buildand copiesSearchDir.dllnext toPwrSearch.psm1..github/workflows/release-please.yml— opens and maintains release PRs from conventional commits onmain..github/workflows/publish.yml— on GitHub release, runssetup-dotnet, builds, verifies the manifest version matches the tag, and runsPublish-ModulewithPSGALLERY_API_KEY.- Comprehensive
README.mdcovering features, install, usage, search algorithm, build layout, and release automation.
src/SearchDir.csprojrewritten as an SDK-style project targetingnetstandard2.0, usingPowerShellStandard.Libraryso the cmdlet works on both Windows PowerShell 5.1 and PowerShell 7.SearchDirectory.cshot-path optimizations:- Exclude-directory filtering now uses two
HashSet<string>withStringComparer.OrdinalIgnoreCase(name + rooted full-path), giving O(1) rejection per directory instead of O(n) scans over a predicate list. AdvanceSearchinlined intoProcessRecord, eliminating the per-childIEnumerablestate machine and its enumerator allocation.PartQueryconstruction is now iterative right-to-left — one pass over the split pattern parts instead of the old recursiveLINQchain withSkip(...).Count().- Wildcard regexes compile with
RegexOptions.Compiled | RegexOptions.CultureInvariant. - Non-wildcard matchers use
string.StartsWith/string.IndexOfwithStringComparison.Ordinal*. - Bucket sorting uses a cached static
IComparer<SearchState>instead of a lambda allocated per drain. - Also catches
DirectoryNotFoundExceptionalongsideUnauthorizedAccessException, so a directory vanishing mid-walk no longer kills the search.
- Exclude-directory filtering now uses two
- Checked-in
SearchDir.dll— now built from source bybuild.ps1and CI; gitignored at the module root. - Legacy
src/SearchDir.slnandsrc/Properties/AssemblyInfo.cs— not needed with SDK-style projects.