Fixes
LiveCharts 2.0.5 — the dashboard charts no longer render white (#11)
6.2.8 pinned LiveCharts to 2.0.0-rc2 because upgrading painted both dashboard charts as an opaque white block over the dark theme, taking the "No delivery activity yet" and "No active sessions" labels with them.
CartesianChart derives from Control, and 2.0.x gives that Control a solid default Background where the release candidate left it unset — so the chart painted a white rectangle across the dark card. The overlay labels were never actually hidden either; they are light-grey text that happened to land on that white. Setting Background explicitly fixes both symptoms at once.
Worth recording what it was not, because the dependency graph points the other way: 2.0.5 pulls SkiaSharp.Views.WPF, OpenTK and OpenTK.GLWpfControl, which looks exactly like a GL-hosted surface and the usual WPF airspace problem. It isn't — LiveCharts.RenderingSettings.UseGPU defaults to false, so rendering stays on the software path and ordinary WPF layering applies.
Verified in both light and dark themes.
Quality
The Control Panel has automated tests for the first time (#12)
The GUI previously had no test coverage at all — CI compiled it and stopped there.
- A ControlPanel.Core library exposes the side-effect-free services (PasswordStrength, NumericField, PasswordGenerator) through shared compile links, so no code moved and the Control Panel project itself is untouched.
- ControlPanel.Tests runs 17 xUnit tests against them, with coverlet emitting Cobertura coverage that CI publishes on every push.
- The three .NET 8 projects also gained a solution, ControlPanel.sln. Every other component in the tree had one; this stack did not.
Repository
- Release tags are now protected against being moved or deleted, and master against force-pushes.
- Secret scanning and push protection are enabled.
- Added a Code of Conduct; the issue chooser now routes questions to Discussions.
Upgrading
Drop-in over 6.2.8. No database change (schema version 6005), no configuration change, no server-core change.