Add IDataMetricsProvider to Dashboard and Graph plugins
Details
Dashboard and Graph were the only plugins without any capability
interface implementations, so they never appeared in the Dashboard
Data tab's plugin metrics list.
Dashboard:
- Implements IDataMetricsProvider via partial class
- Reports subsystem count from SubsystemTracker as runtime metrics
- Version bump: 1.5.1 → 1.5.2
Graph:
- Implements IDataMetricsProvider via partial class
- Reports cached graph node and edge counts as runtime metrics
- Version bump: 1.1.0 → 1.1.1
Note: Build may fail at this commit due to concurrent in-progress
work by another session — will be resolved in a subsequent commit.
Split Dashboard into separate tab UserControls
Details
Extract Overview, Data, and Subsystems tabs from the monolithic
DashboardView.axaml (~1035 lines) into three independent UserControls.
A single ContentControl in the star row now swaps between lazily-created
and cached tab controls, ensuring only one tab exists in the visual tree
at a time. This eliminates the persistent scroll/layout bugs caused by
three competing elements sharing one Grid star cell with IsVisible toggling.
- DashboardOverviewTab: marketplace grid, category pills, stat cards,
responsive grid sizing handler, category-pill + plugin-action styles
- DashboardDataTab: storage metrics, plugin data tables, DB diagnostics
- DashboardSubsystemsTab: subsystem groups with live metrics
- DashboardView.axaml slimmed to ~110 lines (toolbar + ContentControl)
- Code-behind uses Dictionary<DashboardTab, Control> cache with
PropertyChanged listener for instant tab switching
- No ViewModel changes — all tabs inherit DataContext from ContentControl
- Version bump: 1.5.0 → 1.5.1
Move scroll spacing from ScrollViewer.Padding to content Margin
Details
ScrollViewer.Padding shrinks the viewport, reducing visible content
area. Move the spacing to Margin on the inner StackPanel instead —
this adds the spacing as part of the scrollable content extent, so
the 80px bottom space is scrollable buffer rather than viewport
reduction.
Increase Dashboard scroll bottom padding to 80px
Details
Match the Data tab's bottom padding (80px) on Overview and Subsystems
tabs. The 32px padding from the earlier commit was insufficient to
buffer against the content area overflow, leaving the last items
partially clipped at the window boundary.
Restructure title bar: overlay spacer + margin-based content offset
Details
The title bar spacer was a Grid row that consumed space from inside the
Grid, but the Grid still received the full ClientSize.Height as its
available height. This meant the star row (content) was sized relative
to the Grid's internal space, not the actual visible window area.
Changed approach:
- TitleBarSpacer is now a visual overlay (VerticalAlignment=Top, ZIndex)
that paints the background behind macOS traffic lights but does NOT
participate in the content Grid layout
- Content Grid uses Margin="0,28,0,0" which causes Panel.ArrangeOverride
to give it (ClientSize.Height - 28) as its arranged height
- Grid RowDefinitions simplified to "Auto,*" (banner + content)
This ensures the content Grid's star row is sized to exactly the visible
area below the title bar, with no ambiguity about how the 28px offset
is applied.
Get notified about new releases