Fix goal progress to use allocated amount for spending goals
Details
The goal progress calculation used balance/target for ALL goal types,
which meant spending categories (Rent, Groceries, etc.) showed 0% funded
after money was spent — even when the full amount had been budgeted.
Spending goals (MonthlySpending, WeeklySpending, MonthlySavingsBuilder)
now calculate progress as allocated/target, reflecting whether the user
has set aside enough money. Accumulation goals (SavingsBalance, NeededByDate)
still use balance/target since those track total savings toward a target.
Updated GoalProgressDisplay to show "allocated of target" for spending
goals and "balance of target" for accumulation goals. Added allocated
parameter to GoalService.CalculateGoalProgress signature.
Version bump to 3.10.0 (minor — goal calculation behavior change).
Redesign budget goal progress bar with color-coded funding states
Details
Replace the plain full-width ProgressBar with a compact 300px custom goal bar
that communicates funding status at a glance through color states. The bar uses
red for critical (<50%), amber for warning (50-75%), purple for near-target
(75-100%), and green for funded (100%+). Overfunded categories show a dark green
extension past the 100% mark. Weekly spending goals display tick marks at 25%
intervals to indicate week boundaries. The goal bar is now integrated directly
into the Goal column alongside the type label and progress text, rather than
spanning the full row width. Version bump to 3.9.0.
Add 12-month seed data generation and fix ComboBox binding bugs
Details
Finance seed data now generates realistic transactions spanning 12 months
back from today, including bi-monthly paychecks, recurring bills, variable
spending (groceries, gas, dining, entertainment, clothing), savings transfers,
budget allocations, and reconciliation checkpoints. Extracted seed logic into
a dedicated FinanceSeedService for modularity.
Fixed InvalidCastException in Manage Categories dialog where ComboBox controls
used inline ComboBoxItem elements that couldn't be cast to RolloverBehavior
and GoalTargetType enums. Replaced with proper ItemsSource bindings using
typed wrapper records (RolloverOption, GoalTypeOption).
Fixed ReportsView crash (Unable to resolve type vm:ReportsViewModel) caused
by missing x:DataType on the date range DataTemplate.
Version bump: 3.7.0 -> 3.8.0
Add preset date range selector to Spending by Category report
Details
Replaces bare date pickers with quick-select buttons: 1 Week, 2 Weeks,
1 Month, 3 Months, 6 Months, 12 Months, 2 Years, 5 Years, All, Custom.
Selecting a preset auto-sets From/To dates and refreshes. Choosing
"Custom" reveals the MiniCalendarPicker controls for manual entry.
Version: 3.6.2 → 3.7.0
Add account creation hint, CSV import button, and goal date picker
Details
Register empty state now shows an "Add Account" button that opens the
account management modal. An "Import CSV" button in the register toolbar
lets users import OFX/QFX/QIF/CSV files directly into the selected
account with deduplication. Category management now shows a
MiniCalendarPicker for the target date when "Needed By Date" goal type
is selected, using a DateOnly↔DateTimeOffset adapter property.
Version: 3.5.0 → 3.6.0
Get notified about new releases