Add Settings menu with modal overlays to Finance plugin (3.5.0)
Details
Replace dedicated nav buttons for Accounts, Reconciliation, and Summary
with a Settings MenuFlyout dropdown. Move category management from an
inline overlay in BudgetDashboardView to a standalone CategoryManagementView
hosted in FinanceView's modal overlay alongside the other admin views.
Uses the new shared ModalOverlay control from PrivStack.UI.Adaptive
(extracted in SDK 1.61.0) instead of duplicating overlay boilerplate.
BudgetDashboardViewModel simplified to 2-param constructor with a
RequestOpenCategoryManagement callback for the toolbar button. The
FinanceViewModel owns all settings modal state and refreshes budget
data on close.
Replace CategoryManagementView with modal overlay in BudgetDashboardView
Details
The full-screen CategoryManagementView crashed with Unable to resolve type
vm:CategoryManagementViewModel. Rather than debugging the XAML resolution,
replaced it with a modal overlay dialog inside BudgetDashboardView, matching
the existing Transfer Dialog overlay pattern.
Changes:
- Delete CategoryManagementView.axaml and code-behind
- Add category management overlay to BudgetDashboardView with full CRUD:
add group, add category, rename group, edit category settings (rollover,
goal type, target amount), save/hide/reorder actions
- Move CategoryManagementViewModel ownership from FinanceViewModel to
BudgetDashboardViewModel
- Add "Manage Categories" button to budget toolbar
- Remove "Categories" nav button from FinanceView
- Update command palette entry to open budget view then show overlay
- Bump version 3.3.2 -> 3.4.0
Replace {x:Type} DataTemplate view switching with direct View instantiation
Details
The {x:Type vm:CategoryManagementViewModel} markup extension in FinanceView's
DataTemplates triggers XamlTypeResolver.Resolve() at runtime, which cannot
resolve types loaded via a custom AssemblyLoadContext (plugin isolation).
This is the actual root cause of the CategoryManagementView crash — not the
bindings inside CategoryManagementView itself.
Fix: Remove all {x:Type} DataTemplates from FinanceView.axaml entirely.
Instead, each GoTo*Command now sets CurrentView to a new View instance with
DataContext set to the corresponding ViewModel. This is the same pattern
used by every other multi-view plugin and completely avoids XAML runtime
type resolution.
Finance v3.3.0.
Fix Finance plugin UI rendering and runtime crashes (v3.2.0)
Details
Fixed critical runtime crash on Reconcile tab where CalendarDatePicker
bound to DateOnly instead of DateTimeOffset, causing InvalidCastException.
Fixed Reports tab where all four report panels were invisible due to
ObjectConverters.Equal comparing boxed int to string ConverterParameter.
Replaced with boolean properties for reliable visibility toggling.
Added account type selector (Checking, Savings, CreditCard, Cash, Asset,
Liability) to the Accounts creation form — previously all accounts
silently defaulted to Checking. Added auto-creation of default budget,
4 category groups (Essentials, Lifestyle, Savings & Goals, Debt Payments),
and 15 starter categories on first navigation when no budget exists.
Also creates Income and Expense internal accounts for double-entry.
Improved Register tab with column headers (Date, Payee, Amount, Status,
Category), category selector in the add-transaction form, and actual
category name resolution instead of truncated GUIDs. Added empty state
messages across all tabs guiding users on what to do when no data exists.
Fixed Summary tab using raw SystemAccentColor instead of proper brush
resource, and replaced hardcoded white foreground with theme-aware
DynamicResource for dark mode compatibility.
Account hierarchy, CRDT conflict resolution, performance optimization, AI financial insights, quick budget entry (v3.1.0)
Details
Five major features for the Finance plugin:
1. Chart of Accounts Hierarchy — AccountHierarchyService with tree operations
(children, descendants, ancestors, roots, depth), cycle/orphan/depth validation,
aggregate balance across subtrees, and tree building with orphan safety.
2. CRDT Conflict Resolution Integration — ConflictAwareRepository wrapping
FinanceRepository with baseline tracking and automatic merge dispatch.
Added ResolveCategoryGroup (sticky Hidden, name LWW) and
ResolveReconciliationCheckpoint (sticky reconciliation, conservative balance).
EntityCache enhanced with per-entity GetSingle/SetSingle and prefix invalidation.
3. Performance Optimization — BalanceSnapshotService for pre-computed per-account
per-month balance snapshots with 5min TTL caching. ReconciliationService
subset-sum algorithm replaced with bottom-up DP (O(n*target) vs exponential
backtracking).
4. AI Financial Insight Intents — 6 new intents: monthly summary, spending
breakdown with trends, budget health with overspent/underfunded flagging,
multi-month financial trends with direction indicators, account overview with
net worth, and smart receipt categorization with 100+ merchant keyword patterns
across 9 categories. Enriched IndexableContent with monthly transaction
summaries and budget status for RAG context.
5. Enhanced Quick Actions — QuickBudgetEntryForm (Cmd+Shift+B) for logging
income/expenses with category selection from any interface. New command palette
entries for "Record a Purchase" and "Record Income".
128 tests total (63 new), all passing. Version 3.0.0 → 3.1.0.
Get notified about new releases