Created a new EnvelopeGenerator.ServiceHost project targeting .NET 8.0. Set up minimal API host with controllers, Swagger/OpenAPI support, and development configuration files. Updated solution to include the new project with appropriate build settings.
Deleted the EnvelopeGenerator.Jobs project and all its source files. Also removed all references to this project from the solution file, including project entries and build configurations. This cleans up the repository by eliminating unused or deprecated job-related code.
Deleted the EnvelopeGenerator.WorkerService project and all related files, including configuration, job scheduling, and temp file management. Removed all references to the project from the solution file. This eliminates the background worker service component from the solution.
Added Encrypt=True and TrustServerCertificate=True to the SQL Server connection string to ensure encrypted connections and allow trusting the server certificate, improving overall connection security.
Refactored Button1_Click and Button2_Click to eliminate local try-catch blocks, allowing exceptions to propagate. Cleaned up redundant code and improved clarity by moving variable declarations outside of the previous try blocks. Core logic remains unchanged.
Renamed the ChangedWhen property to ActionDate in the History entity, preserving the database mapping. Added a ChangedWhen property as a wrapper around ActionDate to maintain backward compatibility with existing code.
Replaced direct IEnvelopeService usage with MediatR in TestEnvelopeController. Updated GetAll to use ReadEnvelopeQuery via MediatR, removed legacy service logic, and simplified DecodeEnvelopeReceiverId. Removed unused usings, base class inheritance, and obsolete methods.
Bump project version to 3.10.0 and update assembly/file versions. Replace and streamline included Bootstrap Icons SVGs, focusing on file-related icons and removing many miscellaneous and filetype-specific icons. Some icon entries may be duplicated.
Added SixLabors.ImageSharp (v3.1.12) as a dependency to API, Application, Infrastructure, Jobs, Tests, Web, and WorkerService projects to enable advanced image processing capabilities across the solution. This prepares the codebase for features involving image manipulation or generation.
Updated Microsoft.Extensions.Logging.Abstractions and Microsoft.Data.SqlClient in EnvelopeGenerator.Jobs.csproj, and System.Configuration.ConfigurationManager in EnvelopeGenerator.Web.csproj. Also removed the chat.svg icon reference from EnvelopeGenerator.Web.csproj.
Upgraded package and assembly references from v5.0.0 to v6.0.1 across all projects. Added binding redirects in app.config files to ensure runtime compatibility. This update provides improved security and compatibility.
Upgraded Microsoft.Data.SqlClient, System.Formats.Asn1, Microsoft.Extensions, and other core dependencies to latest versions. Added new package references (Azure.Core, Azure.Identity, System.ClientModel, etc.). Updated assembly binding redirects and project references for compatibility. No application code changes; all updates are related to dependency and configuration management.
Upgraded Microsoft.Identity.Client to version 4.82.1 in all projects, updated related assembly references and binding redirects, and ensured packages.config reflects the new version. Also updated Microsoft.IdentityModel.Abstractions to 8.14.0 and added System.Formats.Asn1 where required. These changes improve consistency and compatibility for authentication dependencies.
Upgraded HtmlSanitizer from 8.0.865 to 9.0.892 in all existing project references. Added HtmlSanitizer 9.0.892 as a new dependency to API, Infrastructure, Jobs, Tests, and WorkerService projects to ensure consistent and up-to-date usage throughout the solution.
Upgraded BouncyCastle.Cryptography from 2.5.0 to 2.6.2 across all projects, updating project and package config files as needed. Added/updated PackageReference for .NET Core/Standard projects. Updated app.config with a new binding redirect for System.ValueTuple and changed Microsoft.Identity.Client redirect to 4.55.0.0. These changes improve dependency consistency and resolve potential assembly binding issues.
Updated request logic to add the "envKey" query parameter only when the global ENV_KEY variable is defined. This prevents errors and avoids unnecessary parameters in requests when ENV_KEY is not set.
Updated loadPSPDFKit to determine the locale by checking the provided argument, localized.culture, browser language, and defaulting to 'en'. This enhances locale selection robustness and user experience. Minified code updated accordingly.
Replaced hardcoded 'de-DE' locale with a new getCurrentCulture function that selects the user's culture from localized.culture or navigator.language. Date formatting now adapts to user language settings in detailedCurrentDate and getLocaleDateString.
Updated toolbar button titles to reference properties from the `localized` object instead of hardcoded strings. This enhances internationalization support by allowing button labels to adapt to different languages. Buttons affected include "Share", "Logout", "Copy Link", "Reject", and "Reset".
All user-facing messages now use a `localized` object instead of hardcoded strings, enabling easier translation. Introduced `formatLocalized` for template formatting. Updated all dialogs and notifications to use localized keys, improving internationalization across the app.
Replaced hardcoded annotation labels and text with localized values, falling back to English defaults if not available. Date formatting now adapts to the current locale using getCurrentCulture().
Expanded Resource.fr-FR.resx with translations for UI actions, error/success messages, city validation, document reset, envelope status, and page/location instructions.
Expanded Resource.en-US.resx with labels and messages for copy, reset, logout, city validation, envelope errors, and user instructions to improve interface clarity and feedback.
Expanded Resource.de-DE.resx with translations for various UI actions, error, and success messages including copy link, city format validation, logout, reset, envelope status, and signature-related prompts. This improves localization coverage for user interactions and feedback.
Added privacy-policy.fr-FR.html with detailed data protection info for signFLOW. Updated EnvelopeGenerator.Web.csproj to always copy this file to the output directory.
Added resource entries for 2FA registration steps and instructions in de-DE, en-US, and fr-FR. Updated Reg.cshtml to use localized strings, replacing hardcoded text for improved internationalization.
Added "DocumentProtected", "Password", and "Open" entries to de-DE, en-US, and fr-FR resource files. Updated Index.cshtml to use localized strings for the page title, password label, placeholder, and submit button, replacing hardcoded German text. This improves multilingual support for the protected document access page.
Added "Creator" and "Date" resource strings to de-DE, en-US, and fr-FR resource files. Updated DebugEnvelopes.cshtml to use localized labels instead of hardcoded German text for creator and date fields.
Added "ConnectionValidityExpired" string to de-DE, en-US, and fr-FR resource files. Updated _Expired.cshtml to use localized title, header, and body messages for session expiration.
Added localized strings for the cookie consent modal in de-DE, en-US, and fr-FR resource files. Updated _CookieConsentPartial.cshtml to use these resources for the modal title, message, and accept button, enabling multilingual support. Injected IStringLocalizer to support string localization in the view.
Replaced hardcoded German text in the envelope sharing UI and JavaScript alerts with localized resource strings for German, English, and French. Added new translations for labels, prompts, and error/success messages. Improved internationalization and user experience by making the sharing feature fully language-aware.
Added new resource strings for document signing success and confirmation messages in de-DE, en-US, and fr-FR. Updated EnvelopeSigned.cshtml to use these localized strings instead of hardcoded text.
Added new resource strings (prefix, link, suffix) for authenticator app setup instructions in German, English, and French resource files. Updated EnvelopeLocked.cshtml to assemble the instruction dynamically using these localized parts, ensuring correct grammar and flexibility across supported languages.
Added "DocumentSharingPeriodExpired" and "Expired" keys to de-DE, en-US, and fr-FR resource files. Updated EnvelopeExpired.cshtml to use localized strings for the title, heading, and message, enabling full internationalization of the expired envelope page.
Added a new entry for French (fr-FR) with FIClass "fi-fr" to the language configurations in appsettings.UI.json. This enables support for French localization.
Added Resource.fr-FR.resx with French UI translations. Updated EnvelopeGenerator.Application.csproj to include the new resource and copy it to the output directory, enabling French language support in the application.
Refactored GetCulture to return null if cookie is missing or invalid, and added GetCultureOrDefault for fallback. Updated TestLocalizerController and CultureMiddleware to use new methods for more accurate culture detection. Localizer now returns only the localized string value.
Switched configuration and DI from Cultures to MultiCulture.
Adjusted middleware registration so CultureMiddleware runs after ExceptionHandlingMiddleware.
Refactored Culture model to use required and non-nullable properties.
Removed nullable checks for Info in ShowEnvelope.cshtml.
Changed DI from Cultures to MultiCulture in _ViewImports.cshtml.
Refactored all references from Cultures to MultiCulture in controllers and base classes. Updated the class definition in MultiCulture.cs to improve clarity and consistency in culture-related functionality. No functional changes were made.
Changed CultureMiddleware to check if the culture cookie value is in the list of supported languages, not just for null or empty. This ensures that only valid, supported culture values are accepted from the cookie; otherwise, the middleware falls back to Accept-Language or default logic.
The Localize endpoint in TestLocalizerController now accepts the "key" parameter as a route parameter instead of a query string. The method signature was updated to use [FromRoute], and the route template was modified to include "{key}". This changes the endpoint usage from /localize?key=de_DE to /localize/de_DE.
Changed GetCulture to return current UI culture if cookie is missing, ensuring a non-null result. Reordered middleware in Program.cs to run ExceptionHandlingMiddleware after CultureMiddleware.
Added two endpoints to TestLocalizerController for retrieving culture from Accept-Language and user cookies. Enhanced GetCulture extension to parse and return the actual culture string from cookies. Updated usings for new extension methods.
Introduced a new extension method, GetCultureByAcceptLanguage, in the WebExtensions class. This method parses the Accept-Language header from the HTTP request and returns the first valid CultureInfo, enabling detection of the user's preferred culture from browser settings.
When no culture cookie is present, use the browser's Accept-Language
header to determine the user's preferred culture. This culture is
applied and stored in a cookie, enhancing localization by respecting
user preferences instead of always defaulting to the application's
default language.
Marked CreateAsync in ReadOnlyController as [Obsolete] to encourage use of MediatR. Simplified Flag.DataIntegrityIssue reference in EnvelopeMailService error handling.