Filter from start of current month instead of today so the current
month's entry is always visible even mid-month.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Payoff quotes always use daily per-diem interest (rate/365 × days) regardless
of loan type. Rename "Upcoming Bills" to "Upcoming Transactions" on dashboard.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Show estimated payoff amount (balance + accrued interest) in loan summary
- Display loan balances as absolute values in red
- Fix dialog overlay blocking UI after edit by closing in finally with nextTick
- Highlight parent nav item when viewing sub-routes (e.g. /loans/:id)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add toggle button to show/hide past payments. Future payments are shown
by default since past entries are rarely useful for day-to-day viewing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Lines of credit and auto loans use daily accrual (rate/365 × days) matching
actual bank calculations. Mortgages and personal loans keep monthly compounding.
Include LoanDetail in GetAllAsync so the loan cards correctly show status.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Daily accrual made HELOC estimates worse due to front-loaded 31-day
months. Revert to rate/12 for all types - it's the standard amortization
method and works well for mortgages and personal loans. For HELOCs and
auto loans, differences from bank statements are typically due to
variable rates, extra payments, or daily billing conventions that a
fixed amortization schedule cannot capture.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mortgages and personal loans use monthly compounding (rate/12), but
HELOCs and auto loans accrue interest daily (rate/365 * actual days).
Select the calculation method based on account type and update the
disclaimer to reflect which method is being used.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the term months field with a maturity date picker - users know
when their loan ends, not the month count. Compute termMonths from the
two dates. Rename "Origination Date" to "First Payment Date" and adjust
the amortization schedule so payment #1 falls on the entered date.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Parse date string components directly and use Date.UTC() to avoid
local timezone interpretation that shifts dates by a day in western
timezones when using new Date() with date-only strings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fetch loan data (mortgage/student) from Plaid's Liabilities API during sync
and auto-create LoanDetail records. For accounts without liabilities data,
pre-populate the setup form with balance, interest rate, and smart term
defaults. Also fixes maturity date computation in the frontend form.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add API service files and replace stub views with full implementations:
- Budgets: month navigator, budget items table with progress bars, create/edit/delete
- Scheduled Transactions: data table with skip/post-now actions, add/edit dialog
- Loans: loan list, detail view with amortization schedule, payoff scenario calculator
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>