Add hierarchy, CRDT resolution, caching, reconciliation UI, test fixes (v2.1.0)
Details
Implements remaining architecture items for the Finance plugin:
- Fix NUnit test runner: Directory.Build.targets was setting Private=false on all
ProjectReferences, preventing test dependency DLLs from copying to output. Added
IsTestProject condition. Fixed MockSdk non-generic SendAsync not storing writes.
All 56 tests now pass.
- One-to-many reconciliation UI: ReconciliationMatch now carries SubsetTransactions
list. ReconciliationMatchViewModel exposes subset details with expand/collapse.
ReconciliationView shows constituent transactions in matched items.
- Chart of accounts hierarchy: Account record gains ParentId. AccountManagement
supports parent selection, set/remove parent commands, and indented display.
AccountSummary renders parent-first ordering with child indentation.
- CRDT conflict resolution: ConflictResolver provides LWW for transactions,
sticky-closed for accounts, union-merge for budget allocations, and goal
preservation for categories.
- Performance optimization: EntityCache provides TTL-based ConcurrentDictionary
caching for FinanceRepository.ListAsync calls with automatic invalidation on
writes. AccountRegisterViewModel uses pagination (100 per page) with
LoadMoreTransactions for incremental loading.
- Added 11 new tests covering CRDT resolution, entity cache behavior, and
subset reconciliation model.
Enhance budget dashboard with goal progress, age-of-money, and transfers (v1.8.0)
Details
CategoryViewModel: added GoalProgress, UnderfundedAmount, HasGoal,
GoalTypeDisplay, GoalProgressDisplay, UnderfundedDisplay properties.
BudgetDashboardViewModel: age-of-money calculation via AgeOfMoneyService,
transfer dialog state (open/close, from/to category, amount), and
ExecuteTransferAsync via TransferService. BudgetDashboardView: progress
bars under goal categories, underfunded text indicators, age-of-money in
TBB banner, Move Money button with modal overlay dialog showing category
pickers and amount. TransferDialog programmatic ContentControl for reuse.
Add transaction editing and account summary view (v1.7.0)
Details
Transaction editing: inline edit panel on AccountRegisterView with payee,
amount, memo, category picker. Save uses immutable reversal pattern via
LedgerService.UpdateTransactionAsync. Delete creates reversal-only. Clear
and Reconcile status buttons. Status indicator column (U/C/R) in register.
Account summary: net worth banner with assets/liabilities, age-of-money
indicator, budget accounts section with cleared and total balances,
tracking accounts section, closed accounts section. Uses AgeOfMoneyService
for FIFO calculation. Added Summary nav button to FinanceView.
Add category and group management UI with goal configuration (v1.6.0)
Details
New CategoryManagementViewModel and CategoryManagementView providing
hierarchical category management: create/rename groups, create categories
within groups, reorder categories (move up/down), hide categories, and
per-category goal configuration (5 goal types with target amount and
optional date for NeededByDate). Rollover behavior picker per category.
Added Categories nav button to FinanceView navigation bar.
Add account management UI with CRUD operations (v1.5.0)
Details
New AccountManagementViewModel and AccountManagementView providing full
account lifecycle: create (with type picker), rename, close (zero balance
check), reopen, delete (no-transactions guard), and on-budget toggle.
Left panel lists accounts grouped by status with balance display; right
panel shows selected account detail with editable name and action buttons.
Added Accounts nav button to FinanceView navigation bar.
Get notified about new releases