From eb69f134c0ac3db171850d619069b86d671b1874 Mon Sep 17 00:00:00 2001 From: Raimund Andree Date: Sun, 4 Oct 2026 19:36:23 +0200 Subject: [PATCH 1/2] docs: complete the version history from the PowerShell Gallery Compare the six NTFSSecurity packages in the PowerShell Gallery (4.0.0 and 4.2.2 to 4.2.6) and the commit history to complete the version history: - Add the Gallery publish dates to 4.0 and 4.2.2 to 4.2.6. - Add notes for 4.2.2, which had none: Test-Path2, Remove-Item2 -PassThur, the new audit parameters, and the hidden Show-SimpleAccess. - Replace "Bug fixes" for 4.2.4 with its changes (#12, #31, #33, #35), and move the MIT license there: the 4.2.4 package already links it. - Split 4.2.5 (#18, #36, #48, Show-SimpleAccess removed) from 4.2.6, which only fixed the Applies to column that 4.2.5 broke (#57). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: AI Assistant --- CHANGELOG.md | 6 ++++ Docs/Version-History.md | 69 ++++++++++++++++++++++++++++++++--------- 2 files changed, 61 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc909f5..3451647 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,12 @@ The format is based on [wiki](https://github.com/raandree/NTFSSecurity/wiki), generated from the `Docs` folder after every change, with a sidebar that lists all cmdlets +### Changed + +- Complete the version history with the release dates from the PowerShell + Gallery, notes for 4.2.2, detailed notes for 4.2.4, and separate notes for + 4.2.5 and 4.2.6 + ## [5.0.0] - 2026-10-04 ### Changed diff --git a/Docs/Version-History.md b/Docs/Version-History.md index 6f8ea40..cbbd40c 100644 --- a/Docs/Version-History.md +++ b/Docs/Version-History.md @@ -4,32 +4,73 @@ This page lists the changes in NTFSSecurity 4.2.6 and earlier. It replaces the hand-written version history that the GitHub wiki kept until 2018. For the changes since 4.2.6, see the [changelog](../CHANGELOG.md). -## 4.2.5 and 4.2.6 +Dates are the days on which the PowerShell Gallery published a version. +Versions without a date were released only on CodePlex, and their release +dates are lost. The notes for 4.2.2 and later also draw on a comparison of +the packages in the PowerShell Gallery and on the commit history. -The PowerShell Gallery published 4.2.5 on 2019-07-11 and 4.2.6 on -2019-07-12. The wiki listed no changes for these versions, so this list is -reconstructed from the commit history. +## 4.2.6 - 2019-07-12 -- Removed `Show-NTFSSimpleAccess`, which used Windows Forms, for - compatibility with PowerShell Core. -- Fixed parameter alias definitions that made importing the module fail, - for example in Service Management Automation +- Fixed the `Applies to` column in the output of `Get-NTFSAccess` + ([#57](https://github.com/raandree/NTFSSecurity/pull/57)). + +## 4.2.5 - 2019-07-11 + +- Removed `Show-SimpleAccess`, which used Windows Forms, for compatibility + with PowerShell Core. It had not been available since 4.2.2. +- Fixed the aliases `IdentityReference` and `ID` of the `-Account` + parameter, whose definition made importing the module fail, for example + in Service Management Automation ([#18](https://github.com/raandree/NTFSSecurity/issues/18), [#36](https://github.com/raandree/NTFSSecurity/issues/36)). - Fixed the `ToSimpleFileSystemAccessRule2` method of the access entries that `Get-NTFSAccess` returns ([#48](https://github.com/raandree/NTFSSecurity/issues/48)). -- Fixed the `ApplyTo` column in the output of `Get-NTFSAccess`. +- Known issue: the `Applies to` column in the output of `Get-NTFSAccess` + shows the inheritance flags instead of the scope, such as + `ThisFolderSubfoldersAndFiles`. 4.2.6 fixes it. + +## 4.2.4 - 2018-08-13 + +- `Get-ChildItem2` adds a `HardLinkCount` property to each file. The new + module setting `IdentifyHardLinks` turns it off. +- The objects that `Get-NTFSOwner` returns have the properties `FullName` + and `Account`, so you can pipe them into `Set-NTFSOwner` + ([#31](https://github.com/raandree/NTFSSecurity/issues/31)). +- `Copy-Item2 -Force` and `Move-Item2 -Force` replace an existing file + instead of failing. +- Updated AlphaFS, the library for long paths, to 2.2.1. - Added the MIT license. +- Fixed `Get-NTFSSimpleAccess -ExcludeInherited`, which returned inherited + permissions ([#12](https://github.com/raandree/NTFSSecurity/issues/12)). +- Fixed `-PassThru` of `Enable-NTFSAccessInheritance`, + `Disable-NTFSAccessInheritance`, `Enable-NTFSAuditInheritance`, and + `Disable-NTFSAuditInheritance` + ([#33](https://github.com/raandree/NTFSSecurity/issues/33)). +- Fixed `Remove-NTFSAudit`, which didn't work + ([#35](https://github.com/raandree/NTFSSecurity/issues/35)). -## 4.2.4 +## 4.2.3 - 2016-05-19 +- Added the cmdlet `Get-FileHash2`. - Bug fixes. -## 4.2.3 +## 4.2.2 - 2016-05-18 -- Added the cmdlet `Get-FileHash2`. -- Bug fixes. +No notes exist for this version. Compared with 4.0, the previous version in +the PowerShell Gallery, it adds the cmdlets of 4.2 and 4.2.1 and these +changes, which no notes mention: + +- Added the cmdlet `Test-Path2`. +- Added the `-PassThur` parameter to `Remove-Item2`, renamed to `-PassThru` + in 5.0.0. +- `Add-NTFSAudit` takes the audit flags in the new `-AuditFlags` parameter + instead of `-AccessType`. +- `Remove-NTFSAudit` has the new parameters `-Path` and + `-SecurityDescriptor`, and its `-Type` parameter is renamed to + `-AuditFlags`, its former alias. +- `Show-SimpleAccess` is no longer available, because the module manifest + lists it as `Show-NTFSSimpleAccess`. ## 4.2.1 @@ -50,7 +91,7 @@ reconstructed from the commit history. entries. The old behavior is still available with the `-RemoveSpecific` switch parameter. -## 4.0 +## 4.0 - 2015-08-19 - The `*-NTFSAccess` cmdlets can now work on security descriptors to allow bulk processes. From a735ed17464b707360672e81f8f47787b4ac94d2 Mon Sep 17 00:00:00 2001 From: Raimund Andree Date: Sun, 4 Oct 2026 19:36:23 +0200 Subject: [PATCH 2/2] chore(memory-bank): record the merges of #94 to #96 and the Gallery history - #94, #95, and #96 merged; the first master run passed and published the wiki; AppVeyor no longer reports. - Decision 9 records that the version history stays separate from the changelog, and why. - techContext: Gallery versions and dates, the package comparison recipe, and MD024 siblings_only for CHANGELOG.md. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: AI Assistant --- .memory-bank/activeContext.md | 39 +++++---- .memory-bank/decisions/0009-docs-on-github.md | 6 +- .memory-bank/progress.md | 83 +++++++------------ .memory-bank/techContext.md | 44 ++++++---- 4 files changed, 81 insertions(+), 91 deletions(-) diff --git a/.memory-bank/activeContext.md b/.memory-bank/activeContext.md index c35513f..438b536 100644 --- a/.memory-bank/activeContext.md +++ b/.memory-bank/activeContext.md @@ -9,31 +9,30 @@ source: current task evidence ## Current focus -PRs #94 (docs on GitHub) and #95 (manifest and version 5.0.0, stacked on -PR #94) are open and build on AppVeyor. The move to GitHub Actions (CI and -a wiki generated from `Docs`, Decision 11) is PR-ready on the local branch -`ai/github-actions`, stacked on #95; the maintainer pushes it and opens the -PR. Merge order: #94, #95 (merge commits), then the GitHub Actions PR. +PRs #94, #95, and #96 are merged; CI and the wiki run on GitHub Actions. +The version history completed from the PowerShell Gallery packages is +PR-ready on the local branch `ai/version-history`; the maintainer pushes it +and opens the PR. Work package 5 (code defects) waits for the maintainer's +go-ahead. ## Evidence -- `Wiki.Tests.ps1` failed 25 of 25 before the exporter existed and passes - 25 of 25 in Windows PowerShell 5.1 and PowerShell 7.6.1. A negative - control (broken anchor, missing page, missing file) reports all three. -- A dry run against a clone of the live wiki adds 41 pages, changes Home - and How-to-install, and deletes the stale `Cmdlets.md` and - `Version-History.textile`; nothing was pushed. -- `Invoke-Tests.ps1`, as CI calls it, passed locally against a Release - build: Windows PowerShell 5.1 253 of 253; PowerShell 7 217 passed and 36 - skipped (`Get-Help -Online` runs only in Windows PowerShell). -- actionlint 1.7.12 reports nothing for `.github/workflows/ci.yml`. The - runner image `windows-2025` has Visual Studio 2022 MSBuild 17.14, NuGet, - the GitHub CLI, and PowerShell 7.6; `master` has no branch protection. +- Six Gallery packages compared (4.0.0, 4.2.2 to 4.2.6), each imported in + its own Windows PowerShell process: exported cmdlets 30, 35, 36, 36, 36, + 36. `Show-SimpleAccess` was exported only by 4.0.0 (the manifest of 4.2.2 + to 4.2.4 lists it as `Show-NTFSSimpleAccess`) and deleted in 4.2.5. All + versions export the aliases `dir2`, `gi2`, `rm2`, and `del2` only. +- 4.2.4 already carried the MIT license (`LicenseUri`), the setting + `IdentifyHardLinks`, and AlphaFS 2.2.1; 4.2.5 fixed the `-Account` + aliases (#18, #36) and #48 but broke the `Applies to` column, which 4.2.6 + fixed (#57). 4.2.5 and 4.2.6 still ship AlphaFS 2.2.1: `d8f67af` updated + only `packages.config`, not the `HintPath`. +- `Wiki.Tests.ps1` passes with the changed page; markdownlint (with `MD024` + siblings only for `CHANGELOG.md`) and the link check found nothing. - The local branch `ai/read-the-docs` keeps the dropped strict-build work (`886c874`, `325ec76`); delete it once it is no longer wanted. ## Next step -After the maintainer pushes: read the AppVeyor results of #94 and #95 and -the first GitHub Actions run with `gh run view`. Work package 5 (code -defects) starts only after the maintainer's go-ahead. +After the maintainer opens the PR: read its GitHub Actions run with +`gh pr checks`. Then wait for the go-ahead for work package 5. diff --git a/.memory-bank/decisions/0009-docs-on-github.md b/.memory-bank/decisions/0009-docs-on-github.md index 28b89c4..f5decb2 100644 --- a/.memory-bank/decisions/0009-docs-on-github.md +++ b/.memory-bank/decisions/0009-docs-on-github.md @@ -23,4 +23,8 @@ source: maintainer decision in work package 3 that GitHub shows it when you open the `Docs` folder. - Rejected: taking over or re-importing the Read the Docs project with a strict MkDocs build (prepared on the local branch `ai/read-the-docs`, not - merged). + merged). Also rejected (maintainer, 2026-10-04): merging + `Docs/Version-History.md` into `CHANGELOG.md`. Only 5 of the 22 old + versions have a recoverable release date (PowerShell Gallery) and only 3 + have tags, so they can't follow the changelog format; the page instead + carries the Gallery dates and notes completed from the Gallery packages. diff --git a/.memory-bank/progress.md b/.memory-bank/progress.md index 034bf86..9eca350 100644 --- a/.memory-bank/progress.md +++ b/.memory-bank/progress.md @@ -9,13 +9,12 @@ source: repository evidence ## Current status -PRs #91, #92, and #93 are merged. The documentation matches the cmdlets at -`master`, and the module ships the help file generated from it -(`en-US\NTFSSecurity.dll-Help.xml`). Otherwise the module source differs -from the 4.2.6 release only by the `Remove-Item2 -PassThru` rename and -`CompatiblePSEditions`. Open PRs: #94 (work package 3) and #95 (work package -4, stacked on #94); the move to GitHub Actions is PR-ready locally on -`ai/github-actions`, stacked on #95. +PRs #91 to #96 are merged; `master` (`4f9f7cc`) carries version 5.0.0, +which is not released yet. CI runs on GitHub Actions: build, docs checks, +and tests in Windows PowerShell 5.1 and PowerShell 7, plus the wiki, which +is generated from `Docs` (43 pages). AppVeyor no longer reports on `master`. +PR-ready locally: `ai/version-history`, the version history completed from +the PowerShell Gallery packages. ## Recent milestones @@ -36,24 +35,17 @@ from the 4.2.6 release only by the `Remove-Item2 -PassThru` rename and upload had listed 870), six cmdlet-page links reworded for the help text. AppVeyor passed 218 of 218 on the PR (54834295) and on `master` (54834350). -- 2026-10-04: The maintainer dropped Read the Docs: the docs stay on GitHub - and the wiki is retired (Decision 9). Work package 3 committed locally on - `ai/docs-on-github` (`84328dc`). The strict Read the Docs build prepared - before stays unmerged on the local branch `ai/read-the-docs`. -- 2026-10-04: Work package 4 committed locally on `ai/manifest-version` - (`678ff90`), stacked on `ai/docs-on-github`: valid manifest (requires - PowerShell 5.1), 36 cmdlets, version 5.0.0 everywhere (Decision 10), - `-PassThur` alias. The AppVeyor test script, run locally in Windows - PowerShell 5.1, passed: no docs drift, 0 broken links, current help file, - 228 of 228 Pester tests. `Test-ModuleManifest` passes in Windows - PowerShell 5.1 and PowerShell 7.6.1. -- 2026-10-04: The maintainer opened #94 and #95, then chose to keep the wiki, - generated from `Docs`, and to move CI from AppVeyor to GitHub Actions in - one PR (Decision 11): committed locally on `ai/github-actions`, stacked on - #95. `Wiki.Tests.ps1` failed 25 of 25 before the exporter existed and - passes in both editions; `Invoke-Tests.ps1` passed locally in Windows - PowerShell 5.1 (253 of 253) and PowerShell 7 (217 passed, 36 skipped); - actionlint found nothing. +- 2026-10-04: Work packages 3 (#94, `bde59a5`), 4 (#95, `6665825`), and the + move to GitHub Actions (#96, `4f9f7cc`) merged with merge commits: Read + the Docs dropped (Decision 9), version 5.0.0 with a valid manifest + (Decision 10), CI and a wiki generated from `Docs` on GitHub Actions + (Decision 11). The first `master` run (37218869672) passed and published + the wiki (`62ec94a`, 43 pages). +- 2026-10-04: The maintainer kept the version history separate from + `CHANGELOG.md` and had it completed from the six PowerShell Gallery + packages and the commit history: release dates, notes for 4.2.2, detailed + notes for 4.2.4, and separate notes for 4.2.5 and 4.2.6 + (`ai/version-history`). ## Stable capabilities @@ -72,33 +64,20 @@ next package starts only after the maintainer's go-ahead. 1. Housekeeping: done (#92). 2. Ship help: done (#93). -3. Docs on GitHub (was: Read the Docs), PR #94: Read the Docs and MkDocs - configuration removed, `Docs/index.md` renamed to `Docs/README.md`, the - wiki's version history and install steps moved into `Docs` (with - reconstructed notes for 4.2.5 and 4.2.6), contributor guide updated. Keep - the wiki on: the GitHub Actions PR generates it from `Docs`, which also - keeps the release-note links to `wiki/Version-History` working. - `Sup3rlativ3` may be asked to delete the Read the Docs project. -4. Manifest and version, PR #95, stacked on #94 (merge #94 first with a - merge commit). - Maintainer decisions: `PowerShellVersion` 5.1, `DotNetFrameworkVersion` - 4.5.2, `RootModule`; version 5.0.0; `[Alias('PassThur')]` on - `Remove-Item2 -PassThru`, listed under Deprecated; `NTFSSecurity`, - `Security2`, and `PrivilegeControl` carry the module version (Decision - 10). Before the release, not part of the PR: set the date of the 5.0.0 - section to the release date, tag `5.0.0` (no `v` prefix), build in - Release, and clean `C:\Program Files\WindowsPowerShell\Modules\NTFSSecurity` - before `Publish-Module`; releases so far were Debug builds published with - the whole output folder (`.pdb`, `.xml`, - `System.Management.Automation.dll`), and the removed - `NTFSSecurity-Help.xml` would ship again. -4b. GitHub Actions for CI and the wiki (Decision 11), PR-ready on - `ai/github-actions`, stacked on #95 (merge #94 and #95 first with merge - commits). AppVeyor reports a failure on this PR because it removes - `appveyor.yml`; that's expected. After the merge: delete the AppVeyor - project `raandree/ntfssecurity` and revoke AppVeyor's GitHub access, - check the first wiki publication, and consider **Restrict editing to - collaborators only** for the wiki. +3. Docs on GitHub: done (#94). +4. Manifest and version 5.0.0: done (#95). Before the release: set the date + of the 5.0.0 section to the release date (fold the `[Unreleased]` entries + into it), tag `5.0.0` (no `v` prefix), build in Release, and clean + `C:\Program Files\WindowsPowerShell\Modules\NTFSSecurity` before + `Publish-Module`; releases so far were Debug builds published with the + whole output folder (`.pdb`, `.xml`, `System.Management.Automation.dll`), + and the removed `NTFSSecurity-Help.xml` would ship again. +4b. CI and the wiki on GitHub Actions: done (#96). Left to the maintainer: + revoke AppVeyor's GitHub access if it is still granted, consider + **Restrict editing to collaborators only** for the wiki, and optionally + ask `Sup3rlativ3` to delete the Read the Docs project. +4c. Version history from the PowerShell Gallery: PR-ready on + `ai/version-history`. 5. Code defects, listed below: `review: on`, one PR per group, regression test first. Pester 5 tests import `NTFSSecurity\bin\Release`, run in a `$env:TEMP` sandbox and in the CI workflow (pattern: diff --git a/.memory-bank/techContext.md b/.memory-bank/techContext.md index 07c4c9e..af981f4 100644 --- a/.memory-bank/techContext.md +++ b/.memory-bank/techContext.md @@ -65,16 +65,19 @@ source: repository evidence ## Constraints -- `ModuleVersion` is `5.0.0` on `ai/manifest-version` (work package 4, - unreleased; `master` still says `4.2.5`); the latest tag and Gallery - release is `4.2.6`. The manifest requires PowerShell 5.1 and .NET +- `ModuleVersion` on `master` is `5.0.0` (not released); the latest tag and + Gallery release is `4.2.6`. The manifest requires PowerShell 5.1 and .NET Framework 4.5.2, uses `RootModule`, and lists exactly 36 cmdlets; `Test-ModuleManifest` passes in Windows PowerShell 5.1 and PowerShell 7.6. - Besides the shipped help file and its tests (#93), the module source at - `master` differs from tag `4.2.6` only by the `Remove-Item2 -PassThur` - to `-PassThru` rename and `CompatiblePSEditions` in the manifest; work - package 4 adds the manifest and version changes and the `-PassThur` - alias. + `master` differs from tag `4.2.6` by the `Remove-Item2 -PassThur` to + `-PassThru` rename (with a `-PassThur` alias), the manifest changes of + #95, and the assembly versions. +- PowerShell Gallery versions (publish dates): 4.0.0 (2015-08-19), 4.2.2 + (2016-05-18), 4.2.3 (2016-05-19), 4.2.4 (2018-08-13), 4.2.5 (2019-07-11), + 4.2.6 (2019-07-12); none has release notes. Older versions were released + on CodePlex only, and their dates are lost. The git history starts on + 2016-10-10, when the project moved from CodePlex. - Releases have no script and no CI deployment. Evidence from 4.2.6: the Gallery DLLs are Debug builds (`DebuggableAttribute` 263), the nuspec comes from `Publish-Module`, the package holds the whole output folder @@ -82,12 +85,11 @@ source: repository evidence published manifest differs from the tag only by `ModuleVersion` (tags carry the previous version). GitHub releases attach `NTFSSecurity.zip`. - CI: GitHub Actions on pull requests and pushes to `master` (Decision 11). - The AppVeyor project `raandree/ntfssecurity` builds until the maintainer - deletes it after the GitHub Actions PR is merged. The Read the Docs - project `ntfssecurity` (maintainer `Sup3rlativ3`) and a second AppVeyor - project are attached to the fork `Sup3rlativ3/NTFSSecurity`, which no - longer exists (GitHub 404, 2026-10-04). That site still serves pages from - 2020 and isn't used (Decision 9). + AppVeyor no longer reports on `master` (checked on `4f9f7cc`). The Read + the Docs project `ntfssecurity` (maintainer `Sup3rlativ3`) and a second + AppVeyor project are attached to the fork `Sup3rlativ3/NTFSSecurity`, + which no longer exists (GitHub 404, 2026-10-04). That site still serves + pages from 2020 and isn't used (Decision 9). - `Get-FileHash2` fails in PowerShell 7; all other cmdlets passed a smoke test in PowerShell 7.6. - `CHANGELOG.md` lists user-visible changes only; CI and build-only changes @@ -119,10 +121,8 @@ source: repository evidence publishes from `master` only. Actions are pinned by commit SHA: `actions/checkout` v7.0.1, `actions/upload-artifact` v7.0.1. - Read CI runs with `gh run list --repo raandree/NTFSSecurity --workflow - ci.yml` and `gh run view --log-failed` (read-only). While AppVeyor - still builds: `api/projects/raandree/ntfssecurity/history`, build - `api/projects/raandree/ntfssecurity/builds/`, job log - `api/buildjobs//log` (public, no token). + ci.yml`, `gh pr checks `, and `gh run view --log-failed` + (read-only). - Workflow lint: actionlint (download the release zip into `$env:TEMP` and check its SHA-256 against the checksum file); PowerShell steps check `$LASTEXITCODE` after every native command, because GitHub checks only @@ -137,7 +137,15 @@ source: repository evidence `powershell.exe -NoProfile -EncodedCommand` with Pester imported by full path. A run without `bin\Release\en-US` must fail. - Markdown lint: `npx markdownlint-cli2` with `MD013` limited to prose - (tables, code, and headings excluded) on the conceptual pages. + (tables, code, and headings excluded) on the conceptual pages; for + `CHANGELOG.md` also `MD024` with `siblings_only: true`, because every + version repeats the category headings. +- Gallery packages: download + `https://www.powershellgallery.com/api/v2/package/NTFSSecurity/` + into `$env:TEMP` and extract it; dates come from the OData endpoint + `api/v2/FindPackagesById()?id='NTFSSecurity'`. Import each version in its + own process: every version's `NTFSSecurity.dll` has assembly version + 4.2.1.0, so a second version in the same process reuses the first DLL. - YAML: `ConvertFrom-Yaml` (powershell-yaml) on `.github/workflows/ci.yml`. - Links: the CI step 02 (MarkdownLinkCheck 0.2.0) checks only relative links in `Docs`; it strips anchors and skips absolute URLs.