Summary
The Control Panel is pinned to LiveChartsCore.SkiaSharpView.WPF 2.0.0-rc2. Upgrading to 2.0.5 (proposed by Dependabot in #9) builds and runs, but regresses the Dashboard:
- the chart plot area is painted opaque white while the rest of the application is on the dark theme;
- the empty-state overlays ("No delivery activity yet", "No active sessions") are no longer visible — they sit in the same grid cell as the chart and are declared after it, so they should render on top.
Both charts on Dashboard are affected (ThroughputChart and SessionsChart in Views/DashboardView.xaml).
Likely cause
2.0.5 pulls in SkiaSharp.Views.WPF 3.119.0, which in turn brings OpenTK 3.3.1 and OpenTK.GLWpfControl 3.3.0. That points at a GL-hosted rendering surface rather than the software SKElement used by rc2, which would explain both symptoms at once — an opaque backing surface and WPF airspace hiding anything layered over it.
Side effect on CI
SkiaSharp.Views.WPF ships only .NET Framework assets, so restoring it against net8.0-windows raises NU1701 three times (SkiaSharp.Views.WPF, OpenTK, OpenTK.GLWpfControl). The Control Panel CI job builds with -warnaserror, so the upgrade fails the build. Suppressing NU1701 clears CI but does not address the white chart, so it was not applied.
What to investigate
- Whether 2.0.x exposes a way to force software rendering / keep the
SKElement host, or a chart-level background that defeats the opaque surface.
- Whether the empty-state overlays need to move out of the chart's airspace regardless (e.g. rendered as a chart element rather than a sibling
TextBlock).
- If it is genuinely a GL airspace limitation, whether the placeholders should be redesigned rather than layered.
Reproducing
- Set
LiveChartsCore.SkiaSharpView.WPF to 2.0.5 in hmailserver/source/Tools/ControlPanel/ControlPanel.csproj.
- Add
<NoWarn>$(NoWarn);NU1701</NoWarn> so the build passes.
- Build and open the Control Panel on Dashboard, and compare against 6.2.8.
Context
Deferred out of 6.2.8; see #9 for the rest of that dependency group, which was taken.
Summary
The Control Panel is pinned to
LiveChartsCore.SkiaSharpView.WPF2.0.0-rc2. Upgrading to 2.0.5 (proposed by Dependabot in #9) builds and runs, but regresses the Dashboard:Both charts on Dashboard are affected (
ThroughputChartandSessionsChartinViews/DashboardView.xaml).Likely cause
2.0.5 pulls in
SkiaSharp.Views.WPF3.119.0, which in turn bringsOpenTK3.3.1 andOpenTK.GLWpfControl3.3.0. That points at a GL-hosted rendering surface rather than the softwareSKElementused by rc2, which would explain both symptoms at once — an opaque backing surface and WPF airspace hiding anything layered over it.Side effect on CI
SkiaSharp.Views.WPFships only .NET Framework assets, so restoring it againstnet8.0-windowsraisesNU1701three times (SkiaSharp.Views.WPF, OpenTK, OpenTK.GLWpfControl). The Control Panel CI job builds with-warnaserror, so the upgrade fails the build. SuppressingNU1701clears CI but does not address the white chart, so it was not applied.What to investigate
SKElementhost, or a chart-level background that defeats the opaque surface.TextBlock).Reproducing
LiveChartsCore.SkiaSharpView.WPFto2.0.5inhmailserver/source/Tools/ControlPanel/ControlPanel.csproj.<NoWarn>$(NoWarn);NU1701</NoWarn>so the build passes.Context
Deferred out of 6.2.8; see #9 for the rest of that dependency group, which was taken.