All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- CI workflows migrated to PowerShellOrg reusable CI and release workflows (#457)
AddContentpath separators normalised to forward slash on PS5.1 —Get-ChildItem -Namereturns backslash-separated paths on Windows PS5.1, causing cross-platform inconsistencies in source/destination attributesResolve-ModuleVersionStringreturned[System.Version]on PS5.1 because[System.Management.Automation.SemanticVersion]is PS6+ only; adds a C# shim that defines the type at module load time (#463, closes #460)New-PlasterManifestemittedxmlnsinline on PS5.1 — .NET XML serializer ignoresXmlWriterSettings.NewLineOnAttributesfor namespace declarations; output is post-processed to normalise formatting (#464, closes #461)Get-Culture -Nameis PS6+ only; replaced withNew-Object System.Globalization.CultureInfoin tests (#462, closes #459)
Import-Module Plasterfails on PowerShell 7.4 with "not a valid PowerShell module manifest file" error — the module calledTest-ModuleManifeston its own manifest during initialization, causing a re-entrant validation loop that PS 7.4's stricter guards reject. Replaced with$MyInvocation.MyCommand.Module.Version(#454)
ConvertTo-JsonManifestexported as a public function, enabling XML-to-JSON manifest conversion as documented (#453)- Comment-based help for
ConvertTo-JsonManifestwith full parameter docs and examples; PlatyPS Markdown stub populated - Pester test suite for
ConvertTo-JsonManifestcovering output format, metadata mapping, parameters, and content action types - PX2PS true color logo replaces ASCII art in
Invoke-Plaster(#452)
ConvertTo-JsonManifestthrewParameterBindingExceptionon every call —$jsonObjectwas bound via both pipeline and-InputObjectin the splatted hashtableConvertTo-JsonManifest-Compressswitch had inverted logic; output was never compacted when the switch was specified- README and example docs referenced non-existent
-InputObjectand-OutputPathparameters onConvertTo-JsonManifest
- Build dependency psake bumped from 4.9.1 to 5.0.0 (#451)
- CI/publish workflows simplified;
build.ps1 -Bootstrapis now the single source of truth for dependencies (#450)
- Null-coalescing operators replaced with PS5.1-compatible syntax in Write-PlasterLog to fix PowerShell 5.1 compatibility (#442)
- Cross-platform compatibility with full support for Windows, Linux, and macOS
- PowerShell 7.x optimization with improved performance and reliability
- Enhanced error handling with comprehensive error handling and detailed logging
- Modern PowerShell parameter validation attributes and type safety
- Built-in logging system with configurable levels
- Modern InvokeBuild-based build system replacing legacy psake
- Pester 5.x support with updated test framework syntax
- Cross-platform CI/CD with GitHub Actions workflow supporting all platforms
- Integrated code coverage reporting with configurable thresholds
- Enhanced PSScriptAnalyzer integration with modern rules
- Parameter element now supports a condition attribute for conditional prompting
- Better error messages with actionable guidance
- Improved debug output and verbose logging
- Better IntelliSense support with improved parameter completion and help text
- Automatic path separator handling across platforms
- Consistent UTF-8 encoding with BOM handling across platforms
- Platform-specific defaults based on operating system
- Proper handling of different line ending styles
- Comprehensive test suite covering all platforms with integration and performance tests
- Automated testing on Windows, Linux, and macOS
- Minimum PowerShell version updated from 3.0 to 5.1
- Default encoding changed from 'Default' to 'UTF-8-NoBOM' for better cross-platform compatibility
- Test framework updated to Pester 5.x (breaking change for test authors)
- Module structure reorganized for better maintainability
- Error handling centralized with improved logging
- Platform-specific functionality abstracted for better cross-platform support
- Optimized module loading and reduced startup time
- Improved memory usage and garbage collection
- Enhanced template processing performance on large projects
- Improved file operations for different platforms
- Better parameter completion and help text
- XML schema validation issues on .NET Core (#107)
- PowerShell 7.x constrained runspace compatibility issues
- Absolute vs relative path handling across platforms
- Parameter default value storage on non-Windows platforms
- Edge cases in parameter substitution
- Condition evaluation reliability
- Template file encoding issues
- Recursive directory creation on Unix systems
- Module import issues on PowerShell Core
- Module dependency loading order
- Localized resource loading reliability
- None
- Updated PSScriptAnalyzerSettings.psd1 template file to sync with latest in vscode-powershell examples
- Text parameter with default value where condition evaluates to false now returns default value
- Write destination path with Write-Host so it doesn't add extra output when -PassThru specified #326
- Added $IsMacOS variable to constrained runspace #291
- Added missing .cat file from 1.1.0 release #292
- Constrained runspace cmdlet: Out-String #235
- Constrained runspace variables: PSVersionTable and on >= PS v6 IsLinux, IsOSX and IsWindows #239
- Parameter element now supports a condition attribute so that prompting for parameters can be conditional based on environmental factors (such as OS) or answers to previous parameter prompts. This allows template authors to build a "dynamic" set of prompts
- Constrained runspace cmdlet: Compare-Object #286
- Simplified New Module Script template user choices (removed prompt for adding Pester test; the test is now always added)
- Fixed prompt errors when prompt text is null or empty #236
- Fixed New Module Script template's Test task which fails to run on x64 Visual Studio Code
- Fixed Test-PlasterManifest on non-Windows running .NET Core 2.0 which failed with path using \ instead of /. Thanks to @elmundio87 via PR #282
- Fixed issue with the use of
GetModule -FullyQualifiedNameon PowerShell v3
- First official release shipped to the PowerShell Gallery
- Build script with support for building help from markdown files, building updatable help files and generating file catalog
- New directive
<templateFile>that implicitly expands the specified file(s), allowing the template author to set the target file encoding. This new directive supports a wildcard source specifier like the<file>directive
<file>directive no longer supports template expansion- Removed
templateandencodingattributes from<file>directive - Restructured the module source to follow best practice of separating infrastructure from module files