Every data-driven list pane rendered the right number of rows with nothing in them. Adding an entry appeared to create an empty row, and only the Edit dialog showed the value you had typed.
The row model exposed its data as a field, and WPF data binding resolves properties only — so every generated column silently bound to nothing.
It was reported against domain aliases, but the same control backs every list pane, so this also restores SURBL servers, DNS blacklists, the anti-spam and greylisting white lists, blocked attachments, groups, server messages, external POP3 accounts and account rules.
#7 — The Control Panel died after a service restart
The COM server lives inside the hMailServer service process, so restarting the service invalidated every interface pointer the GUI held. Afterwards every page failed with "The RPC server is unavailable" — including restarts the Control Panel performed itself after saving a setting — and the only cure was to close and reopen it.
The session now verifies the link before use and re-authenticates transparently when the service has gone:
- A restart triggered from the Control Panel reconnects immediately, and waits for the server to report Running rather than latching onto a service that has registered with Windows but is still opening its database — which previously surfaced as a misleading "no connection to the database" error.
- A restart performed by anyone else is detected on the next thing you do and healed automatically, with a "Connection restored" notification and a refresh of the page on screen.
- The liveness check reads ServerState rather than Version, because a service that is shutting down keeps answering Version from a static string after it has closed its database — a Version probe reports a perfectly healthy link while every real read fails.
- The superseded COM proxy is released, so a restart no longer strands the old server process.
- A server that is genuinely unreachable now produces a readable message instead of the unhandled-exception dialog, and the Control Panel will no longer start an hMailServer service that the administrator deliberately stopped.
Verification
Both fixes were verified end to end against a live hMailServer, not just by inspection: the previous build reproduces the reported symptoms — blank grid rows, and the literal The RPC server is unavailable. (0x800706BA) — and this build does not. Coverage spans unit assertions on the session logic, a harness driving the real CollectionEditorView and DomainDialog, and UI automation over the running Control Panel.
Dependencies
- Control Panel: WPF-UI 3.0.5 → 4.3.0, QRCoder 1.6.0 → 1.8.0, and System.Management / System.ServiceProcess.ServiceController / System.DirectoryServices 8.0.0 → 10.0.10.
- CI: actions/checkout v4 → v7, actions/setup-dotnet v4 → v5, github/codeql-action v3 → v4, actions/dependency-review-action v4 → v5, actions/upload-artifact v4 → v7.
- LiveCharts is held at 2.0.0-rc2. The proposed 2.0.5 upgrade renders the dashboard chart area opaque white over the dark theme and hides the empty-state labels, so it is deferred until that is resolved upstream.
Upgrading
Drop-in over 6.2.7. No database change (schema version 6001), no configuration change, no server-core change.