Skip to content

Commit 625a5af

Browse files
authored
Merge pull request #147 from stiwicourage/feature/146-semver-major-zero-behavior-for-nova-bump
Enhance Nova version bump behavior and CLI warning handling
2 parents c978ff3 + 5180c80 commit 625a5af

22 files changed

Lines changed: 879 additions & 132 deletions

.github/prompts/markdown.promt.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Markdown Wrapper Enforcer
2+
3+
## Purpose
4+
Force all output to be wrapped in a Markdown code block using the required format:
5+
6+
~~~markdown
7+
<content>
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
# NovaModuleTools PR Description Generator
2+
3+
## Purpose
4+
5+
Generate a complete, high-quality pull request description for NovaModuleTools based on a change summary, commits, or
6+
diff.
7+
8+
The output MUST follow the NovaModuleTools PR template exactly and be concise, precise, and reviewer-focused.
9+
10+
---
11+
12+
## Inputs
13+
14+
- Change description, commit messages, or diff (required)
15+
- Optional: issue number, workflow touched, commands affected
16+
17+
---
18+
19+
## Instructions
20+
21+
Analyze the provided input and:
22+
23+
1. Infer the intent of the change (bugfix, feature, refactor, CI, docs, etc.)
24+
2. Identify impacted areas (CLI, PowerShell, CI/CD, packaging, docs, etc.)
25+
3. Detect validation steps performed (or infer what should have been run)
26+
4. Highlight reviewer entry points (key files, workflows, or commands)
27+
5. Identify risks, breaking changes, or follow-ups
28+
29+
Be pragmatic: if information is missing, make reasonable assumptions but call them out briefly.
30+
31+
---
32+
33+
## Output format
34+
35+
You MUST return the PR description using this exact structure:
36+
37+
---
38+
39+
## Summary
40+
41+
- What changed?
42+
- Why was this change needed?
43+
- Link the issue, discussion, or follow-up work (for example `Closes #123`).
44+
45+
---
46+
47+
## Affected area
48+
49+
Select all relevant:
50+
51+
- [ ] `nova` CLI or command routing
52+
- [ ] Public PowerShell cmdlet behavior
53+
- [ ] Scaffolding or `project.json` handling
54+
- [ ] Build, test, analyzer, coverage, or CI helper flow
55+
- [ ] Package, raw upload, or package metadata workflow
56+
- [ ] Publish, release, semantic-release, or GitHub Actions automation
57+
- [ ] Self-update or notification preference behavior
58+
- [ ] Contributor documentation (`README.md`, `CONTRIBUTING.md`, repository workflow docs)
59+
- [ ] End-user docs (`docs/*.html`)
60+
- [ ] Command help (`docs/NovaModuleTools/en-US/*.md`)
61+
- [ ] `src/resources/example/`
62+
- [ ] Dependency or manifest changes (`package.json`, workflow dependencies, release tooling)
63+
- [ ] Security-sensitive change
64+
- [ ] Documentation-only change
65+
- [ ] Other
66+
67+
---
68+
69+
## Review guidance
70+
71+
- Highlight the main code path or workflow reviewers should start with.
72+
- Call out the primary files or folders changed (for example `src/public/`, `src/private/cli/`, `scripts/build/ci/`,
73+
`.github/workflows/`, `docs/`, or `src/resources/example/`).
74+
- Call out any trade-offs, follow-up work, or known limitations.
75+
76+
---
77+
78+
## Validation
79+
80+
Mark relevant checks:
81+
82+
- [ ] `Invoke-NovaBuild`
83+
- [ ] `Test-NovaBuild`
84+
- [ ] `./scripts/build/Invoke-ScriptAnalyzerCI.ps1`
85+
- [ ] `./scripts/build/ci/Invoke-NovaModuleToolsCI.ps1`
86+
- [ ] Targeted Nova workflow validated (`% nova build`, `% nova test`, `% nova merge`, `% nova deploy`,
87+
`% nova publish`,
88+
`% nova release`, `% nova update`, `% nova notification`, or `% nova init` as relevant)
89+
- [ ] Docs/example only; executable validation not needed
90+
91+
Validation notes:
92+
93+
```
94+
<Fill with commands, outputs, or justification>
95+
```
96+
97+
---
98+
99+
## Documentation and release follow-up
100+
101+
- [ ] `README.md` reviewed and updated if needed
102+
- [ ] `CONTRIBUTING.md` reviewed and updated if needed
103+
- [ ] `CHANGELOG.md` reviewed and updated if relevant
104+
- [ ] Command help updated if CLI or cmdlets changed
105+
- [ ] End-user docs updated if workflows changed
106+
- [ ] Examples updated if real usage changed
107+
- [ ] No documentation updates needed
108+
109+
---
110+
111+
## Maintainability, compatibility, and risk
112+
113+
- [ ] Code Health / maintainability impact considered
114+
- [ ] No breaking change
115+
- [ ] Breaking change
116+
- [ ] Security-sensitive change
117+
- [ ] CI, workflow, or release-pipeline impact
118+
- [ ] Dependency-review impact
119+
120+
Risk, rollout, or rollback notes:
121+
122+
```
123+
<Describe impact, migration, rollback, or follow-up>
124+
```
125+
126+
---
127+
128+
## Style rules
129+
130+
- Be concise and technical (no fluff)
131+
- Prefer bullet points over paragraphs
132+
- Be explicit about workflows (especially CI/CD and release flow)
133+
- Always think like a reviewer: "Where do I start reading?"
134+
- Never leave sections empty — infer or justify
135+
136+
---
137+
138+
## Example invocation
139+
140+
Generate PR description from:
141+
142+
- Commit: "fix: resolve ambiguous -w CLI parameter parsing"
143+
- Files changed: `src/private/cli/Invoke-NovaCli.ps1`
144+
145+
---
146+
147+
## Expected behavior
148+
149+
The output should be ready to paste directly into a GitHub PR without edits.

CHANGELOG.md

Lines changed: 32 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,33 @@
11
# Changelog
22

3-
All notable changes to this project will be documented in this file and **PreReleased/UNRELEASED** changes will be
4-
included in the
5-
next **stable** release!
3+
All notable changes to this project will be documented in this file and **PREVIEW / UNRELEASED** changes will be
4+
included in the next **stable** release!
65

76
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
87
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
98

109
## [Unreleased]
11-
1210
### Added
1311

14-
### Fixed
15-
1612
### Changed
1713

18-
### Documentation
14+
- Keep stable `Update-NovaModuleVersion` / `% nova bump` releases on the SemVer major-zero development line.
15+
- When the current stable version is `0.y.z` and commit history implies a breaking change, Nova now plans the next
16+
minor version instead of auto-jumping to `1.0.0`.
17+
- Stable `0.y.z` bump results now print one warning about manually setting `1.0.0` once the software is stable,
18+
while breaking-change bumps still report the detected `Major` label.
19+
- `-Preview` behavior is unchanged.
20+
21+
### Deprecated
1922

2023
### Removed
2124

22-
## [2.1.0] - 2026-04-29
25+
### Fixed
2326

24-
### Added
27+
### Security
2528

29+
## [2.1.0] - 2026-04-29
30+
### Added
2631
- Add `Install-NovaCli` and a packaged `nova` launcher so macOS and Linux users can install and run `nova` directly
2732
from zsh or bash.
2833
- `nova` now remains the launcher-facing CLI surface, while `Invoke-NovaCli` stays the explicit PowerShell cmdlet
@@ -108,22 +113,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
108113
- `nova bump --what-if` and `% run.ps1` now surface a predictable summary for previous version, new version, label,
109114
and commit count.
110115

111-
### Fixed
112-
113-
- Fix unsupported `nova` help invocations so they now return Nova's structured CLI validation error instead of a
114-
PowerShell parameter-binding failure.
115-
- Keep manifest/package helper edge cases aligned with their intended behavior.
116-
- Manifest settings resolution now accepts ordered dictionary metadata shapes in addition to plain hashtables.
117-
- `New-NovaPackageArtifacts` now accepts an empty metadata list and returns an empty artifact result instead of
118-
failing during parameter binding.
119-
- Fix configuration and validation errors so empty `project.json` files and unsupported `Manifest` keys fail fast with
120-
clear messages.
121-
- Fix semantic-release PSGallery publishing on fresh CI runners by bootstrapping the PSResourceGet repository store
122-
before
123-
`Publish-PSResource` runs.
124-
125116
### Changed
126-
127117
- Change the project to a Nova command model, replacing the previous mixed MT/Nova workflow.
128118
- All public commands are now Nova commands, and the `nova` CLI / `Invoke-NovaCli` command surface is the primary
129119
entry point for all operations.
@@ -143,35 +133,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
143133
- Change `Publish-NovaModule -Local` and `% nova publish --local` so a successful local publish also reloads the
144134
published module from the local install path into the active PowerShell session.
145135

146-
### Documentation
147-
148-
- Split documentation into contributor-focused repository docs and task-oriented GitHub Pages user guides.
149-
- Expand the public site into a fuller developer end-user manual with rewritten getting started, core workflows, working
150-
with modules, troubleshooting, concepts, release notes, and license pages plus new reference-style pages for
151-
commands, `project.json`, packaging/delivery, and versioning/update behavior.
152-
- The guides now let readers switch between PowerShell and command-line examples, including the local-publish-plus-
153-
`pwsh` handoff for `Get-ExampleGreeting` and fresh-process `pwsh`
154-
- Clean the generated PowerShell cmdlet help so `Get-Help` pages no longer mix in `nova` launcher syntax or GNU-style
155-
CLI options.
156-
- Refresh public `Get-Help` content and examples for the Nova commands, including CLI usage and preview/confirmation
157-
scenarios.
158-
- Simplify `Invoke-NovaCli` help so it matches the launcher-vs-cmdlet split cleanly and PlatyPS can generate command
159-
help without failing during local builds.
160-
- Update the `nova` CLI documentation and help text to use POSIX/GNU-style long and short options while keeping
161-
PowerShell cmdlet examples in their native PowerShell form.
162-
163136
### Removed
164-
165137
- **BREAKING CHANGE**: Remove the legacy `MT` commands and MT-branded command documentation in favor of the Nova command
166138
model.
167139
- All public commands are now Nova commands, and the `nova` CLI / `Invoke-NovaCli` command surface is the primary
168140
entry point for all
169141
operations.
170142

171-
## [1.9.0] - 2026-04-10
143+
### Fixed
172144

173-
### Added
145+
- Fix unsupported `nova` help invocations so they now return Nova's structured CLI validation error instead of a
146+
PowerShell parameter-binding failure.
147+
- Keep manifest/package helper edge cases aligned with their intended behavior.
148+
- Manifest settings resolution now accepts ordered dictionary metadata shapes in addition to plain hashtables.
149+
- `New-NovaPackageArtifacts` now accepts an empty metadata list and returns an empty artifact result instead of
150+
failing during parameter binding.
151+
- Fix configuration and validation errors so empty `project.json` files and unsupported `Manifest` keys fail fast with
152+
clear messages.
153+
- Fix semantic-release PSGallery publishing on fresh CI runners by bootstrapping the PSResourceGet repository store
154+
before
155+
`Publish-PSResource` runs.
174156

157+
## [1.9.0] - 2026-04-10
158+
### Added
175159
- Nova command model and CLI entrypoint:
176160
- New root command: `nova`
177161
- New public commands: `Get-NovaProjectInfo`, `Invoke-NovaBuild`, `Invoke-NovaCli`, `Invoke-NovaRelease`,
@@ -182,21 +166,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
182166
- New GitHub workflow: PowerShell code quality (`.github/workflows/powershell.yml`).
183167

184168
### Changed
185-
186169
- Updated test workflow triggers in `.github/workflows/Tests.yml` to improve branch/PR coverage.
187170
- Updated README module naming references to `NovaModuleTools`.
188171
- Source alignment updates to match installed `NovaModuleTools` v`1.8.0` behavior for compatibility.
189172

190-
### Fixed
191-
192-
- Resource lookup compatibility in `Get-ResourceFilePath` for source/dist execution contexts.
173+
### Deprecated
193174

194-
### Documentation
175+
- `MT` commands and MT-branded command documentation in favor of the Nova command model.
195176

196-
- Added documentation and release notes context for the Nova command model and workflow/security updates.
177+
### Fixed
178+
- Resource lookup compatibility in `Get-ResourceFilePath` for source/dist execution contexts.
197179

198180
## [1.8.0] - 2026-04-08
199-
200181
### Added
201182
- Project settings:
202183
- `BuildRecursiveFolders` (default `true`): recursive discovery for `src/classes`, `src/private` and `tests`.
@@ -210,15 +191,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
210191
### Changed
211192
- Build determinism: files are processed in a deterministic order by relative path (case-insensitive), and load order is always `classes → public → private`.
212193

213-
### Documentation
214-
- README: document enterprise defaults, deterministic load order, and duplicate-function validation.
215-
216194
## [1.3.0] - 2025-09-23
217-
218195
- Added support for `ps1xml1` format data. Place it in resources folder with `Name.format.ps1xml` to be automatically added as format file and imported in module manifest
219196

220197
## [1.2.0] - 2025-09-17
221-
222198
### Added
223199
- Added support for classes directory inside src
224200
- Initialize-NovaModule generates classes directory during fresh project
@@ -228,74 +204,56 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
228204
- Version upgrade using update-mtmoduleversion now support build tags. Improvements to semver versioning.
229205

230206
## [1.1.3] - 2025-09-14
231-
232207
### Added
233-
234208
- Now supports preview tag in Update-NovaModuleVersion
235209
- Now supports semver naming in both project.json and modulemanifest
236210
- Module build supports `preview` or `prerelease` tag
237211
- Preview version looks like `1.2.3-preview`
238212

239213
## [1.1.0] - 2025-08-28
240-
241214
## Added
242-
243215
- Now Module manifest includes `AliasesToExport`. This helps loading aliases without explicitly importing modules to
244216
session.
245217
- thanks to @djs-zmtc for suggesting the feature
246218

247219
## [1.0.0] - 2025-03-11
248-
249220
### Added
250-
251221
- New optional project setting `CopyResourcesToModuleRoot`. Setting to true places resource files in the root directory
252222
of module. Default is `false` to provide backward compatibility. Thanks to @[BrooksV](https://github.com/BrooksV)
253223

254224
### Fixed
255-
256225
- **BREAKING CHANGE**: Typo corrected: ProjecUri to ProjectUri. Existing projects require manual update.
257226

258227
## [0.0.9] - 2024-07-17
259-
260228
### Fixed
261-
262229
- Fixed #7, Invoke build should not through for empty tags
263230

264231
## [0.0.7] - 2024-07-17
265-
266232
### Added
267-
268233
- Now "Manifest" section of project JSON supports all Manifest parameters, use exact name of parameter (from New-ModuleManifest) as key in JSON
269234

270235
## Fixed
271-
272236
- Fixed the example project README so it no longer suggests that `example/` includes a `run.ps1` helper script; it now
273237
points users to building `NovaModuleTools` from the repository root or using the Gallery workflow.
274238
- Corrected typo in ProjectUri from `ProjecUri` to correct spelling.
275239

276240
## [0.0.6] - 2024-07-08
277241

278242
### Added
279-
280243
- `Test-NovaBuild` now supports including and excluding tags
281244

282245
### Fixed
283-
284246
- Code cleanup
285247

286248
## [0.0.5] - 2024-07-05
287-
288249
### Added
289-
290250
- More verbose info during MTModule creation
291251

292252
### Fixed
293-
294253
- Issue #2 : Git initialization implemented
295254
- Issue #1 : Doesn't create empty `tests` folder when user chooses `no` to tests
296255

297256
## [0.0.4] - 2024-06-25
298-
299257
### Added
300258
- First release to `psgallery`
301259
- All basic functionality of Module is ready
@@ -339,4 +297,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
339297
[0.0.6]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.5...Version_0.0.6
340298
[0.0.5]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.4...Version_0.0.5
341299
[0.0.4]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.3...Version_0.0.4
342-

0 commit comments

Comments
 (0)