Date: 2026-09-23
- Configurator: Completely rebuilt as a WPF application (replacing the previous DevExpress WinForms tool), with a two-tab layout: "Allgemein" for global settings and "Mandanten" with a docuvita system list on the left and its connection settings plus the object list (Objektliste) on the right. The toolbar only shows the add/delete buttons for systems and objects while the "Mandanten" tab is open, and the window title shows the file name plus a
* while there are unsaved changes.
- Configurator: New Help button in the toolbar that opens the German product documentation (overview, configuration reference, installation guide) in the default browser. The documentation is installed alongside the application under
docs\.
- ExpiryChecker: Watermarking PDFs now uses PdfSharp instead of DevExpress. The background image is still placed behind the existing page content, and a failed save no longer leaves a truncated PDF behind.
- ExpiryChecker: Watermark images can now be on a network share (
\\Server\Freigabe\...). The service account needs read access to the share.
- ExpiryChecker: Downloaded and stamped working files in the working directory are now always cleaned up, including when stamping or the upload fails, and a failed upload is reported as a real error instead of silently discarding the stamped document.
- ExpiryChecker: A misconfigured "Update Feld" (a field name that doesn't exist on the object type) is now logged as exactly that, and values written to fields are parsed culture-independently, so numbers and dates behave the same regardless of the service account's regional settings.
- ExpiryChecker: Clearer, more complete error logging throughout, including full exception details for configuration errors.
- Configurator: The object list table now sizes each column to fit its header and contents and scrolls horizontally, so header labels and values are no longer cut off. Columns can be resized.
- Configurator: The config file is now saved as indented, readable JSON.
- Configurator: Paths pasted into "Hintergrundbild" with surrounding quotes (Explorer's "Copy as path") are cleaned up automatically.
- ExpiryChecker: Fixed date-based searches for times after 12:00 — search dates were written in 12-hour format, so afternoon runs searched a window 12 hours off.
- ExpiryChecker: Fixed the default "last 25 hours" search window: it was combined with OR instead of AND, so it widened the search to every object with a "Gültig bis" date instead of narrowing it to the last 25 hours.
- ExpiryChecker: Fixed searches always being sent with system ID 0 instead of the configured "System-ID".
- ExpiryChecker: If logging in to a docuvita system fails, the service now skips that system and continues with the next one instead of running the object list against a session that was never established.
- ExpiryChecker: The service now actually stops when the license doesn't cover the number of configured docuvita systems, instead of finishing the run anyway after requesting the stop.
- ExpiryChecker: A watermark image configured with a relative path (leading
\) is now found; previously the file check ran on the unresolved path and the object was silently left unprocessed.
- ExpiryChecker: Objects whose latest version can't be determined are skipped with a warning instead of causing an error.
- Configurator: Edits in the object list are now always saved — previously a value still being edited in a cell could be lost when clicking "Speichern", even though it was shown in the table.
- Configurator: Fixed the "Allgemein" tab appearing blank on startup.
- Configurator: Fixed the "Objekttyp-ID" column header typo and a wrong description of "Einmaliger Workflowstart".
- Configurator: The default password for new docuvita systems is now empty instead of the placeholder
secret.
- Installer / Setup: The installer now checks for .NET Framework 4.8 before installing and shows a clear message if it is missing.
- Installer / Setup: License key, installation directory and log directory are now correctly pre-filled when upgrading or repairing an existing installation.
- Installer / Setup: Installing a newer build over an existing installation now reliably replaces it, even if the version number is unchanged — previously this could register a second, duplicate entry in "Programs and Features" and leave the old program files in place.
- Installer / Setup: Fixed the Help window failing to open in installed builds (a required component was missing from the installer).
- Installer / Setup: Updated to WiX Toolset 4.0.5; EULA copyright year updated.
- Removed the DevExpress dependency entirely (service and Configurator).
- Shared docuvita/fd.* DLLs are now referenced from the common
C:\git\bin\Managed\Release\ folder; log4net updated to 3.3.0 and ServiceStack to 5.11.0 via NuGet.
- Updated System.Text.Json to 8.0.5 to fix security advisory CVE-2024-43485.
- Added a unit test project (54 tests) covering configuration, docuvita communication via an in-process fake server, PDF stamping and scheduling.
- Removed dead code, stray backup/build files and unused references; code-review cleanups across the service and Configurator.
- Local Debug builds now use the same
config\ layout and config file as installed builds.
- Updated developer documentation (
README.md, CLAUDE.md) and Claude Code agents/commands.