Skip to content

Latest commit

 

History

History
51 lines (40 loc) · 2.63 KB

File metadata and controls

51 lines (40 loc) · 2.63 KB

Changelog

All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

12.0.0 - 2026-06-14

Changed (breaking)

  • Area() now returns a non-negative magnitude. Previously it returned the signed shoelace area, which was negative for clockwise-wound polygons. (#7)
  • MaxIndex() and FindMinMaxInOn() now throw InvalidOperationException on an empty sequence, matching the LINQ Max()/Min() convention (previously MaxIndex() threw ArgumentOutOfRangeException from an internal index access and FindMinMaxInOn() returned an inverted (double.MaxValue, double.MinValue) range). Scale() on an empty sequence still returns an empty sequence. (#9)
  • AsTime(TimeSpan) no longer leaves a trailing ", " separator and now returns "0 ms" for TimeSpan.Zero, consistent with the AsTime(milliseconds) overload. (#10)

Removed (breaking)

  • Removed the redundant Scale<T>(IEnumerable<double>) overload whose type parameter was never used. Use the non-generic Scale() (0..1 normalisation) instead. (#8)

Added

  • Black-box test coverage for previously-untested public surface (HsVtoArgb, Head/Tail/ HeadAndTail, PluralizeWhenNeeded, AsTime(TimeSpan), FindMinMaxInOn, Scale(), MaxIndex).
  • Code coverage upload to Codecov from CI, and a SonarCloud analysis workflow (see SONAR_SETUP.md).

Changed (breaking)

  • DeepCopy is now a dependency-free, reflection-based deep clone (copies private/inherited fields, preserves shared references and cycles, no [Serializable]/parameterless-ctor requirement).
  • Removed the Newtonsoft.Json dependency and the JsonSerializerSettings overload of DeepCopy.

Changed (breaking)

  • Multi-targeted (netstandard2.0, net8.0), modernised dependencies, fixed correctness bugs.

Deprecated

  • InClosedRange/InOpenRange (inverted semantics — use InRangeExclusive/InRangeInclusive) and ConstructLine (use ConstructLineFromRadians/ConstructLineFromDegrees).