v1.8 · Released · January 31, 2026
Liability Payments, Budget Scoping & Account Groups
Dedicated payment portal for credit cards and loans, budget envelope isolation, smart budget dropdown, 4-group account classification, CSV export, and budget replication.
Sidebar Redesign (shadcn)
- Collapsible Icon Mode: Sidebar collapses to icons only (~48px) and expands on hover or rail click. State persisted via cookie.
- Hover-to-Expand: Mouse enter on collapsed sidebar temporarily expands it; mouse leave collapses it back.
- NavUser Footer: Avatar with initials + name + email in sidebar footer. Dropdown menu with "Profile" link and "Sign Out" action.
- Mobile Sheet: shadcn Sidebar automatically renders as a sheet from left on mobile. SidebarTrigger hamburger in mobile header.
- Transactions Group: Collapsible submenu with Income, Expenses, Transfers, Payments using shadcn's Collapsible pattern.
Profile Page + Notification Preferences
- Personal Info Card: Inline editing for name (pencil icon toggle), read-only email with lock icon.
- Security Card: Change password (or set password for Google-only users). Password strength indicator bar.
- Linked Accounts Card: Google OAuth connection status with "Connected" badge or "Connect Google" button.
- Notification Preferences Card: Dynamic toggles rendered from NotificationType table, grouped by category.
- Relational Notification System: NotificationType + UserNotificationPreference tables. Adding new types requires zero code changes.
Budget + Income Email Notifications
- Budget Warning (80%): Email sent when an expense causes a budget to cross 80% spent.
- Budget Exceeded (100%): Email sent when budget crosses 100%. Red-themed with urgent tone.
- Threshold-Crossing Only: Alerts fire only when a threshold is actually crossed — no spam.
- Income Notification: Confirmation email on every income creation with amount, category, and account details.
- Fire-and-Forget: Notifications are non-blocking. Failures never affect user actions.
- Preference-Aware: Each notification checks NotificationService.isEnabled() before sending.
Automated Monthly Financial Reports
- Monthly PDF Report: Editorial-style PDF with health score, income vs expense narrative, top categories with progress bars, budget check, debt snapshot, fund progress, and net worth change.
- Email Delivery: Report attached as PDF to a summary email with health score, net result, net worth, and roast feedback.
- Manual Trigger: "Send Report" dialog on Reports page with month/year picker. Report generated and delivered directly.
- Monthly Subscription Toggle: Managed from Profile page's Notification Preferences card.
- Job Queue (BullMQ): Redis-backed queue with retry, exponential backoff, and deduplication to prevent duplicate reports.
- Cron Architecture: Two Vercel Crons — one adds jobs on the 1st of each month, another processes batches every minute.
- Vercel Blob Storage: PDFs stored for future report history page.
- Unsubscribe: One-click unsubscribe link in emails with confirmation page.
Forgot Password + Google OAuth
- Forgot Password Flow: Request a password reset link from the login page. Secure token with 1-hour expiry sent via Gmail SMTP.
- Reset Password Page: Enter new password with confirmation. Token validated server-side, password updated and token invalidated atomically.
- Google OAuth Sign-In: "Sign in with Google" button on login and register pages using NextAuth Google Provider.
- Auto-Link by Email: Google sign-in automatically links to existing accounts by email match. New users get a new account created.
- Security: Cryptographically random tokens (crypto.randomUUID), one-time use, old tokens deleted on new request. Reset endpoint never reveals email existence.
- Database: New AuthAccount model for OAuth linking, PasswordResetToken model for reset tokens, User.password now optional for Google-only users.
Gmail SMTP Email Integration
- Email Service Module: New EmailService with send() and sendPasswordReset() methods for transactional emails.
- Gmail SMTP Transport: Uses smtp.gmail.com with Google App Password authentication (500 emails/day).
- Password Reset Template: Branded HTML email template with reset link and expiration notice.
- Docker Integration: SMTP environment variables passed through to app container.
Liability Payments
- New Payments Page: Dedicated /payments route for managing debt payments.
- Payment Form: Pay from asset accounts to liability accounts with optional transaction fee.
- Payment History: View all past payments with detailed breakdown and delete capability.
- Smart Account Filtering: Form shows only asset accounts as source, only liabilities as destination.
- Available Credit Display: Liability dropdown shows both debt owed and available credit.
- Transfer Separation: Transfer form now restricted to asset-to-asset only.
- Ledger Labels Fix: Payments now show as "DEBT PAYMENT" and "PAYMENT RECEIVED" with correct amount signs matching balance changes.
Sidebar Reorganization
- Transactions Group: Income, Expenses, Transfers, and Payments grouped under collapsible section.
- Collapsible Sections: Click to expand/collapse navigation groups.
- Visual Hierarchy: Child items indented with border for clear grouping.
- Mobile Support: Same grouped navigation in mobile sidebar drawer.
Expense/Income CSV Export
- Export Button: New "Export CSV" button in the header of Expense and Income pages.
- Filtered Export: Exports respect current filters (month and category for expenses, month for income).
- Smart Filenames: Files named with context (e.g., expenses_january_2026_food.csv).
- Mobile-Friendly: Button shows abbreviated "CSV" text on small screens.
Emergency Fund Calculation Fix
- Hybrid Expense Calculation: Uses 3-month average of actual expenses with budget fallback.
- Expense Source Indicator: Shows "Based on actual spending" or "Based on monthly budget".
- Accountant-Approved: Actual spending provides more conservative coverage estimates.
Replicate Budgets
- Replicate Budgets Dialog: New dialog accessible from the Budget page to copy budgets from any previous month.
- Source Month Selection: Dropdown showing all months with existing budgets to copy from.
- Target Month Selection: Choose destination month (current month + next 12 months).
- Selective Replication: Checkbox selection to choose which budgets to replicate.
- Amount Editing: Adjust budget amounts before replication if needed.
- Duplicate Prevention: Automatically skips budgets that already exist in the target month.
Expense Category Filter
- Category Filter Dropdown: New dropdown next to the search bar to filter expenses by category.
- Generic DataTable Filters: Added reusable filter support to DataTable component.
- Month-Scoped Filtering: Filter applies within the selected month only.
- Auto-Reset on Month Change: Category filter resets to "All" when switching months.
Budget Detail View Scoping
- Envelope Isolation: Budget ledger now shows only expenses linked to that specific budget, not all expenses in the category.
- Unlinked Expenses Section: Expenses in the same category but not linked to any budget are shown in a separate section with muted styling.
- Accurate Metrics: Budget progress, remaining amount, and daily pace now reflect only the linked expenses.
Smart Budget Dropdown
- Sectioned Dropdown: Budget selector in expense form now groups budgets by current month (primary) and previous months (secondary).
- 3-Month Lookback: Previous months section shows budgets from up to 3 months back with month labels.
- Auto-Reset on Month Change: Budget selection clears automatically when the expense date month changes.
- Color-Coded Remaining: Each budget option shows remaining amount with health-based colors (green/amber/red).
Account Type Separation
- 4-Group Classification: Accounts page now groups accounts into Liquid Assets, Savings & Investments, Liabilities, and Funds & Goals.
- Group Headers: Each group has a colored header with icon, label, and balance subtotal.
- Dashboard Update: Accounts card now shows 3 distinct groups (Liquid, Savings, Liabilities) with color-coded icons instead of binary asset/liability split.
- Credit Utilization & Fund Progress: Inline progress bars preserved within their respective groups.
Financial Health Check
- Health Check Tab: New dedicated tab in Financial Analytics with a comprehensive 0-100 financial health score.
- 5-Pillar Scoring: Weighted assessment across Solvency (25%), Liquidity (20%), Savings (20%), Debt Management (20%), and Cash Flow (15%).
- Score Ring Visualization: Animated SVG ring with health-colored glow indicating overall financial health.
- Pillar Breakdown: Always-visible pillar rows with progress bars, grades (A-F), and individually expandable details with recommendations.
- Brutally Honest Feedback: Roast-style messages that celebrate good performance and call out bad habits — scaled by severity.
- Weakest Pillar Highlight: Lowest-scoring pillar highlighted with yellow border and surfaced as top recommendation.
- Fund Health Integration: Fund health report displayed alongside the health score for a complete financial picture.
Income vs Expense Ratio Chart
- New Chart in P&L Tab: Dual-axis composed chart showing expense-to-income ratio over time with savings gap area.
- Health Zone Reference Lines: Color-coded thresholds at 70% (healthy), 90% (tight), and 100% (critical).
- Color-Coded Dots: Each data point colored by health zone for instant visual assessment.
- Summary Row: Average ratio, best/worst months, and trend direction (improving/stable/worsening).
Dashboard Layout Reorder
- Strategic Positioning: Funds section moved above Recent Transactions and Accounts grid.
- UX Philosophy: Strategic goals (funds, savings targets) now visible before operational data (individual transactions).
Feature Request Form & Public Changelog
- Public Changelog: Product updates accessible at /changelog without authentication.
- Feature Request Form: Embedded form with title, description, and category (Bug, Enhancement, New Feature, UI/UX).
- Dual Access: Authenticated users auto-fill email; public visitors provide email manually.
- Email Notification: Styled HTML email sent to admin on each submission.
- Rate Limiting: Redis-based IP rate limit (3 submissions per hour) to prevent spam.
SMS Notifications
- PH SMS API Integration: Free Philippine SMS API with BullMQ rate-limited queue (1 per 10 seconds).
- Dual Channel Toggles: Email and SMS toggle columns in Profile notification preferences.
- Roast-Style Messages: Tiered roast templates for budget alerts, income notifications, and monthly reports.
- Test SMS Button: Send a test SMS from the Profile page to verify your number works.
- Phone Number Field: Add your PH mobile number (+639XXXXXXXXX) in Personal Information.
Bug Fixes
- Fixed Month Off-by-One Error: Resolved timezone issue where selecting February would create budgets for January.
- Fixed Liability Ledger Running Balance: Account ledger now correctly calculates running balance for credit cards and liability accounts.
- Fixed Empty Amount Field UX: Amount fields now start empty instead of showing "0", allowing direct input.