export const APP_VERSION = '0.24.0'; export const APP_NAME = 'BillTracker'; export const RELEASE_NOTES = { version: '0.24.0', date: '2026-05-10', highlights: [ { icon: '๐Ÿงน', title: 'Clear Demo Data Fix', desc: 'Fixed Clear Demo Data button โ€” removed placeholder, made button accessible, fixed seed user ID bug, removed duplicate endpoint.' }, { icon: '๐Ÿ›ก๏ธ', title: 'Admin Toggle-Paid Restricted', desc: 'Admins can no longer toggle payments on other users\' bills. All bill payment mutations now require ownership.' }, { icon: '๐Ÿ”ง', title: 'Analytics Crash Fix', desc: 'Imported missing standardizeError in analytics routes โ€” invalid query params now return 400 instead of 500.' }, { icon: '๐Ÿ“ฆ', title: 'Export Data Integrity', desc: 'User exports now include cycle_type, cycle_day, and bill_history_ranges โ€” no more data loss on export/import.' }, { icon: '๐Ÿ”“', title: 'Single-User Mode Lockout Fix', desc: 'Fixed single-user mode locking out when expired sessions exist โ€” removed unnecessary session join from user lookup.' }, { icon: 'โฑ๏ธ', title: 'Rate Limiter Scoped', desc: 'Password rate limiter now only applies to change-password routes, not all profile reads/updates.' }, { icon: '๐Ÿ”‘', title: 'Session Invalidation Fix', desc: 'Profile password change now correctly invalidates other sessions using cookie value, not missing sessionId.' }, { icon: '๐Ÿช', title: 'CSRF Default Fixed', desc: 'CSRF cookie httpOnly defaults to false (matches SPA pattern). Password change routes no longer exempted from CSRF.' }, { icon: '๐Ÿ“…', title: 'Notification Due-Day Fix', desc: 'Fixed same-day reminder classification โ€” now compares calendar days instead of timestamps to avoid overdue misclass.' }, { icon: '๐Ÿ“Š', title: 'Upcoming Bills Validation', desc: 'Negative/invalid day windows now default to 30 instead of producing empty results.' }, ], };