Scan ALL DuckDB files with expandable per-DB diagnostics
Details
Diagnostics now scans every DuckDB file in the workspace (entities, datasets,
blobs, events, vault) — not just the entity store. Each DB appears as a
clickable row showing file size, table count, and total rows. Click to expand
and see per-table breakdown with row counts, column counts, and estimated sizes.
Also queries all schemas (not just 'main'), views, and indexes to surface any
hidden data that could be causing file bloat. The scan_duckdb_file() utility
opens sibling .duckdb files read-only to inspect their contents without
interfering with active connections.
Fix Fluent theme hover flash on Button, ListBoxItem, ToggleButton
Details
The Avalonia Fluent theme targets ContentPresenter#PART_ContentPresenter
directly on hover/pressed/selected states, overriding our Button-level
Background with Fluent's default white/light value. This caused a visible
white flash on every hover interaction before our DynamicResource value
propagated.
Fix: Force the template ContentPresenter to always respect the parent
control's Background via TemplateBinding in all pseudoclass states. This
matches the existing TextBox fix pattern (PART_BorderElement). Applied to
Button, ListBoxItem, and ToggleButton.
Version bump: 1.45.0 → 1.45.1
Improve force-recreate reliability and add diagnostic logging
Details
Use FFI diagnostics (actual row counts) instead of plugin metrics to determine
if the DB is truly empty. Add 500ms delay after Rust shutdown to ensure OS
releases file handles. Add per-file try/catch with error logging for deletion.
Show progress messages and before/after sizes in the status text.
Add database internals diagnostics panel
Details
Adds a "Database Internals" section to the Dashboard Data tab that queries
DuckDB's internal metadata to show per-table row counts, column counts, and
estimated sizes. This helps diagnose database bloat by revealing exactly which
tables are consuming space (e.g., orphaned entity_vectors, stale sync_ledger
entries, or accumulated email data).
The feature spans the full stack:
- Rust: db_diagnostics() on EntityStore queries duckdb_tables() and
pragma_database_size() to return JSON with per-table stats
- FFI: privstack_db_diagnostics() exports the function as a C string
- C#: NativeLibrary.DbDiagnostics P/Invoke + SdkHost.GetDatabaseDiagnostics()
- ViewModel: RunDatabaseDiagnosticsCommand parses JSON into ObservableCollection
- View: Card with Scan Tables button, DB/WAL size summary, per-table breakdown
Versions: Rust 1.13.3, SDK 1.43.1, Desktop 1.45.0
Override Avalonia SystemAccentColor + complete control state styling
Details
Add SystemAccentColor and its Dark/Light variants to all 7 theme files,
mapping them to each theme's primary color. This ensures every built-in
Fluent control (CheckBox, RadioButton, ToggleSwitch, ToggleButton,
ProgressBar, AutoCompleteBox) respects the active theme instead of
defaulting to Fluent's blue accent.
Add missing control states in PrivStackTheme.axaml: CheckBox indeterminate
and checked hover, RadioButton checked hover, ToggleSwitch checked hover
and knob theming, ToggleButton checked states (new), AutoCompleteBox base
and focus styles (new), ProgressBar indeterminate indicator.
Register SystemAccentColor keys in CustomTheme.cs so the custom theme
editor exposes the "System Accent (Fluent Override)" group.
Version bump: 1.44.2 → 1.45.0
Get notified about new releases