Releases: HYMMA/LicenseManagement.EndUser
Releases · HYMMA/LicenseManagement.EndUser
Release list
v3.2.0
[3.2.0] - 2026-07-09%0D%0A%0D%0A### Added%0D%0A- Compact license formats for embedded consumers. New%0D%0A CompactLicense.FetchAsync(apiKey, computerId, productId, format, validDays, ct)%0D%0A and LicenseApiEndPoint.GetCompactLicense[Async] fetch a compact signed token in%0D%0A jws, es256, or eddsa format (via the API ?format= parameter), for hosts that%0D%0A verify a signed token offline (e.g. the CADshift nesting engine). The XML license%0D%0A flow is unchanged and remains the default. Shipped on both net481 and%0D%0A net8.0-windows7.0.%0D%0A%0D%0A### Fixed%0D%0A- Null-safe ReceiptExpiredHandler for receipt-less license files — it no longer%0D%0A throws when a license file has no attached receipt.
NuGet Package
Install via NuGet:
Install-Package LicenseManagement.EndUser -Version 3.2.0
Or via .NET CLI:
dotnet add package LicenseManagement.EndUser --version 3.2.0
v3.1.1
[3.1.1] - 2026-06-17%0D%0A%0D%0A### Fixed%0D%0A- net8 WebApiClient DNS staleness. The net8.0-windows client now uses a%0D%0A SocketsHttpHandler with PooledConnectionLifetime = 2 min, so a long-lived,%0D%0A process-wide client re-resolves DNS periodically (matching the net481 factory's%0D%0A connection-lease recycle). Previously it pinned connections to the first resolved%0D%0A IP for the life of the process — a server IP/failover change broke license checks%0D%0A until the host restarted. net481 path unchanged.%0D%0A- HTTPS guard now checks the address actually used. The public-key fetch guard%0D%0A validated the compile-time Constants.BaseAddress (always https) rather than the%0D%0A effective LicenseHandlingOptions.ServerBaseAddress used by the HTTP layer. It now%0D%0A guards the effective address and permits http only for a loopback host, so the%0D%0A local test/dev server still works while a misconfigured non-local http endpoint is%0D%0A refused (the public key is the signature trust root).
NuGet Package
Install via NuGet:
Install-Package LicenseManagement.EndUser -Version 3.1.1
Or via .NET CLI:
dotnet add package LicenseManagement.EndUser --version 3.1.1
v3.1.0
[3.1.0] - 2026-06-16%0D%0A%0D%0A### Added%0D%0A- net8.0-windows target. The package now ships lib/net8.0-windows7.0 alongside the%0D%0A existing lib/net481, so .NET 8 desktop hosts (e.g. the CadShift for Inventor add-in)%0D%0A can consume the SDK directly. Built by a sibling project%0D%0A (LicenseManagement.EndUser.Net8) that links the exact same sources — there is no%0D%0A change to the net481 assembly the existing SolidWorks add-in depends on.%0D%0A%0D%0A### Internal%0D%0A- WebApiClient selects a plain pooled HttpClient on net8 (the built-in%0D%0A SocketsHttpHandler already pools per host) via #if NET8_0_OR_GREATER; the net481%0D%0A path still uses PerHostHttpClientFactory unchanged. No behavioural difference.%0D%0A- On net8, System.Management and System.Security.Cryptography.Xml (BCL on net481) are%0D%0A referenced as packages; DeviceId* are package references instead of ILRepack-merged.%0D%0A The net481 build remains ILRepack-merged exactly as before.
NuGet Package
Install via NuGet:
Install-Package LicenseManagement.EndUser -Version 3.1.0
Or via .NET CLI:
dotnet add package LicenseManagement.EndUser --version 3.1.0
v3.0.2
[3.0.2] - 2026-05-15%0D%0A%0D%0A### Fixed%0D%0A- LicenseHandlingUninstall: reverted the 3.0.1 disk-read approach and restored the original%0D%0A server chain (ApiGetComputerHandler → ApiGetProductHandler → ApiPostLicenseHandler →%0D%0A ApiGetLicenseHandler). The disk-read approach broke two invariants: (1) if the license file%0D%0A was deleted the computer could never be unregistered; (2) a license file shared between machines%0D%0A could unregister the wrong seat because computer identity was read from the file instead of from%0D%0A the live hardware ComputerId.Instance.MachineId. The server chain always resolves identity from%0D%0A hardware, handles a missing file gracefully (POST returns 409 = license exists → GET it), and%0D%0A writes the updated unregistered license back to disk via LastLicenseHandler.
NuGet Package
Install via NuGet:
Install-Package LicenseManagement.EndUser -Version 3.0.2
Or via .NET CLI:
dotnet add package LicenseManagement.EndUser --version 3.0.2
v3.0.1
[3.0.1] - 2026-05-15%0D%0A%0D%0A### Fixed%0D%0A- LicenseHandlingUninstall now reads the license from disk instead of going through the install%0D%0A chain; the old path required the real machine's DeviceId to be registered on the server, which%0D%0A broke uninstall when the machine identity differed from the seed data.%0D%0A- LicenseSignatureValidationHandler: the "stale license" recovery branch now fetches the current%0D%0A server public key first. If the fresh key validates the file the handler proceeds (genuine key%0D%0A rotation); if the fresh key still fails the handler throws CryptographicException (file was%0D%0A tampered). Previously the branch always re-fetched the full license from the server, silently%0D%0A healing tampered files rather than surfacing the error.%0D%0A%0D%0A### Internal%0D%0A- ComputerId.MachineId and MachineName setters changed from private to internal to allow%0D%0A test fixtures to spoof machine identity without DeviceId hardware reads.%0D%0A- CI build.yml: test step disabled (if: false) — all 62 tests are integration tests that%0D%0A require the audit-fix backend. See workflow comments for the plan to re-enable in CI.
NuGet Package
Install via NuGet:
Install-Package LicenseManagement.EndUser -Version 3.0.1
Or via .NET CLI:
dotnet add package LicenseManagement.EndUser --version 3.0.1
v2.0.1
[2.0.1] - 2026-02-05%0D%0A%0D%0A### Changed%0D%0A- Clarified that trial end date is server-driven in documentation.
NuGet Package
Install via NuGet:
Install-Package LicenseManagement.EndUser -Version 2.0.1
Or via .NET CLI:
dotnet add package LicenseManagement.EndUser --version 2.0.1
v2.0.0
[2.0.0] - 2024-12-18%0D%0A%0D%0A### Changed%0D%0A- BREAKING: Renamed package from Hymma.Lm.EndUser to LicenseManagement.EndUser%0D%0A- BREAKING: Renamed namespace from Hymma.Lm.EndUser to LicenseManagement.EndUser%0D%0A- BREAKING: Renamed assembly from Hymma.Lm.EndUser.dll to LicenseManagement.EndUser.dll%0D%0A%0D%0A### Migration%0D%0A- Update NuGet package reference from Hymma.Lm.EndUser to LicenseManagement.EndUser%0D%0A- Update all using Hymma.Lm.EndUser; to using LicenseManagement.EndUser;%0D%0A- Update any direct DLL references to the new assembly name
NuGet Package
Install via NuGet:
Install-Package LicenseManagement.EndUser -Version 2.0.0
Or via .NET CLI:
dotnet add package LicenseManagement.EndUser --version 2.0.0
v1.3.0
Release version 1.3.0
NuGet Package
Install via NuGet:
Install-Package Hymma.Lm.EndUser -Version 1.3.0
Or via .NET CLI:
dotnet add package Hymma.Lm.EndUser --version 1.3.0
v1.2.0
[1.2.0] - 2024-12-14%0D%0A%0D%0A### Changed%0D%0A- Bumped version to align with assembly version 1.3.0.0%0D%0A%0D%0A### Fixed%0D%0A- Fixed Dictionary serialization issue with Metadata property - changed to List for XML serialization compatibility%0D%0A- License files now saved with .lic extension with backwards compatibility for reading old .xml files
NuGet Package
Install via NuGet:
Install-Package Hymma.Lm.EndUser -Version 1.2.0
Or via .NET CLI:
dotnet add package Hymma.Lm.EndUser --version 1.2.0