mirror of
https://github.com/MAKS-IT-COM/maksit-certs-ui.git
synced 2026-05-16 04:48:12 +02:00
6.0 KiB
6.0 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[3.3.7] - 2026-04-25
Added
- HA runtime coordination: Added DB-backed HTTP-01 challenge persistence and runtime lease infrastructure (
acme_http_challenges,app_runtime_leases) plus coordinated startup/renewal execution. - Kubernetes readiness model: Added per-component Helm
replicaCount+ PodDisruptionBudget support and health endpoints (/health/live,/health/ready) for probes. - New backend host: Added
MaksIT.CertsUIWebAPI host with controllers, authorization filters (JWT and JWT-or-API-key), hosted services, and mapping/configuration abstractions. - Engine platform expansion: Added a domain-oriented
MaksIT.CertsUI.Enginestructure (Domain,Dto,DomainServices,Persistance,QueryServices,Infrastructure,FluentMigrations) with linq2db mappings and migration services. - Frontend identity/api-key UX: Added Users/API Keys pages and forms (
CreateUser,EditUser,SearchUser,CreateApiKey) with reusable list/filter/paging components. - Test suite: Added
MaksIT.CertsUI.Testswith service and integration coverage plus shared Postgres/WebAPI fixtures.
Changed
- Namespace and solution layout: Standardized around
MaksIT.CertsUI*and moved responsibilities into clearer host/engine layers. - Engine model organization: Reorganized ACME and related contracts from legacy top-level
Entities/ModelsintoDomainandDto. - Helm/runtime behavior: Updated deployment templates to support
env.valueFrom, pod-name-based holder identity, and probe wiring for live/ready endpoints. - Documentation: Updated README architecture references and linked HA architecture guidance.
- WebUI contracts: Aligned identity/API-key request/response and paged-search models with updated backend endpoints.
Removed
- Deprecated host: Removed legacy
MaksIT.Webapiproject and its old controllers/services/background services. - Legacy engine layout: Removed obsolete top-level engine files (
Entities,Models, previous ACME helper locations, old project.vscodefiles). - Old test project: Removed
MaksIT.Webapi.Testsin favor ofMaksIT.CertsUI.Tests.
[3.3.6] - 2026-04-13
Added
- LetsEncrypt: Per-host ACME rate-limit cooldown on
RegistrationCache(AcmeRenewalNotBeforeUtcByHostname), with HTTPRetry-Afterand problem-detail parsing (AcmeRetryAfterParser), structured logging, andResult.TooManyRequestswhen the CA returnsrateLimited. - LetsEncrypt:
AcmeProblemKindas anEnumeration(RFC 8555 problemtypeURIs) instead of ad hoc strings;LetsEncrytExceptionexposesProblemKind,RetryAfterUtc, and optional rate-limit hostname. - LetsEncrypt:
AcmeSessionStorefor per-sessionStatein memory;LetsEncryptServicesplit into partial files (LetsEncryptService.Helpers.cs) for HTTP/JWS/error helpers. - LetsEncrypt:
State.TryGetAccountKeyfor a single place to validate account key material afterInit. - LetsEncrypt.Tests: Unit tests for retry parsing, problem-kind resolution, and cooldown JSON round-trip.
Changed
- AutoRenewal: Skips hostnames that are still in an ACME cooldown window (with debug logs for skipped hosts).
- Certs flow: Persists registration cache after failed full certificate flows when a session exists so cooldown metadata is saved.
- LetsEncrypt: Broader nullable reference annotations on ACME DTOs (
Problem,AcmeDirectory,AuthorizationChallengeError, etc.) and explicit null guards inLetsEncryptService.
Fixed
- LetsEncrypt: Certificate PEM loading uses
X509Certificate2.CreateFromPeminstead of the obsoleteX509Certificate2(byte[])constructor (SYSLIB0057). - LetsEncrypt:
RevokeCertificatenow fails correctly on non-success responses (missingreturn), uses the same problem-document handling as other ACME calls, and disposes the HTTP response on successful revoke. - LetsEncrypt:
NewOrderauthorization error log line now logs the authorization status, not the order status.
[3.3.5] - 2026-04-12
Changed
CachedHostnamenow uses a C# 12 primary constructor (same public construction as before).
Fixed
RegistrationCacheloads cached PEM certificates viaX509CertificateLoader.LoadCertificateand disposes them withusingwhere certificates are parsed for expiry and host listing.RegistrationCache.TryGetCachedCertificatereturnsfalsewhen the cached entry has no private key blob, avoiding a null argument when importing key material.
[3.3.4] - 2026-04-01
Added
MaksIT.Webapi.Tests: service-level unit tests (settings, cache, identity, agent, account, certs flow) and domain tests forSettings.- Postman collections under
src/Postmanupdated to match currentMaksIT.Webapiroutes, JWT flow, and cache endpoints.
Fixed
- WebUI Terms of Service (Let's Encrypt): PDF viewer loads
pdfjs-distworker from a Vite-bundled asset (pdf.worker.min.mjs?url) so rendering works in dev and production instead of failing on missing or wrong worker URLs. AccountService.PatchAccountAsyncreturns the account built from the cache after reload, not a stale in-memory instance.
[3.3.3] - 2025-12-20
Changed
- Relicensed project from GPL-3.0 to Apache-2.0.
[3.3.2] - 2025-12-20
Changed
- Minimal Helm chart and documentation improvements.
[3.3.1] - 2025-11-22
Changed
- Public release following the v3.3.0 pre-release.
[3.3.0] - 2025-11-15
Changed
- Pre-release of the v3.3.x line.
[3.2.0] - 2025-09-11
Added
- New WebUI with authentication.
[3.1.0] - 2024-08-11
Changed
- Stabilized release following v3.0.0.
[3.0.0] - 2024-05-31
Added
- WebAPI and containerization.
[2.0.0] - 2019-11-01
Changed
- Dependency injection pattern implementation.
[1.0.0] - 2019-06-29
Added
- Initial release.