Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

### Fixed

- Website layout and copy now keep expanding with the browser width instead of stopping at fixed max-width caps on wide windows; the shared site stylesheet no longer limits the outer page shell, guide intros, leads, section headings, or guide body text to narrow fixed widths.
- The command cheat sheet now keeps the "Set up a project" section balanced by summarizing scaffold extras instead of repeating the full internal Agentic guidance list.
- The getting-started guide now splits the Agentic quickstart explanation into shorter paragraphs so the scaffold flow stays readable on the site.
- The core workflows guide now splits the scaffold and Agentic starter explanation into shorter paragraphs so the page stays readable on the site.
- The command cheat sheet now stacks the three "Set up a project" cards vertically so the section reads top-to-bottom without a missing grid slot.
- The Agentic Copilot starter shipped by `nova init` no longer tells generated projects to use a `run.ps1` quality wrapper that the template does not include.
- The scaffold now points generated documentation and agent guidance to the repository quality loop wording plus the existing analyzer and `Test-NovaBuild` entrypoints instead.
- `nova init --example` now ships the packaged example with source-mirrored tests and `Pester.CodeCoverage.Enabled = true` by default.
- The example scaffold now runs `Test-NovaBuild` against `src/**/*.ps1` without requiring a prior build, and the bundled docs describe that source-first coverage flow.

### Security

## [3.0.0] - 2026-05-17
Expand Down Expand Up @@ -417,4 +427,3 @@ This release was yanked because it removed the implicit `Pester` dependency, bef
[0.0.6]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.5...Version_0.0.6
[0.0.5]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.4...Version_0.0.5
[0.0.4]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.3...Version_0.0.4

4 changes: 3 additions & 1 deletion RELEASE_NOTE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ This file summarizes the release notes for NovaModuleTools. **UNRELEASED** chang

### Fixed

- The Agentic Copilot starter shipped by `nova init` no longer tells generated projects to use a `run.ps1` quality wrapper that the template does not include.
- `nova init --example` now ships the packaged example with source-mirrored tests and code coverage enabled by default, so `Test-NovaBuild` works before a build and measures `src/**/*.ps1`.

### Security

## [3.0.0] - 2026-05-17
Expand Down Expand Up @@ -188,4 +191,3 @@ This release was yanked because it removed the implicit `Pester` dependency befo
## [0.0.4] - 2024-06-25
### Added
- First PowerShell Gallery release of NovaModuleTools with the initial module workflow support.

6 changes: 3 additions & 3 deletions docs/NovaModuleTools/en-US/Initialize-NovaModule.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ PS> Initialize-NovaModule [-Path <string>] [-Example] [-WhatIf] [-Confirm] [<Com

`Initialize-NovaModule` creates a new project folder, the standard `src/` layout, and a starter `project.json` file.

The starter `project.json` includes Nova's standard Pester defaults, including an opt-in `CodeCoverage` block with `Enabled=false`, common `src/` coverage paths, JaCoCo output in `artifacts/coverage.xml`, and a `90` percent target that can be enabled later.
The standard scaffold `project.json` includes Nova's standard Pester defaults, including an opt-in `CodeCoverage` block with `Enabled=false`, common `src/` coverage paths, JaCoCo output in `artifacts/coverage.xml`, and a `90` percent target that can be enabled later.

The command collects project details interactively, including the module name, description, version, author, minimum PowerShell version, Git initialization, and an optional Agentic Copilot starter package. Before the first interactive question, Nova checks whether a newer `NovaModuleTools` release is available and warns without blocking the scaffold flow. When Git initialization is enabled, Nova also creates or updates a default `.gitignore` in the generated project root so common local and CI artifact paths such as `artifacts/`, `dist/`, `run.ps1`, and `reload.ps1` are ignored from the start. Existing `.gitignore` files are preserved and only receive the missing Nova-managed entries. When you enable the Agentic package, Nova also asks for a project short name used in generated guidance placeholders such as `Invoke-<ShortName>*`; for NovaModuleTools the short name is `Nova`, but it could also have been
`NMT`. The Agentic package follows Nova's maintained agentic guidance through a filtered starter mirror, including Nova build/test/package expectations, `project.json`
Expand All @@ -40,7 +40,7 @@ Use this command when you want to start a new module in the NovaModuleTools stru

Use `-Path` when you want to create the project under a specific base directory. Positional path syntax is no longer supported.

Use `-Example` when you want the scaffold to start from the packaged example project instead of the minimal default layout. The example flow keeps the example source, resource, and test files, skips the Pester enable/disable question, and applies the interactive metadata values to the copied `project.json`, including the same disabled-by-default `CodeCoverage` block that the standard scaffold uses. The standard and example flows share the same upfront Nova update warning, inline validation and retry behavior for interactive answers, and optional Agentic Copilot setup prompt after the Git question. When Git is enabled in either flow, Nova also ensures the generated project root has the default `.gitignore` entries for local and CI artifacts without overwriting any existing `.gitignore` content. When you answer
Use `-Example` when you want the scaffold to start from the packaged example project instead of the minimal default layout. The example flow keeps the example source, resource, and source-mirrored test files, skips the Pester enable/disable question, and applies the interactive metadata values to the copied `project.json`, including an enabled-by-default `CodeCoverage` block that targets `src/**/*.ps1`. The packaged example can run `Test-NovaBuild` before `Invoke-NovaBuild`, and the same test flow writes JaCoCo coverage to `artifacts/coverage.xml`. The standard and example flows share the same upfront Nova update warning, inline validation and retry behavior for interactive answers, and optional Agentic Copilot setup prompt after the Git question. When Git is enabled in either flow, Nova also ensures the generated project root has the default `.gitignore` entries for local and CI artifacts without overwriting any existing `.gitignore` content. When you answer
`Yes`, Nova asks for the short project name, adds the same starter package to either scaffold style, and merges the example README instead of replacing it with the generic starter README outright.

This command supports `-WhatIf` and `-Confirm` through PowerShell `SupportsShouldProcess`. Use `-WhatIf` to preview the scaffold target after the interactive answers have been collected, without creating folders, writing `project.json`, or initializing Git.
Expand Down Expand Up @@ -142,7 +142,7 @@ This cmdlet does not emit an output object.

## NOTES

Generated projects start with NovaModuleTools defaults for recursive discovery, source markers, duplicate-function validation, an opt-in Pester `CodeCoverage` block (`Enabled=false`, shared `src/` paths, JaCoCo output in `artifacts/coverage.xml`, and a `90` percent target), and—when Git is enabled—a default `.gitignore` for common local and CI artifact paths. The packaged example scaffold keeps its bundled example source and tests, while still updating prompt-driven metadata such as project name, description, version, author, and PowerShell host version. The optional Agentic Copilot starter package adds repository-local Copilot workflow files under the project root and `.github/` that tell agents to keep build/test/package workflows on Nova, treat `project.json` `Manifest.PowerShellHostVersion` as the PowerShell compatibility target, run ScriptAnalyzer before build/test through the repo-standard `Invoke-ScriptAnalyzerCI.ps1` /
Generated projects start with NovaModuleTools defaults for recursive discovery, source markers, duplicate-function validation, and—when Git is enabled—a default `.gitignore` for common local and CI artifact paths. The standard scaffold keeps Pester `CodeCoverage` opt-in (`Enabled=false`, shared `src/` paths, JaCoCo output in `artifacts/coverage.xml`, and a `90` percent target). The packaged example scaffold keeps its bundled example source and source-mirrored tests, while also enabling that same `CodeCoverage` block by default so `Test-NovaBuild` measures `src/**/*.ps1` without requiring a prior build. Both scaffold styles still update prompt-driven metadata such as project name, description, version, author, and PowerShell host version. The optional Agentic Copilot starter package adds repository-local Copilot workflow files under the project root and `.github/` that tell agents to keep build/test/package workflows on Nova, treat `project.json` `Manifest.PowerShellHostVersion` as the PowerShell compatibility target, run ScriptAnalyzer before build/test through the repo-standard `Invoke-ScriptAnalyzerCI.ps1` /
`run.ps1` workflow, fix any ScriptAnalyzer findings before handoff, run project tests through `Test-NovaBuild` instead of direct `Invoke-Pester`, leave `.psm1` / `.psd1` files to generated
`dist` output, generate and validate command help with the Microsoft.PowerShell.PlatyPS cmdlets instead of hand-written Markdown structure, require a matching help file for every new public entry point in the same change, mirror new tests to source files, and add a text-file-formatting guardrail helper plus a Pester guardrail test when project tests are enabled.

Expand Down
18 changes: 11 additions & 7 deletions docs/assets/site.css
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
--outline: rgba(255, 255, 255, 0.12);
--shadow: 0 20px 60px rgba(0, 0, 0, 0.28);
--radius: 22px;
--max-width: 1600px;
--max-width: none;
--anchor-offset: 2.90rem;
}

Expand Down Expand Up @@ -254,7 +254,7 @@ pre code {

.guide-hero {
margin-bottom: 3rem;
max-width: 880px;
max-width: none;
}


Expand Down Expand Up @@ -331,7 +331,7 @@ pre code {
.guide-content .content-section > p,
.guide-content .content-section > ul,
.guide-content .content-section > ol {
max-width: 72ch;
max-width: none;
}

.guide-grid {
Expand Down Expand Up @@ -380,7 +380,7 @@ h3 {

h1 {
font-size: clamp(2.6rem, 5vw, 4.6rem);
max-width: 12ch;
max-width: none;
}

h2 {
Expand All @@ -398,7 +398,7 @@ p {

.lead {
font-size: 1.1rem;
max-width: 68ch;
max-width: none;
}

.hero__actions {
Expand Down Expand Up @@ -517,11 +517,11 @@ p {
}

.narrow {
max-width: 760px;
max-width: none;
}

.section-heading {
max-width: 760px;
max-width: none;
margin-bottom: 2.5rem;
}

Expand Down Expand Up @@ -772,6 +772,10 @@ td {
gap: 1.5rem;
}

.command-card-grid--stacked {
grid-template-columns: 1fr;
}

.command-card h3 {
margin-bottom: 0.75rem;
}
Expand Down
44 changes: 12 additions & 32 deletions docs/commands.html
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ <h1>Keep one workflow surface in view</h1>
<h2>On this page</h2>
<ul class="toc-list">
<li><a href="#choose-surface">Choose your surface</a></li>
<li><a href="#setup-and-project">Setup and project</a></li>
<li><a href="#setup-and-project">Set up a project</a></li>
<li><a href="#build-and-validate">Build and validate</a></li>
<li><a href="#package-and-ship">Package and ship</a></li>
<li><a href="#version-and-update">Version and update</a></li>
Expand Down Expand Up @@ -146,8 +146,8 @@ <h2>Choose your surface</h2>
</section>

<section class="content-section" id="setup-and-project">
<h2>Setup and project</h2>
<div class="command-card-grid">
<h2>Set up a project</h2>
<div class="command-card-grid command-card-grid--stacked">
<article class="command-card">
<h3>Install the <code>nova</code> launcher</h3>
<p>Use this one-time PowerShell setup when you want <code>nova</code> available directly from
Expand All @@ -174,37 +174,17 @@ <h3>Start a new project</h3>
<div class="surface-note" data-command-visibility="powershell">
<p><strong>Cmdlet:</strong> <code>Initialize-NovaModule</code></p>
</div>
<p>Create the minimal scaffold or the example scaffold for a new module project. Before the
first interactive question, Nova checks whether a newer NovaModuleTools release is
available and warns without blocking the scaffold flow. When Git is enabled, Nova also
creates or updates a default <code>.gitignore</code> in the generated project root so
common local and CI artifact paths are ignored without overwriting existing rules. Both
interactive flows can also add the optional Agentic Copilot starter package,
which follows Nova's maintained agentic guidance through a filtered starter mirror, including Nova build/test
expectations, <code>project.json</code> <code>Manifest.PowerShellHostVersion</code>
compatibility guidance, strict ScriptAnalyzer guidance without excluded rules, generated
<code>dist</code> module files, command-help ownership, source-mirrored test guidance,
instructions to fix ScriptAnalyzer findings reported by <code>run.ps1</code> before
handoff, explicit public/private PowerShell file ownership guidance, a best-effort
source/helper-script maintainability guidance plus separate test-design guidance delivered
through best-effort source/helper-script maintainability guidance plus separate test-design guidance, explicit PSScriptAnalyzer
workflow guidance for <code>./scripts/build/Invoke-ScriptAnalyzerCI.ps1</code>,
<code>./run.ps1</code>, focused <code>Invoke-ScriptAnalyzer</code> usage, and
Test-NovaBuild-only project test guidance that forbids direct
<code>Invoke-Pester</code>, explicit
valid-PlatyPS help guidance for <code>docs/&lt;ProjectName&gt;/en-US/*.md</code> using
<code>New-MarkdownCommandHelp</code>, <code>Update-MarkdownCommandHelp</code>, and
<code>Test-MarkdownCommandHelp</code>, with a matching help file required for every new
public entry point, and a strict file-ending rule for changed or
generated text files.
</p>
<p>New projects also start with Nova's default <code>Pester.CodeCoverage</code> block in
<code>project.json</code>, but keep it disabled until you choose to enable coverage.</p>
<p>If you enable the Agentic package, Nova also asks for a short project name used in generated
guidance placeholders such as <code>Invoke-&lt;ShortName&gt;*</code>. For NovaModuleTools the
short name is <code>Nova</code>, but it could also have been <code>NMT</code>.</p>
<p>Create the minimal scaffold or the example scaffold for a new module project.</p>
<ul class="plain-list">
<li><strong>Use when:</strong> you are creating a fresh NovaModuleTools project</li>
<li><strong>Includes:</strong> a pre-question Nova release warning, best-effort
<code>.gitignore</code> creation or update when Git is enabled, and Nova's default
<code>Pester.CodeCoverage</code> block in <code>project.json</code>; the minimal
scaffold keeps coverage opt-in, while the packaged example scaffold starts with coverage
enabled against <code>src/**/*.ps1</code></li>
<li><strong>Optional:</strong> add the <strong>Agentic Copilot</strong> starter package for Nova-maintained
build, test, analyzer, help, and guidance files; if you enable it, Nova also asks for a
short project name for placeholders such as <code>Invoke-&lt;ShortName&gt;*</code></li>
<li data-command-visibility="command-line" hidden><strong>Remember:</strong> pass the target path
explicitly with <code>--path</code> or <code>-p</code></li>
<li data-command-visibility="powershell"><strong>Common parameters:</strong>
Expand Down
Loading
Loading