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.
Add goal engine, age-of-money, credit card logic, and envelope transfers (v1.4.0)
Details
New services: GoalService (5 goal types: MonthlySpending, WeeklySpending,
NeededByDate, SavingsBalance, MonthlySavingsBuilder with progress and
underfunded calculations), AgeOfMoneyService (FIFO matching of spending
to income), CreditCardService (funded vs unfunded CC debt, available for
payment), TransferService (conservation-law category-to-category budget
transfers). New GoalTargetType enum and ReconciliationCheckpoint record.
Category model extended with optional GoalTargetType field. Comprehensive
test coverage for all new services including edge cases.
Refactor Finance plugin for CLAUDE.md compliance, bump to v1.3.0
Details
Splits 3 oversized files to comply with modularity standards:
- ReconciliationService: extracted StringSimilarity (Jaro-Winkler,
Levenshtein, Token Jaccard) into Services/StringSimilarity.cs
- CsvStrategy: extracted CsvProfileDetector (auto-detection, delimiter,
date format) and CsvLineParser (RFC 4180 quoted fields) into separate files
- FinancePlugin.Intents: split descriptors from execution handlers into
FinancePlugin.IntentHandlers.cs
Extracts 4 nested ViewModels into dedicated files per One Thing Rule:
CategoryGroupViewModel, CategoryViewModel, TransactionViewModel,
ReconciliationMatchViewModel.
Fixes async anti-patterns:
- OnSelectedAccountChanged: wrapped fire-and-forget in try/catch
- OnAllocatedChanged: added error handling in UpdateAllocationAsync
- IShareableBehavior: replaced per-call .GetAwaiter().GetResult() with
ConcurrentDictionary cache and lazy refresh on miss
Updated test references for extracted classes.
Add CompositeDisposable lifecycle to ViewModelBase, bump SDK to 1.60.0
Details
ViewModelBase now implements IDisposable with a protected CompositeDisposable
property. Plugins can track subscriptions and event handlers via DisposeWith()
extension method to prevent memory leaks when ViewModels are deactivated.
Added System.Reactive dependency for CompositeDisposable. Added
DisposableExtensions.cs with DisposeWith<T> extension method matching the
ReactiveUI convention.
Get notified about new releases