request/CHANGELOG.md
Louis Seubert 68194d3cb3
fix(validation): guard null comparison bounds in comparison builders
Passing a null bound to GreaterThan/LessThan/Between etc. called
value.CompareTo(null), throwing NullReferenceException for non-null
reference-type values. Short-circuit when the bound is null so the rule is
satisfied instead of crashing.
2026-07-12 21:25:21 +02:00

2.5 KiB

Changelog

All notable changes to this project will be documented in this file.

This project adheres to Semantic Versioning.

1.0.0 - 2026-05-26

Added

  • request.dispatcher: Core mediator pattern implementation with async request/response handling
  • request.result: Optional result wrapper types (Result<T>) for structured responses
  • request.validation: Automatic validation pipeline behavior with FluentValidation integration

1.1.0 - 2026-05-28

Added

  • request.validation: Dependency injection support for validators via IServiceCollection.AddValidation()
  • request.validation: IValidatorBuilder for fluent validator registration and assembly scanning
  • request.validation: Support for open generic validators and automatic closing during resolution
  • request.validation: Validate<T> extension method for simplified validator invocation

Changed

  • request.dispatcher: Reset type caches when reloading assemblies
  • request.validation: Reset type caches when reloading assemblies

2.0.0 - 2026-05-30

Breaking changes

To have a consistent experience across all packages, some public interfaces have been renamed.

Changed

  • request.dispatcher: Hide pipeline internals in stack frames
  • request.validation: Rename IValidatorBuilder to IRequestValidatorBuilder incl. extensions methods

Unreleased

Added

  • request.validation: Support PropertyPath JSON converter for string values and dictionary property names

Changed

  • request.result: Document that Result/Result<T> equality treats any two failures as equal, ignoring error content; branch on the Error directly for failure-specific logic (see PLAN.md Inconsistencies#E)

Fixed

  • request.result: Correct the namespace in the Prelude doc comment (Geekeey.Extensions.ResultGeekeey.Request.Result)
  • request.result: Fold IsSuccess into Result<T>.GetHashCode to avoid collisions between a failure and a success value whose hash is 0
  • request.validation: Guard null comparison bounds in GreaterThan/LessThan/Between etc. so a null bound no longer throws (NullReferenceException)

Removed