Repository navigation
Conversation
… task mutations createTask, updateTask, and deleteTask fired silently on success, unlike every other screen in the app. Add toast.success() to each and add a Loader2 spinner with Deleting... label to the confirm delete dialog, matching the events screen pattern. Update the confirm button label from 'Confirm delete' to 'Delete' and update the corresponding unit test. Co-Authored-By: AgenticDiego <noreply@carvallo.io>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
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
Added
toast.success()feedback tocreateTask,updateTask, anddeleteTaskmutations on the Checklist page, and upgraded the delete confirm dialog to show aLoader2spinner with "Deleting…" label while the deletion is in flight — matching the pattern already used on the Events and Budget screens.Recommendations Reviewed
Area: Checklist —
checklist-page-client.tsxIssue:
createTask,updateTask, anddeleteTaskmutations fire silently on success. The delete confirm dialog shows no loading state while the request is in flight.Recommendation: Add
toast.success()on each mutation'sonSuccesscallback; addLoader2spinner + "Deleting…" label to the confirm dialogAlertDialogAction.Type: UX/UI
Priority: High
Effort: Small
Area: Dashboard —
planning-overview.tsxBudgetCard/VendorsCardIssue: Both cards render the "nothing set up yet" empty state before data loads, causing a flash of incorrect content on slow connections. (Covered by open PR #233.)
Type: UX/UI | Priority: High | Effort: Small
Area: Checklist loading state —
checklist/loading.tsxIssue: Loading skeleton omits the
DashboardTopbar, causing it to disappear during page transitions. (Covered by open PR #238.)Type: UX/UI | Priority: Medium | Effort: Small
Area: Checklist card header —
checklist-page-client.tsxIssue: "Back to dashboard" nav link sits inside the card title next to "Add task", mixing navigation with primary actions. (Covered by open PR #240.)
Type: UX/UI | Priority: Medium | Effort: Small
Area: Events —
event-card.tsxIssue: "RSVP Questions" and "Edit" dropdown items share the same Pencil icon. (Covered by open PR #229.)
Type: UX/UI | Priority: Low | Effort: Small
Area: Checklist — missing
error.tsxIssue: No error boundary for the checklist route; three parallel API calls have no recovery UI if any fail.
Recommendation: Add a
checklist/error.tsxmodelled onbudget/error.tsx.Type: Frontend cleanup | Priority: Medium | Effort: Small
Area: Guest list — missing
error.tsxand unstyled null-data fallbackIssue: No error boundary; null
dashboardDatarenders a plain unstyled<h1>with no retry path.Recommendation: Add
guest-list/error.tsxand replace the inline null-data branch with a styled error treatment.Type: UX/UI | Priority: Medium | Effort: Small
Area: Budget —
category-card.tsxIssue: Expense row edit/delete buttons are bare
<button>text links with no padding or minimum touch target, making them hard to tap on mobile.Recommendation: Swap to
Buttoncomponent withsize='sm'or add explicitmin-h-[44px]wrapper.Type: UX/UI (accessibility) | Priority: Medium | Effort: Small
Area: Budget and Vendors pages —
budget/page.tsx,vendors/page.tsxIssue:
try/catchblocks callredirect('/')on API error, silently bypassing the existingerror.tsxboundaries.Recommendation: Remove the
try/catch redirectpattern and let errors bubble toerror.tsx.Type: Frontend cleanup | Priority: Medium | Effort: Small
Area: Vendors —
vendor-category-section.tsxIssue: "No vendors added yet" empty state is unreachable — the component is only rendered for categories with at least one vendor.
Recommendation: Remove the dead branch.
Type: Frontend cleanup | Priority: Low | Effort: Small
Area: Cross-cutting — five screens
Issue: Five near-identical empty state components with no shared abstraction (~150 lines of duplicated markup).
Recommendation: Extract a shared
EmptyStateprimitive.Type: Frontend cleanup | Priority: Low | Effort: Large
Selected Improvement
Add
toast.success()tocreateTask,updateTask, anddeleteTaskonSuccesscallbacks, and add aLoader2spinner + "Deleting…" text to the delete task confirm dialog, all withinchecklist-page-client.tsx.Why This Was Selected
Every other screen (Events, Budget, Vendors) provides success feedback on mutations and shows a loading spinner in destructive confirm dialogs. Checklist was the only screen missing both. The fix is entirely within one file, requires no design decisions, follows patterns already established in the codebase, and is the highest-frequency daily action in the product.
Changes Made
createTask.onSuccess: addedtoast.success('Task created')updateTask.onSuccess: addedtoast.success('Task updated')deleteTask.onSuccess: addedtoast.success('Task deleted')AlertDialogAction: addeddisabled={deleteTask.isPending},Loader2spinner, and "Deleting…" / "Delete" conditional labelAlertDialogCancel: addeddisabled={deleteTask.isPending}to prevent concurrent actionsLoader2fromlucide-reactFiles Changed
src/app/(authenicated)/checklist/_components/checklist-page-client.tsxtests/unit/components/checklist/checklist-page-client.test.tsxVerification
tsc --noEmit— no errorsbiome checkon changed file — no issuesFuture Recommendations
Add
checklist/error.tsxandguest-list/error.tsxFix budget/vendors
redirect('/')on error — bypass oferror.tsxboundariesBudget expense row touch targets too small on mobile
Extract shared
EmptyStateprimitiveGitHub Issues Created or Proposed
No issues created. All unimplemented recommendations are either Small (suitable for future daily runs) or flagged above. The shared
EmptyStaterefactor is the only one worth a separate issue; it is proposed here for a future run to file.Generated by Claude Code