Browse Source

Merge pull request #97 from raandree/ai/version-history

docs: complete the version history from the PowerShell Gallery
pull/98/head
Raimund Andrée 1 week ago
committed by GitHub
parent
commit
59663c937c
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 39
      .memory-bank/activeContext.md
  2. 6
      .memory-bank/decisions/0009-docs-on-github.md
  3. 83
      .memory-bank/progress.md
  4. 44
      .memory-bank/techContext.md
  5. 6
      CHANGELOG.md
  6. 69
      Docs/Version-History.md

39
.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.

6
.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.

83
.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:

44
.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 <id> --log-failed` (read-only). While AppVeyor
still builds: `api/projects/raandree/ntfssecurity/history`, build
`api/projects/raandree/ntfssecurity/builds/<buildId>`, job log
`api/buildjobs/<jobId>/log` (public, no token).
ci.yml`, `gh pr checks <number>`, and `gh run view <id> --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/<version>`
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.

6
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

69
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.

Loading…
Cancel
Save