Date: 2026-09-02
- TaskMonitor: Self-signed/invalid certificate acceptance is now opt-in instead of opt-out —
AcceptAllCertificates defaults to false. Existing configs that explicitly set this option are unaffected; only fresh installs and regenerated configs get the safer default.
- TaskMonitor: Overlapping scheduled runs are now detected and skipped (with a warning logged) instead of running concurrently, if a run ever takes longer than the check interval.
- TaskMonitor: New-task notification subject and body now read "new tasks" instead of "a new task", since one email can now list several tasks for the same recipient.
- Report: Multi-page PDF reports now repeat the column headers on every page instead of only the first.
- TaskMonitor: Fixed duplicate notification emails when two Docuvita user accounts share the same mail address — exactly one email is now sent per unique recipient address, listing every qualifying task instead of one mail per user account.
- TaskMonitor: Fixed a timer configuration bug where a malformed
StartTime value caused the service to silently sit idle instead of retrying.
- TaskMonitor: Fixed the report-day configuration value
7 (Sunday) never matching any day — reports could never be sent on Sundays even when configured to.
- TaskMonitor: Fixed the custom SMTP password not being decrypted, unlike the Docuvita API password.
- TaskMonitor: Fixed the Docuvita session not being properly closed when a run skipped reminder or report processing on weekends or non-report days, which could leave stale sessions open.
- TaskMonitor: Fixed a potential crash when a Docuvita user query returned no results.
- TaskMonitor: Fixed the report's task list ignoring the configured
WorkflowIds filter — it now filters the same way new-task and reminder notifications already did.
- TaskMonitor: Fixed the service reporting itself as "Started" but sitting permanently idle if the configuration file failed to load at startup — it now stops itself instead.
- TaskMonitor: Fixed a potential deadlock risk when the service needed to stop itself during startup.
- TaskMonitor: Fixed a race condition where a very short timer interval could fire before the tick handler was attached, silently dropping the first scheduled run.
- TaskMonitor: Fixed a crash when pausing the service after a failed startup.
- Report: Fixed PDF generation resources not being released, leaking on every generated report.
- Installer: Added an explicit .NET Framework 4.8 prerequisite check — installation now fails early with a clear message instead of proceeding onto an unsupported runtime.
- Installer: Fixed a bug where updating the license key during install/upgrade could also overwrite the separate
ActivationKey setting.
- Installer: Fixed three internal file-ID typos and a build-order/icon-ID mismatch in the WiX setup project.
- Updated MailKit/MimeKit (mail library) to 4.16.0 and ServiceStack (Docuvita API client) to 5.11.0.
- External shared DLL references (Docuvita contracts, licensing, internal tools) consolidated onto the org's shared build location for version consistency across projects.
- Added a full automated test suite (113 tests) covering scheduling, mail-recipient aggregation, configuration parsing, certificate validation, and workflow filtering.
- Extracted several previously-inline logic blocks (timer interval calculation, workflow ID parsing, report-day matching, mail recipient grouping) into independently testable methods.
- Improved logging: exceptions are now logged with full stack traces instead of just their message; class-specific loggers no longer get silently overwritten by callers.
- Removed a long-dead legacy report template stub and other dead code.