@@ -5,236 +5,157 @@ All notable changes to this project will be documented in this file.
55The format is based on [ Keep a Changelog] ( http://keepachangelog.com/ )
66and this project adheres to [ Semantic Versioning] ( http://semver.org/ ) .
77
8- ## [ 2.0.0] - 2025-06-18
8+ ## [ 2.0.0] 2025-06-18
99
10- ### Major Release - Plaster 2.0
10+ ### Added
1111
12- This is a major release that modernizes Plaster for PowerShell 7.x while
13- maintaining full backward compatibility with existing templates and workflows.
12+ - Cross-platform compatibility with full support for Windows, Linux, and macOS
13+ - PowerShell 7.x optimization with improved performance and reliability
14+ - Enhanced error handling with comprehensive error handling and detailed logging
15+ - Modern PowerShell parameter validation attributes and type safety
16+ - Built-in logging system with configurable levels
17+ - Modern InvokeBuild-based build system replacing legacy psake
18+ - Pester 5.x support with updated test framework syntax
19+ - Cross-platform CI/CD with GitHub Actions workflow supporting all platforms
20+ - Integrated code coverage reporting with configurable thresholds
21+ - Enhanced PSScriptAnalyzer integration with modern rules
22+ - Parameter element now supports a condition attribute for conditional prompting
23+ - Better error messages with actionable guidance
24+ - Improved debug output and verbose logging
25+ - Better IntelliSense support with improved parameter completion and help text
26+ - Automatic path separator handling across platforms
27+ - Consistent UTF-8 encoding with BOM handling across platforms
28+ - Platform-specific defaults based on operating system
29+ - Proper handling of different line ending styles
30+ - Comprehensive test suite covering all platforms with integration and
31+ performance tests
32+ - Automated testing on Windows, Linux, and macOS
1433
15- ### BREAKING CHANGES
34+ ### Changed
1635
17- - ** Minimum PowerShell Version** : Updated from 3.0 to 5.1
18- - ** Test Framework** : Updated to Pester 5.x (breaking change for test authors)
19- - ** Default Encoding** : Changed from 'Default' to 'UTF8-NoBOM' for better
36+ - Minimum PowerShell version updated from 3.0 to 5.1
37+ - Default encoding changed from 'Default' to 'UTF-8-NoBOM' for better
2038 cross-platform compatibility
39+ - Test framework updated to Pester 5.x (breaking change for test authors)
40+ - Module structure reorganized for better maintainability
41+ - Error handling centralized with improved logging
42+ - Platform-specific functionality abstracted for better cross-platform support
43+ - Optimized module loading and reduced startup time
44+ - Improved memory usage and garbage collection
45+ - Enhanced template processing performance on large projects
46+ - Improved file operations for different platforms
47+ - Better parameter completion and help text
2148
22- ### NEW FEATURES
23-
24- #### PowerShell 7.x Full Support
25-
26- - ** Cross-Platform Compatibility** : Full support for Windows, Linux, and macOS
27- - ** PowerShell Core Optimization** : Improved performance and reliability on
28- PowerShell 7.x
29- - ** Platform Detection** : Enhanced platform-specific functionality and path
30- handling
31-
32- #### Modern Development Practices
33-
34- - ** Enhanced Error Handling** : Comprehensive error handling with detailed
35- logging
36- - ** Parameter Validation** : Modern PowerShell parameter validation attributes
37- - ** Type Safety** : Improved type safety using PowerShell classes and ` using `
38- statements
39- - ** Logging System** : Built-in logging system with configurable levels
40-
41- #### Build and Development
42-
43- - ** Modern Build System** : InvokeBuild-based build system replacing legacy psake
44- - ** Pester 5.x Support** : Updated test framework with modern Pester 5.x syntax
45- - ** Cross-Platform CI/CD** : GitHub Actions workflow supporting all platforms
46- - ** Code Coverage** : Integrated code coverage reporting with configurable
47- thresholds
48- - ** Static Analysis** : Enhanced PSScriptAnalyzer integration with modern rules
49-
50- ### IMPROVEMENTS
51-
52- #### Performance
53-
54- - ** Faster Module Loading** : Optimized module loading and reduced startup time
55- - ** Memory Usage** : Improved memory usage and garbage collection
56- - ** Template Processing** : Enhanced template processing performance on large
57- projects
58- - ** Cross-Platform I/O** : Optimized file operations for different platforms
59-
60- #### Developer Experience
61-
62- - ** Better Error Messages** : More descriptive error messages with actionable
63- guidance
64- - ** Enhanced Debugging** : Improved debug output and verbose logging
65- - ** IntelliSense Support** : Better parameter completion and help text
66- - ** Modern PowerShell Features** : Leverages PowerShell 5.1+ and 7.x features
67-
68- #### Cross-Platform Enhancements
69-
70- - ** Path Normalization** : Automatic path separator handling across platforms
71- - ** Encoding Handling** : Consistent UTF-8 encoding with BOM handling
72- - ** Platform-Specific Defaults** : Smart defaults based on operating system
73- - ** Line Ending Normalization** : Proper handling of different line ending styles
74-
75- ### BUG FIXES
76-
77- #### Core Issues
49+ ### Fixed
7850
79- - ** XML Schema Validation ** : Fixed .NET Core XML schema validation issues
51+ - XML schema validation issues on .NET Core
8052 ([ #107 ] ( https://github.com/PowerShellOrg/Plaster/issues/107 ) )
81- - ** Constrained Runspace** : Resolved PowerShell 7.x constrained runspace
82- compatibility
83- - ** Path Resolution** : Fixed absolute vs relative path handling across platforms
84- - ** Parameter Store** : Corrected parameter default value storage on non-Windows
85- platforms
86-
87- #### Template Processing
88-
89- - ** Variable Substitution** : Fixed edge cases in parameter substitution
90- - ** Conditional Logic** : Improved reliability of condition evaluation
91- - ** File Encoding** : Resolved encoding issues with template files
92- - ** Directory Creation** : Fixed recursive directory creation on Unix systems
93-
94- #### Module Loading
95-
96- - ** Import Errors** : Resolved module import issues on PowerShell Core
97- - ** Dependency Resolution** : Fixed module dependency loading order
98- - ** Resource Loading** : Improved localized resource loading reliability
99-
100- ### MIGRATION GUIDE
101-
102- #### For Template Authors
103-
104- 1 . ** No Changes Required** : Existing XML templates work without modification
105- 2 . ** Encoding** : Consider updating templates to use UTF-8 encoding
106- 3 . ** Testing** : Update any custom tests to use Pester 5.x syntax
107-
108- #### For Template Users
109-
110- 1 . ** PowerShell Version** : Ensure PowerShell 5.1 or higher is installed
111- 2 . ** Module Update** : Use ` Update-Module Plaster ` to get version 2.0
112- 3 . ** Workflows** : No changes required to existing Invoke-Plaster usage
113-
114- #### For Contributors
115-
116- 1 . ** Build System** : Use ` ./build.ps1 ` instead of psake commands
117- 2 . ** Tests** : Update to Pester 5.x syntax and configuration
118- 3 . ** Development** : Follow new coding standards and use modern PowerShell
119- features
120-
121- ### INTERNAL CHANGES
122-
123- #### Code Quality
124-
125- - ** PSScriptAnalyzer** : Updated to latest rules and best practices
126- - ** Code Coverage** : Achieved >80% code coverage across all modules
127- - ** Documentation** : Comprehensive inline documentation and examples
128- - ** Type Safety** : Added parameter validation and type constraints
53+ - PowerShell 7.x constrained runspace compatibility issues
54+ - Absolute vs relative path handling across platforms
55+ - Parameter default value storage on non-Windows platforms
56+ - Edge cases in parameter substitution
57+ - Condition evaluation reliability
58+ - Template file encoding issues
59+ - Recursive directory creation on Unix systems
60+ - Module import issues on PowerShell Core
61+ - Module dependency loading order
62+ - Localized resource loading reliability
63+
64+ ## [ 1.1.4] Unreleased
12965
130- #### Architecture
66+ ### Added
13167
132- - ** Module Structure** : Reorganized for better maintainability
133- - ** Error Handling** : Centralized error handling and logging
134- - ** Resource Management** : Improved resource cleanup and disposal
135- - ** Platform Abstraction** : Abstracted platform-specific functionality
68+ - None
13669
137- #### Testing
70+ ### Changed
13871
139- - ** Test Coverage ** : Comprehensive test suite covering all platforms
140- - ** Integration Tests ** : Added end-to-end integration testing
141- - ** Performance Tests ** : Benchmarking for performance regression detection
142- - ** Cross-Platform Tests ** : Automated testing on Windows, Linux, and macOS
72+ - Updated PSScriptAnalyzerSettings.psd1 template file to sync with latest in
73+ vscode-powershell examples
74+ - Text parameter with default value where condition evaluates to false now
75+ returns default value
14376
144- ### ACKNOWLEDGMENTS
77+ ### Fixed
14578
146- Special thanks to the PowerShell community for their patience during the
147- transition and to all contributors who helped modernize Plaster for the
148- PowerShell 7.x era.
79+ - Write destination path with Write-Host so it doesn't add extra output when
80+ -PassThru specified [ #326 ] ( https://github.com/PowerShell/Plaster/issues/326 )
14981
150- ### COMPATIBILITY MATRIX
82+ ## [ 1.1.1 ] 2017-10-26
15183
152- | PowerShell Version | Windows | Linux | macOS | Status |
153- | --------------------| ---------| -------| -------| ---------------------|
154- | 5.1 (Desktop) | ✅ | ❌ | ❌ | Fully Supported |
155- | 7.0+ (Core) | ✅ | ✅ | ✅ | Fully Supported |
156- | 3.0-5.0 | ❌ | ❌ | ❌ | No Longer Supported |
84+ ### Fixed
15785
158- ---
86+ - Added $IsMacOS variable to constrained runspace
87+ [ #291 ] ( https://github.com/PowerShell/Plaster/issues/291 )
88+ - Added missing .cat file from 1.1.0 release
89+ [ #292 ] ( https://github.com/PowerShell/Plaster/issues/292 )
15990
160- ## 1.1.4 - (Unreleased - Legacy)
91+ ## [ 1.1.0 ] 2017-10-25
16192
162- ### Fixed
93+ ### Added
16394
164- - Write destination path with Write-Host so it doesn't add extra output when
165- -PassThru specified [ #326 ] ( https://github.com/PowerShell/Plaster/issues/326 ) .
95+ - Constrained runspace cmdlet: Out-String
96+ [ #235 ] ( https://github.com/PowerShell/Plaster/issues/236 )
97+ - Constrained runspace variables: PSVersionTable and on >= PS v6 IsLinux,
98+ IsOSX and IsWindows [ #239 ] ( https://github.com/PowerShell/Plaster/issues/239 )
99+ - Parameter element now supports a condition attribute so that prompting for
100+ parameters can be conditional based on environmental factors (such as OS) or
101+ answers to previous parameter prompts. This allows template authors to build a
102+ "dynamic" set of prompts
103+ - Constrained runspace cmdlet: Compare-Object
104+ [ #286 ] ( https://github.com/PowerShell/Plaster/issues/287 )
166105
167106### Changed
168107
169- - Updated PSScriptAnalyzerSettings.psd1 template file to sync w/latest in
170- vscode-powershell examples.
171- - Text parameter with default value where condition evaluates to false returns
172- default value.
173-
174- ## 1.1.1 - 2017-10-26
108+ - Simplified New Module Script template user choices (removed prompt for adding
109+ Pester test; the test is now always added)
175110
176111### Fixed
177112
178- - Added $IsMacOS variable to constrained runspace
179- [ #291 ] ( https://github.com/PowerShell/Plaster/issues/291 ) .
180- - Added missing .cat file from 1.1.0 release
181- [ #292 ] ( https://github.com/PowerShell/Plaster/issues/292 ) .
113+ - Fixed prompt errors when prompt text is null or empty
114+ [ #236 ] ( https://github.com/PowerShell/Plaster/issues/236 )
115+ - Fixed New Module Script template's Test task which fails to run on x64 Visual
116+ Studio Code
117+ - Fixed Test-PlasterManifest on non-Windows running .NET Core 2.0 which failed
118+ with path using \ instead of /. Thanks to
119+ [ @elmundio87 ] ( https://github.com/elmundio87 ) via PR
120+ [ #282 ] ( https://github.com/PowerShell/Plaster/pull/282 )
182121
183- ## 1.1.0 - 2017-10-25
122+ ## [ 1.0.1 ] 2016-12-16
184123
185124### Fixed
186125
187- - Fixed prompt errors when prompt text null or empty
188- [ #236 ] ( https://github.com/PowerShell/Plaster/issues/236 ) .
189- - Fixed New Module Script template's Test task which fails to run on x64 Visual
190- Studio Code.
191- - Fixed Test-PlasterManifest on non-Windows running .NET Core 2.0 failed with
192- path using \ instead of /. Thanks to
193- [ @elmundio87 ] ( https://github.com/elmundio87 ) via PR
194- [ #282 ] ( https://github.com/PowerShell/Plaster/pull/282 )
126+ - Fixed issue with the use of ` GetModule -FullyQualifiedName ` on PowerShell v3
127+
128+ ## [ 1.0.0] 2016-12-16
195129
196130### Added
197131
198- - Added constrained runspace cmdlet: Out-String
199- [ #235 ] ( https://github.com/PowerShell/Plaster/issues/236 ) .
200- - Added constrained runspace variables: PSVersionTable and on >= PS v6 IsLinux,
201- IsOSX and IsWindows [ #239 ] ( https://github.com/PowerShell/Plaster/issues/239 ) .
202- - The parameter element now supports a condition attribute so that prompting for
203- parameters can be conditional based on environmental factors (such as OS) or
204- answers to previous parameter prompts. This allows template authors to build a
205- "dynamic" set of prompts.
206- - Added constrained runspace cmdlet: Compare-Object
207- [ #286 ] ( https://github.com/PowerShell/Plaster/issues/287 ) .
132+ - First official release shipped to the PowerShell Gallery
208133
209- ### Changed
134+ ## [ 0.3.0 ] 2016-11-05
210135
211- - Simplified New Module Script template user choices i.e. removed prompt for
212- adding Pester test. The test is now always added.
136+ ### Added
213137
214- ## 1.0.1 - 2016-12-16
138+ - Build script with support for building help from markdown files, building
139+ updatable help files and generating file catalog
215140
216- - Fixed issue with the used of ` GetModule -FullyQualifiedName ` on PowerShell v3
141+ ## [ 0.2.0 ] 2016-07-31
217142
218- ## 1.0.0 - 2016-12-16
143+ ### Added
219144
220- - First official release shipped to the PowerShell Gallery!
145+ - New directive ` <templateFile> ` that implicitly expands the specified file(s),
146+ allowing the template author to set the target file encoding. This new
147+ directive supports a wildcard source specifier like the ` <file> ` directive
221148
222- ## 0.3.0 - 2016-11-05
149+ ### Changed
223150
224- - Updated build script with support for building help from markdown files,
225- building updatable help files and generating file catalog.
226- - Initial release shows the basics of what this module could do.
151+ - ` <file> ` directive no longer supports template expansion
152+ - Removed ` template ` and ` encoding ` attributes from ` <file> ` directive
153+ - Restructured the module source to follow best practice of separating
154+ infrastructure from module files
227155
228- ## 0.2.0 - 2016-07-31
156+ ### Fixed
229157
230- - Introduced new directive ` <templateFile> ` that implicitlys expands the
231- specified file(s), allowing the template author to set the target file
232- encoding. This new directive supports a wildcard source specifier like the
233- ` <file> ` directive. With this change, ` <file> ` no longer supports template
234- expansion and as result the ` template ` and ` encoding ` attributes have been
235- removed.
236- - Restructured the module source to follow best practice of separating
237- infrastructure from module files.
238- - Fixed #47 : How to create empty directories. The ` <file> ` directive supports
239- this now.
240- - Fixed #58 : File recurse does not work anymore.
158+ - How to create empty directories: the ` <file> ` directive supports this now
159+ ([ #47 ] ( https://github.com/PowerShell/Plaster/issues/47 ) )
160+ - File recurse does not work anymore
161+ ([ #58 ] ( https://github.com/PowerShell/Plaster/issues/58 ) )
0 commit comments