What's New
The latest features, improvements, and fixes in Steady.
Unreleased
✨ Features Added
- Proactive Financial Intelligence: AI-powered insights that analyze your spending patterns, goals, and financial behavior
- 7 Insight Types:
- Interactive UI:
- API Endpoints:
- Smart Calculation: Safe to spend now factors in weekly goal contribution requirements
- Formula Enhancement:
- Visual Feedback: Dashboard shows "X set aside for goals this week" when active goals have target dates
- Prevents Overspending: Ensures users don't accidentally spend money needed for savings goals
- Works with All Calculation Methods:
🐛 Bug Fixes
- Fixed property access: `tx.recurring` → `tx.isRecurring` (insights API)
- Fixed description field: `description` → `rawDescription` (insights API)
- Added proper type conversions for transaction amounts
- Removed invalid `textStroke` CSS property from loading screen
- Added responsive horizontal padding to all dashboard pages (`px-4 md:px-6 lg:px-8`)
- Fixed content touching screen edges across all views
- Removed visible circles from forecast graph (cleaner visualization)
- Fixed net worth calculation to respect `includeInBalance` toggle
- Account filtering now properly excludes toggled-off accounts
📝 Files Modified
- `components/dashboard/smart-insights.tsx` - Smart insights component (177 lines)
- `app/api/insights/route.ts` - Insights generation API (238 lines)
- `app/api/insights/[id]/dismiss/route.ts` - Insight dismissal API (59 lines)
- `SESSION-SUMMARY.md` - Session tracking document
- `RAILWAY-DEBUG.md` - Deployment troubleshooting guide
- `CHANGELOG.md` - This file
- `components/dashboard/simple-dashboard.tsx` - Integrated SmartInsights, added goal savings display
- `lib/db/queries/dashboard.ts` - Enhanced safe to spend calculation with goal contributions
- `components/dashboard/dashboard-layout-client.tsx` - Added horizontal padding
- `app/(dashboard)/loading.tsx` - Fixed TypeScript error
- ...and 3 more
🔧 Technical Improvements
- Optimized dashboard stats query with goal contribution calculation
- Added parallel data fetching for insights generation
- Improved transaction filtering for spending-tracked accounts
- Insights cached for 30 seconds to reduce database load
- In-memory dismissal tracking (consider DB migration for persistence)
- Efficient date range calculations for rolling periods
- Added `weeklyGoalSavings` to DashboardStats interface
- Fixed transaction property type mismatches
- Enhanced type conversions for numeric fields
📊 Impact
- Users now see proactive financial guidance without asking
- Safe to spend is more accurate for users with savings goals
- Better visual hierarchy with proper spacing
- Reduced cognitive load with dismissible insights
- Build passing locally: ✅
- TypeScript check: ✅ No errors
- Lint warnings: Only ESLint suggestions (non-blocking)
- Test coverage: Existing tests passing
🚀 Deployment
- All changes committed and pushed to `main` branch
- Railway deployment triggered with empty commit
- Local build verification: PASSING
- Production build verification: PASSING
📋 Next Steps
🔍 Known Issues
- ESLint warnings for `<img>` vs `<Image />` component usage
- React hooks exhaustive-deps warnings (intentional omissions)
- Dev server cache warnings (Next.js .next folder - safe to ignore)
- Dismissed insights stored in-memory (resets on server restart)
- Consider database table for persistent dismissals
- Goal contribution calculation assumes valid target dates
🎯 Success Metrics
- Insight card interaction rate
- Dismissal patterns
- Action link click-through rate
- Goal completion rate improvement
- Build time: ~10-12 seconds
- Bundle size: First Load JS 102 kB (shared)
- Middleware: 82.8 kB
- Static pages: 38 routes prerendered
Earlier Changes
- Friends feed integration (Duolingo-style social features)
- Activity page redesign with tabs
- Gamification system enhancements
- Comprehensive improvements plan (977 lines)
- Net worth account filtering
- Forecast graph visual improvements