- Centralize the feature-flag guard in a HasMiddleware closure (matches McpTokenController) instead of repeating abort_unless in every action. - Move the index aggregation into SavingsGoal::withStatsForUser so budgets stay decoupled from goals. - Route single-goal reads through savedAmountInCents() so the sign convention lives in one place. - Extract useControllableOpen hook shared by both create dialogs. |
||
|---|---|---|
| .. | ||
| budget-list-card.tsx | ||
| budget-period-navigation.tsx | ||
| budget-spending-chart.test.ts | ||
| budget-spending-chart.tsx | ||
| create-budget-dialog.test.tsx | ||
| create-budget-dialog.tsx | ||
| delete-budget-dialog.tsx | ||
| edit-budget-dialog.test.tsx | ||
| edit-budget-dialog.tsx | ||