Skip to content

Commit 12dd5a2

Browse files
chore(release): 3.0.0
1 parent 32a0db2 commit 12dd5a2

3 files changed

Lines changed: 38 additions & 26 deletions

File tree

CHANGELOG.md

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,23 @@ All notable changes to this project will be documented in this file and **UNRELE
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
55

66
## [Unreleased]
7+
8+
### Added
9+
10+
### Changed
11+
12+
### Deprecated
13+
14+
### Removed
15+
16+
### Fixed
17+
18+
### Security
19+
20+
## [3.0.0] - 2026-05-17
21+
722
### Added
23+
824
- `Initialize-NovaModule` and `% nova init` now offer an optional interactive **Agentic Copilot** starter package for both the minimal and example scaffold flows.
925
- The new prompt appears after the Git question, defaults to `No`, and adds one shared Nova-maintained starter tree when enabled.
1026
- Example scaffolds now merge the existing example README with the Agentic starter README instead of flattening the example guide into the generic starter file.
@@ -30,8 +46,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
3046
- Added mirrored, dot-source-first Pester test files for every public command (`src/public/*.ps1`), so each command (`Invoke-NovaBuild`, `Test-NovaBuild`, `New-NovaModulePackage`, `Initialize-NovaModule`, `Get-NovaProjectInfo`, `Get-/Set-NovaUpdateNotificationPreference`, `Install-NovaCli`, `Invoke-NovaCli`, `Update-NovaModuleTool`, `Update-NovaModuleVersion`, `Deploy-NovaPackage`, `Publish-NovaModule`, `Invoke-NovaRelease`) now has a focused command-surface test under `tests/public/` covering parameter forwarding, delegation to its workflow context/workflow helpers, and `ShouldProcess` / `-WhatIf` behavior without duplicating private helper coverage.
3147
- Restored measured code coverage to the configured 99% target after the test-layout migration by adding mirrored, dot-source-first tests and branch coverage extensions across the remaining gap files in `src/private/quality/`, `src/private/package/`, `src/private/release/`, `src/private/scaffold/`, `src/private/build/`, and `src/private/shared/`. The full suite now reports 99% line coverage against `src/**/*.ps1` with no dist-folder dependency in any test file.
3248

33-
3449
### Changed
50+
3551
- Removed the pre-migration broad coverage-bucket suites (`CoverageGaps*`, `CoverageCompletion*`, `Remaining*Coverage*`, broad `NovaCommandModel*`). The mirrored `tests/public/` and `tests/private/<domain>/` suites added in now own that coverage, and the restored 99% measured coverage confirms no regression, so the parked `tests/_legacy/` reference copies are no longer needed.
3652
- Migrated the remaining mirrored private-helper tests (`tests/private/update/`, `tests/private/quality/`, `tests/private/build/InvokeNovaBuildWorkflow.Tests.ps1`, and `tests/private/scaffold/`) off the legacy `Import-Module dist + InModuleScope` pattern to the dot-source-first model, so the full mirrored test suite runs against `src/**/*.ps1` directly and does not require a prior `Invoke-NovaBuild`.
3753
- Removed the dist-requiring integration and guardrail tests (`Module`, `OutputFiles`, `BuildOptions`, `CiCoverage`, `CliHelperCoverage`, `CliSharedParser`, `PackageLatestPolicy`, `PreambleBuild`, `UpdateNotification`) and their `*TestSupport.ps1` sidecars now that the mirrored suites cover the same behavior and `nova test` no longer depends on `dist/NovaModuleTools` being built first.
@@ -42,27 +58,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
4258
- `ProjectTemplate.json` and the packaged example `project.json` now include Nova's default Pester `CodeCoverage` block with `Enabled=false`, shared `src/` coverage paths, JaCoCo output, and a `90` percent target so new projects can opt into coverage without hand-authoring the configuration.
4359
- `Invoke-NovaModuleToolsCI.ps1` now delegates the full test run to a single `Test-NovaBuild` call; the previous second `Invoke-Pester` pass and post-run Cobertura source-path remapping step have been removed.
4460
- CodeScene coverage upload now uses JaCoCo format instead of Cobertura and uploads both `line-coverage` and `branch-coverage` metrics in a single CI run; the helper script auto-discovers `artifacts/coverage.xml` instead of scanning for `*.cobertura.xml` files.
45-
- `Tests.yml` coverage-gate step now matches `**/coverage.xml` instead of `**/pester-coverage.cobertura.xml` to align with the new JaCoCo artifact path.
46-
47-
48-
### Deprecated
49-
50-
51-
### Removed
52-
61+
- `Tests.yml` coverage-gate step now matches `**/coverage.xml` instead of `**/pester-coverage.cobertura.xml` to align with the new JaCoCo artifact path.
5362

5463
### Fixed
64+
5565
- `Test-NovaBuild` and `% nova test` no longer emit `Remove-Item -Recurse` progress bars during the Pester run; `$global:ProgressPreference` is saved and restored around the test execution so CI logs stay clean.
5666
- Code coverage in `Test-NovaBuild` now runs against the source files, instead of the built `dist/<ModuleName>/<ModuleName>.psm1` file so measured coverage percentages and line numbers align with the deployed module.
5767
- `Invoke-CodeSceneAnalysis.ps1` now normalizes Pester's JaCoCo output before upload so the `<class sourcefilename>` and `<sourcefile name>` entries are bare filenames and `package + sourcefile` resolves to real repository paths. This fixes the CodeScene `cs-coverage upload` failure "The coverage data does not contains any records related to the current repo" that appeared after the source-mirrored coverage migration.
5868
- The pull-request CodeScene coverage gate now normalizes downloaded JaCoCo coverage artifacts before running `cs-coverage check`, so PRs no longer report `0.0%` coverage across the board because of unnormalized `package + sourcefile` paths.
5969
- `Invoke-CodeSceneAnalysis.ps1` now only invokes the `cs-coverage upload … --metric branch-coverage` step when the JaCoCo report actually contains `<counter type="BRANCH">` entries, so Pester reports that only emit line counters no longer fail the CodeScene step with "Requested metric is not present in coverage data".
6070
- Pester coverage configuration now uses explicit private-folder depth globs instead of `src/private/**/*.ps1`, so nested helpers such as `src/private/build/manifest/` and `src/private/quality/duplicates/` are included in `artifacts/coverage.xml` during the full `Test-NovaBuild` run.
6171

62-
63-
### Security
64-
65-
6672
## [2.4.0] - 2026-05-10
6773
### Added
6874
- Added a repository-local agentic coding setup under `.github/` for Copilot/AI-assisted repository work.
@@ -391,8 +397,8 @@ This release was yanked because it removed the implicit `Pester` dependency, bef
391397
- First release to `psgallery`
392398
- All basic functionality of Module is ready
393399

394-
395-
[Unreleased]: https://github.com/stiwicourage/NovaModuleTools/compare/2.4.0...HEAD
400+
[Unreleased]: https://github.com/stiwicourage/NovaModuleTools/compare/3.0.0...HEAD
401+
[3.0.0]: https://github.com/stiwicourage/NovaModuleTools/compare/2.4.0...3.0.0
396402
[2.4.0]: https://github.com/stiwicourage/NovaModuleTools/compare/2.3.1...2.4.0
397403
[2.3.1]: https://github.com/stiwicourage/NovaModuleTools/compare/2.3.0...2.3.1
398404
[2.3.0]: https://github.com/stiwicourage/NovaModuleTools/compare/2.2.0...2.3.0
@@ -411,3 +417,4 @@ This release was yanked because it removed the implicit `Pester` dependency, bef
411417
[0.0.6]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.5...Version_0.0.6
412418
[0.0.5]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.4...Version_0.0.5
413419
[0.0.4]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.3...Version_0.0.4
420+

RELEASE_NOTE.md

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,32 @@
33
This file summarizes the release notes for NovaModuleTools. **UNRELEASED** changes will be included in the next **stable** release!
44

55
## [Unreleased]
6+
67
### Added
7-
- `Initialize-NovaModule` and `% nova init` now offer an optional **Agentic Copilot** starter package in both the minimal and example interactive scaffold flows.
8-
- The starter package follows a filtered mirror of Nova's maintained agentic guidance so newly scaffolded projects receive a broader Nova-style agentic baseline without Nova-specific surfaces.
9-
- When Git is enabled in either scaffold flow, Nova now creates or updates a default `.gitignore` in the generated project root and only appends the missing Nova-managed artifact entries instead of overwriting existing ignore rules.
10-
- Before the first interactive scaffold question, Nova now checks for newer NovaModuleTools releases and reuses the same non-blocking update warning behavior already used by build.
11-
- `Test-NovaBuild` and `% nova test` now enforce `Pester.CodeCoverage.CoveragePercentTarget` from `project.json` when `CodeCoverage.Enabled` is `true`, so coverage gates work without extra external tooling.
128

139
### Changed
14-
- New projects now start with Nova's default Pester `CodeCoverage` block in both the minimal template and packaged example `project.json`, with `Enabled=false`, shared `src/` coverage paths, JaCoCo output, and a `90` percent target ready to opt into.
15-
1610

1711
### Deprecated
1812

19-
2013
### Removed
2114

22-
2315
### Fixed
2416

25-
2617
### Security
2718

19+
## [3.0.0] - 2026-05-17
20+
21+
### Added
22+
23+
- `Initialize-NovaModule` and `% nova init` now offer an optional **Agentic Copilot** starter package in both the minimal and example interactive scaffold flows.
24+
- The starter package follows a filtered mirror of Nova's maintained agentic guidance so newly scaffolded projects receive a broader Nova-style agentic baseline without Nova-specific surfaces.
25+
- When Git is enabled in either scaffold flow, Nova now creates or updates a default `.gitignore` in the generated project root and only appends the missing Nova-managed artifact entries instead of overwriting existing ignore rules.
26+
- Before the first interactive scaffold question, Nova now checks for newer NovaModuleTools releases and reuses the same non-blocking update warning behavior already used by build.
27+
- `Test-NovaBuild` and `% nova test` now enforce `Pester.CodeCoverage.CoveragePercentTarget` from `project.json` when `CodeCoverage.Enabled` is `true`, so coverage gates work without extra external tooling.
28+
29+
### Changed
30+
31+
- New projects now start with Nova's default Pester `CodeCoverage` block in both the minimal template and packaged example `project.json`, with `Enabled=false`, shared `src/` coverage paths, JaCoCo output, and a `90` percent target ready to opt into.
2832

2933
## [2.4.0] - 2026-05-10
3034
### Changed
@@ -184,3 +188,4 @@ This release was yanked because it removed the implicit `Pester` dependency befo
184188
## [0.0.4] - 2024-06-25
185189
### Added
186190
- First PowerShell Gallery release of NovaModuleTools with the initial module workflow support.
191+

project.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"ProjectName": "NovaModuleTools",
33
"Description": "NovaModuleTools is an enterprise-focused evolution of ModuleTools, designed for large-scale PowerShell projects with a strong emphasis on structure, maintainability, and automated CI/CD pipelines.",
4-
"Version": "2.4.1-preview",
4+
"Version": "3.0.0",
55
"Preamble": [
66
"Set-StrictMode -Version Latest",
77
"$ErrorActionPreference = 'Stop'"

0 commit comments

Comments
 (0)