Repository navigation
Conversation
Both the category and expense delete AlertDialogs were disabled during their mutations but showed no visual feedback. This adds a Loader2 spinner and in-progress label text to both action buttons so users know the deletion is in flight. The expense delete dialog also now surfaces the expense name in the title and a section-scoped description instead of the generic "This cannot be undone." fallback, so users always know exactly what they are deleting. Co-Authored-By: AgenticDiego <noreply@carvallo.io>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
This was referenced Aug 17, 2026
This branch had an error being deployed
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.
Daily Product Improvement
Summary
Both the budget category and expense delete confirmation dialogs were silent during their async mutations — the action button was disabled but showed no spinner or label change. The expense delete dialog also showed a generic title ("Delete this expense?") and description ("This cannot be undone.") that gave no indication of which expense was about to be removed. This PR fixes both issues in a single focused file.
Recommendations Reviewed
Area:
src/components/budget/category-card.tsxIssue: Delete category and delete expense
AlertDialogActionbuttons disable on mutation but show no loading spinner or text change — the UI appears frozen during the async operation.Recommendation: Import
Loader2and render a spinner + "Deleting…" label whileisPending.Type: UX/UI
Priority: Medium
Effort: Small
Area:
src/components/budget/category-card.tsxIssue: The expense delete dialog title ("Delete this expense?") and description ("This cannot be undone.") are generic — they don't identify which expense the user is about to permanently remove.
Recommendation: Resolve the expense object from
category.expensesusingdeleteExpenseIdand surfaceexpense.descriptionin the dialog title and a section-scoped description.Type: UX/UI
Priority: Medium
Effort: Small
Area:
src/app/(authenicated)/events/_components/manage-event-questions-dialog.tsxIssue: The RSVP-disabled warning banner uses hardcoded Tailwind amber colors (
border-amber-300 bg-amber-50 text-amber-900) that bypass the design token system and break in dark mode.Recommendation: Replace with semantic tokens (
bg-warning/10 border-warning/30 text-warning-foreground, or a shadcn/ui callout pattern).Type: Frontend cleanup
Priority: Low
Effort: Small
Area:
src/components/budget/budget-summary.tsxIssue: The
BudgetSettingsDialogSave button disables during the mutation but shows no loading indicator.Recommendation: Add a
Loader2spinner to the Save button whenisPending.Type: UX/UI
Priority: Low
Effort: Small
Area:
src/app/(authenicated)/settings/page.tsxIssue: Section
h2("Wedding Details") and subsectionh3s ("Plugins", "Organization Members", "Connected Apps") use identical font sizes — no visual hierarchy.Recommendation: Reduce h3 to
text-baseortext-sm.Type: UX/UI
Priority: Medium
Effort: Small
(Already addressed in PR fix(settings): reduce h3 subsection size to create clear heading hierarchy #237 on a parallel branch)
Area:
src/app/(authenicated)/events/_components/event-card.tsxIssue: Both "RSVP Questions" and "Edit" dropdown items use the
Pencilicon — identical icons for different actions.Recommendation: Replace the RSVP Questions icon with
HelpCircleorMessageSquare.Type: UX/UI
Priority: Low
Effort: Small
(Already addressed in PR fix(events): replace duplicate Pencil icon on RSVP Questions dropdown item #229 on a parallel branch)
Selected Improvement
Budget delete dialogs — loading states + expense identity in
src/components/budget/category-card.tsx.Added a
Loader2spinner and "Deleting…" label to both the category and expenseAlertDialogActionbuttons while their mutations are in flight. Also resolved the deleting expense fromcategory.expensesand surfaced its name in the dialog title and a section-scoped description.Why This Was Selected
The budget section is a core workflow (couples track every payment here). Both delete operations could take a noticeable moment on slow connections, and the silent disabled-button state reads as a frozen UI. The expense dialog's generic text was a usability gap — a user who accidentally triggered the dialog had no way to confirm they were about to remove the right item. The fix is contained to one file, touches no shared infrastructure, and the change is easy to verify visually.
Changes Made
Loader2fromlucide-reactalongside the existingChevronDown.deletingExpensecomputed variable that resolves the expense object fromcategory.expensesusing the currentdeleteExpenseIdstate.Loader2spinner and changes label to "Deleting…" whiledeleteCategory.isPending.Delete "Catering deposit"?(usingdeletingExpense?.description), description reads "This permanently removes the expense from {category.name}. This cannot be undone."deleteExpense.isPending.Files Changed
src/components/budget/category-card.tsxVerification
npx --yes @biomejs/biome lint src/components/budget/category-card.tsx— no issues.npx tsc --noEmit --skipLibCheck— zero errors in the changed file (only a pre-existingbaseUrldeprecation warning intsconfig.json).AlertDialogblocks.Future Recommendations
Hardcoded amber colors in RSVP questions warning banner
Recommendation: Replace
border-amber-300 bg-amber-50 text-amber-900inmanage-event-questions-dialog.tsxwith design-token-based classes.Priority: Low | Effort: Small | Reason not included: Lower priority than the selected item; dark-mode breakage is subtle since the warning only appears when RSVPs are disabled. | Should become GitHub issue: No
BudgetSettingsDialog Save button has no loading state
Recommendation: Add
Loader2spinner to Save button inbudget-summary.tsxwhenisPending.Priority: Low | Effort: Small | Reason not included: Separate file, kept daily change focused. | Should become GitHub issue: No
next-authis an unused dependencyRecommendation: Remove
next-authfrompackage.json. The project usesbetter-authexclusively;next-authis dead weight adding ~60 KB+ to build time and potential version conflicts.Priority: High | Effort: Small | Reason not included: Removing a package touches deployment and CI; warrants a dedicated PR with verification. | Should become GitHub issue: Yes
Hardcoded colors in RSVP flow components
Recommendation:
src/components/website/forms/steps/usesbg-gray-700,text-white,border-gray-400etc. throughout the public RSVP forms. These bypass the design-token system and will look broken or inconsistent on Aurelia/Voyage templates.Priority: High | Effort: Medium | Reason not included: Multi-file, requires design review for how token overrides apply per template. | Should become GitHub issue: Yes
Legacy
old_dashboardroute and componentsRecommendation: Remove
src/app/old_dashboard/andsrc/components/old_dashboard/entirely; an open PR (chore: remove orphaned old_dashboard code and tests #231) already targets this.Priority: Medium | Effort: Small | Reason not included: Already in PR chore: remove orphaned old_dashboard code and tests #231. | Should become GitHub issue: No
Large god-file components
Recommendation:
guests-view.tsx(999 lines),guest-detail-panel-content.tsx(856 lines), andplanning-overview.tsx(645 lines with 7 inline sub-components) should be broken into focused files.Priority: Low | Effort: Large | Reason not included: Large refactor, cross-cutting risk. | Should become GitHub issue: Yes
GitHub Issues Created or Proposed
No issues were created in this run. Two issues are proposed for follow-up:
next-authpackage — the project usesbetter-authexclusively;next-authis dead weight. High priority, Small effort.These are noted here for the next daily review cycle to create if not already tracked.
Generated by Claude Code