You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All 15 database mutation error toasts across use-database-rows, use-database-properties, and use-database-views show a plain text message like "Failed to update cell" with no actionable recovery option. When a transient network error causes a mutation to fail, the user must manually redo the operation. Adding a "Retry" action button to these toasts (using sonner's action option) would let users recover from transient failures with one click.
This is motivated by the high volume of transient network error bugs fixed recently (24 Sentry-noise bugs in the past week). While the error classification is now correct, the user-facing recovery path is still friction-heavy.
Acceptance Criteria
Error toasts in use-database-rows.ts (add row, move card, update cell, save option, delete row) include a "Retry" action that re-invokes the failed operation
Error toasts in use-database-properties.ts (add column, rename property, reorder columns, delete column) include a "Retry" action
Error toasts in use-database-views.ts (create view, update config, rename view, delete view, duplicate view, reorder views) include a "Retry" action
Retry action captures the original arguments in a closure — no stale state
Unit tests verify that the retry callback is passed to toast.error for at least one operation per hook
Description
All 15 database mutation error toasts across
use-database-rows,use-database-properties, anduse-database-viewsshow a plain text message like "Failed to update cell" with no actionable recovery option. When a transient network error causes a mutation to fail, the user must manually redo the operation. Adding a "Retry" action button to these toasts (using sonner'sactionoption) would let users recover from transient failures with one click.This is motivated by the high volume of transient network error bugs fixed recently (24 Sentry-noise bugs in the past week). While the error classification is now correct, the user-facing recovery path is still friction-heavy.
Acceptance Criteria
use-database-rows.ts(add row, move card, update cell, save option, delete row) include a "Retry" action that re-invokes the failed operationuse-database-properties.ts(add column, rename property, reorder columns, delete column) include a "Retry" actionuse-database-views.ts(create view, update config, rename view, delete view, duplicate view, reorder views) include a "Retry" actiontoast.errorfor at least one operation per hookpnpm lint && pnpm typecheck && pnpm testpassDependencies
None
Technical Notes
toast.erroraccepts anactionoption:toast.error("Failed to X", { action: { label: "Retry", onClick: () => retryFn() }, duration: 8000 })use-database-rows.tsanduse-database-properties.tsalready use theactionpattern — follow the same approachhandleCellUpdate, the rollback already restores previous state — retry should use the original (not rolled-back) valuessrc/components/database/hooks/use-database-rows.ts,use-database-properties.ts,use-database-views.ts