Enhance reports, budget, settings, and splits features#7
Merged
Conversation
Replace JSON preview with type-specific React previews, add per-row PDF export via jsPDF, create Report records from AI insights Inngest job, export SendTemplateEmailOptions type, and update report type definitions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract BudgetRadialChart, BudgetStatusBadge, and CategoryIcon into standalone components. Redesign budget card with daily pace indicator, remaining balance tooltip, and animated radial progress. Simplify budget page layout by removing sidebar radar chart. Improve create budget dialog. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…categories Remove Account and Appearance tabs, merge theme picker into display settings with visual mockup cards. Redesign categories with CategoryIcon, typed color badges, collapsible parent rows. Delete dead account-settings and appearance-settings components.
Remove DefaultView redirect logic from overview page, drop the field from onboarding state and step forms, and remove from display settings validation schema.
Simplify BasicInfoStep props by removing account/defaultAccountId pass-through, add inline amount input with decimal formatting, redesign type selector with colored icons, and improve receipt step layout.
Increase section gaps, use rounded-xl cards, fix CTA and avatar group wrapping, add top padding for navbar clearance, and allow comarch.com images in next.config.
Apply consistent animate-in fade-in-50 space-y-12 container across accounts, analytics, transactions, and account detail pages. Fix account card hardcoded dark colors to use theme tokens, fix navbar logo color for dark mode, widen profile select triggers, and standardize transactions header typography.
… chart components
…ses, and income vs expense chart
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rt limit Remove dead settings files (billing, notifications, profile, sessions). Add export-settings with CSV download. Fix export fetch limit exceeding Zod max(100) validation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…lements Add Contact, Group, GroupMember, Expense, ExpenseParticipant, and Settlement models with supporting enums (GroupType, GroupRole, SplitMethod). Add SPLIT_REMINDER and GROUP_EXPENSE notification types. Update User, Category, and Transaction models with new relations.
Add Zod validation schemas for contacts, expenses, groups, and settlements with create/update inputs. Add corresponding TypeScript types for API responses including Contact, Expense, Group, GroupMember, and Settlement.
Add SplitService with calculateSplit (EQUAL/EXACT/PERCENTAGE/SHARES methods with rounding correction), calculateGroupBalances, calculatePairwiseDebts, calculateTotalBalance, simplifyDebts (greedy algorithm), and getActivityFeed (merged expenses + settlements timeline).
Add contactRouter (list/create/update/delete with auto-link by email), groupRouter (CRUD + members + balances + simplified debts + activity feed), expenseRouter (CRUD with optional linked transaction), and settlementRouter (list/create with optional linked transfer). Register all in appRouter. Fix transactionRouter contactId/groupId to use relation connect/disconnect syntax. Add splitSummary endpoint to overviewRouter.
…stions Add parseExpenseFromText (natural language to structured expense data), generateGroupInsights (spending analysis with top spender/category/trend), and suggestSplit (pattern-based payer and method recommendation) to aiService. Add corresponding aiRouter endpoints with rate limiting.
Add weekly split reminder (Sunday 10AM cron) that emails users about unsettled group balances, and monthly group report (1st of month 8AM cron) that sends per-group spending summaries. Add Handlebars email templates for both notifications.
Add optional hideLegend prop to HorizontalBarChart component to allow callers to suppress the redundant legend when the Y-axis already labels each bar. Defaults to false for backward compatibility.
Add splits page with stats cards (you owe, you are owed, net balance, active groups), tabbed groups/contacts lists with search, contact CRUD sheet, group creation sheet with color picker and member selection, and group cards with type badges and member avatars. Add tRPC invalidation helpers for contacts, groups, expenses, and settlements.
Add group detail page with tabbed layout (Expenses, Charts, Settle Up). Expenses tab shows expense list with category icons and activity feed timeline. Charts tab shows spending radar/bar chart and member balances horizontal bar chart. Settle Up tab shows balance summary with progress bars and simplified debts. Add expense form sheet with AI parse, split input with 4 methods, and settle up dialog. Add useGroupDetail hook.
Replace Accounts (Wallet icon) navigation link with Splits (Users icon) in the main navbar to surface the new splits feature.
Add contacts (6), groups (3: Apartment, Bangkok Trip, Friday Lunches), expenses (28 with participants and split methods), and settlements (6) to the seed script. Clean up existing splits data before re-seeding to support idempotent runs.
- Replace horizontal bar chart with vertical bar chart for member balances - Add gradient coloring (green/red) and legends to balance chart - Make chart height flexible to align with radar chart - Convert settle up from Sheet to Dialog - Remove extra ScrollArea spacing from settle up tab - Add DiceBear avatars to balance/debt lists - Remove Invoice link from dashboard header - Change spending overview bar color to red for expenses - Hide pagination on overview recent transactions - Add friendly column labels in table toggle (Category instead of CategoryId)
Add Google social login, forgot-password page, upgrade better-auth to 1.5.6, and integrate @better-auth/infra dash + sentinel plugins for analytics and security.
Update features, help, contact, changelog pages, rewrite site content, add new integration logos, waitlist API, contact API, and WaitlistEntry schema.
Add pagination to blog list, bigger post images, themed sidebar, cleaner post page layout, and redesigned comment section with better UX.
Upgrade zod 3.25 -> 4.3.6 for @better-auth/infra compatibility. Fix
ZodError .errors -> .issues, .default({}) -> .default(() => ({})), and
zodResolver type casts for Zod v4.
Add encryptField/decryptField functions for selective PII encryption at rest. Uses Node.js crypto with "enc:" prefix for encrypted values, graceful legacy fallback for plaintext, and no-op when key is absent. Add optional FIELD_ENCRYPTION_KEY env var (64-char hex string).
…tact router Encrypt ContactMessage.email on write, AuditLog.ipAddress on write, and Contact.phone on write with decryption on all read paths. Remove phone from contact search since encrypted values cannot be searched with SQL LIKE/contains queries.
Add TwoFactor model for TOTP-based 2FA with backup codes, AuditLog model with indexed userId/resourceType/action/createdAt columns, and twoFactorEnabled boolean on User model.
Add 2FA setup/disable/backup dialogs, verification page at /two-factor, twoFactor plugin in Better Auth client and server config, enhanced use-auth hook with 2FA state management, and security section UI for enabling/disabling 2FA with QR code and backup codes.
Add origin validation utility in lib/security/csrf.ts, apply CSRF checks to tRPC and waitlist routes, add IP-based rate limiting, audit middleware on protectedProcedure for auto-logging mutations, and admin-only waitlist export endpoint.
Add Handlebars templates for contact admin notification, contact confirmation, and waitlist welcome emails. Fix template cache to handle new template paths correctly.
Add OFX parser for SGML-based bank files, update bulk import dialog to auto-detect OFX/QFX files and skip column mapping step, update file upload step to accept OFX/QFX formats, and add OFX type to bulk import types and transaction validation.
Add branded PDF export with jsPDF including summary stats, color-coded amounts, and page footers. Add JSON export format, date range filtering, and format selector to export settings UI.
…ment Replace raw SQL in overviewRouter with Prisma findMany + JS aggregation, add current-session detection and revokeAll in sessionRouter, add twoFactorEnabled to user types, add phone format regex to contact validation, and tighten transaction router input handling.
…olors Update all 12 email templates with consistent design system using dark theme primary green (#006239), gradient accent bar, improved typography, and polished card layouts with rounded corners and subtle borders.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
🎉 This PR is included in version 1.3.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces several major updates across the codebase, including enhancements to authentication and environment configuration, significant database schema extensions for group expense management, and the addition of new dependencies and assets. The most important changes are grouped below by theme.
Authentication and Environment Configuration:
.env.exampleto support Google OAuth, Better Auth infrastructure, field-level PII encryption, and admin email configuration. These changes make it easier to integrate third-party authentication and improve security. [1] [2] [3]package.json, including upgrades forbetter-authand the addition of@better-auth/infra,jspdf, andqrcode.react. [1] [2] [3] [4]middleware.ts, adding support for two-factor authentication and password recovery flows.Database Schema Extensions (Group Expenses & Auditing):
prisma/schema.prisma) to add support for group expense tracking, including new models forContact,Group,GroupMember,Expense,ExpenseParticipant,Settlement, and related enums (GroupType,GroupRole,SplitMethod). This enables advanced features like group expense splitting, settlements, and contact management.TwoFactor(for two-factor authentication),AuditLog(for user action auditing),WaitlistEntry, andContactMessage. Updated theUser,Transaction, andCategorymodels to reference these new entities. [1] [2] [3] [4] [5] [6] [7]Assets and Documentation:
public/images/logosdirectory, enhancing UI integration with external services. [1] [2] [3]README.mdto the correct GitHub address and directory name, improving onboarding instructions.