From c0b59073fdedc0caf3a39b14401130640e4c56e8 Mon Sep 17 00:00:00 2001 From: Gilbert Sanchez Date: Thu, 14 May 2026 08:55:46 -0700 Subject: [PATCH] chore(release): 0.4.0 Co-Authored-By: Claude Sonnet 4.6 --- CHANGELOG.md | 53 ++++++++++++++++++++++++++++++++++++++ Gatekeeper/Gatekeeper.psd1 | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e589e2..77a0872 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,59 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [0.4.0] 2026-05-14 + +### Changed + +- Logging configuration key renamed from `Warning` to `Warn` to match + the `Effect` enum. Update any `Configuration.psd1` logging section + that uses `Warning = @{ ... }` to `Warn = @{ ... }`. +- `FunctionsToExport` in the module manifest now enumerates all 19 + public functions explicitly instead of using a wildcard. +- `ConvertFrom-JsonToHashtable` moved to `ScriptsToProcess` to + eliminate circular class-loading dependencies. + +### Fixed + +- `Test-Condition` now captures the result of property validation, + enforcing the fail-closed contract — a context value violating + constraints now correctly returns `$false` instead of continuing + evaluation. +- `PropertyValidation` threshold fields (`Minimum`, `Maximum`, + `MinLength`, `MaxLength`) changed to `Nullable[int]` so an unconfigured + constraint is no longer treated as zero. +- `PropertyValidation.ToHashtable` now omits null/unset fields to + prevent invalid entries in serialized JSON during Save/FromFile + round-trips. +- `ConditionGroup` constructor now treats JSON-serialized null-valued + keys as absent, and uses `Property` presence (not `Operator`) as the + canonical discriminator for leaf vs. group conditions. +- `FeatureFlag` constructor now handles `Version` deserialized as a + dictionary from `ConvertTo-Json` round-trips. +- `Convert-ToTypedValue` now correctly coerces string values to boolean. +- `PropertyDefinition.Validate` now applies a regex timeout to prevent + catastrophic backtracking on untrusted input. +- Argument transform attributes (`FeatureFlagTransformAttribute`, + `PropertySetTransformAttribute`) now reject path traversal sequences. +- Logging script execution hardened against misconfigured or missing + scripts in `Configuration.psd1`. +- `ConditionGroup` now exposes a `FromJson` static method, enabling + round-trip deserialization from JSON. +- `ConditionGroup` now detects when two or more mutually exclusive + group keys (`AllOf`, `AnyOf`, `Not`) are set simultaneously. +- `PropertySet.AddProperty` now keys the property hashtable by name + correctly. +- `PropertySet` uses `GetFileNameWithoutExtension` instead of `.BaseName` + on string paths for cross-platform compatibility. +- `New-FeatureFlag` `$Rules` parameter is no longer `Mandatory`, allowing + flags to be created without initial rules. +- Feature flag evaluation now applies `DefaultEffect` when no terminal + (`Allow`/`Deny`) rule fires, instead of always returning `$false`. +- Feature flag evaluation uses a labeled `break` to exit the rule loop + on `Allow`/`Deny`, preventing spurious continued evaluation. +- `Convert-ToTypedValue` source file renamed to match the function name. +- `psake` dependency updated to 5.0.4. + ## [0.3.2] 2026-01-30 ### Fixed diff --git a/Gatekeeper/Gatekeeper.psd1 b/Gatekeeper/Gatekeeper.psd1 index a0a9e3b..431a234 100644 --- a/Gatekeeper/Gatekeeper.psd1 +++ b/Gatekeeper/Gatekeeper.psd1 @@ -12,7 +12,7 @@ RootModule = 'Gatekeeper.psm1' # Version number of this module. - ModuleVersion = '0.3.2' + ModuleVersion = '0.4.0' # Supported PSEditions # CompatiblePSEditions = @()