Skip to content

Feat/payments devtools skeletons errorboundary#374

Open
lonerthefirst3-sudo wants to merge 4 commits into
Stellar-split:mainfrom
lonerthefirst3-sudo:feat/payments-devtools-skeletons-errorboundary
Open

Feat/payments devtools skeletons errorboundary#374
lonerthefirst3-sudo wants to merge 4 commits into
Stellar-split:mainfrom
lonerthefirst3-sudo:feat/payments-devtools-skeletons-errorboundary

Conversation

lonerthefirst3-sudo and others added 4 commits June 29, 2026 12:55
- New /payments route showing all payments made by connected wallet
- Sortable table (date desc by default, toggle amount) with pagination (20/page)
- Total paid summary: "You have paid X XLM across Y invoices"
- Download CSV exports full payment history
- Empty state with Browse Invoices CTA
- Responsive: table on desktop, card list on mobile
- SkeletonPaymentRow placeholder during loading
- Redirects to home if wallet is not connected

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- wallet, invoice, and UI Zustand stores in src/lib/stores/
- devtools middleware applied to all stores with explicit names:
  WalletStore, InvoiceStore, UIStore
- immer middleware alongside devtools for ergonomic nested updates
- DevTools enabled only in development (enabled: process.env.NODE_ENV === 'development')
- Named set calls for every action (e.g. "wallet/setConnected")
- 13 new store unit tests covering all state transitions
- CONTRIBUTING.md: "Debugging state with Redux DevTools" section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- SkeletonPaymentRow: matches payment history table row / mobile card
- SkeletonLeaderboardRow: matches leaderboard row layout
- SkeletonCreatorProfile: avatar + name + 3-stat grid
- SkeletonDashboardStats: 4-card dashboard stats grid
- InvoiceListSkeleton now accepts count prop (default 6)
- DeferredSkeleton wrapper: suppresses skeleton if data loads < 200ms
- useDeferredShow hook: 200ms delay before showing skeleton
- All new skeletons have aria-busy="true" and aria-label="Loading..."
- shimmer uses animate-pulse (light + dark mode compatible)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- @sentry/nextjs installed and configured via sentry.{client,server,edge}.config.ts
- Sentry.init only called when NEXT_PUBLIC_SENTRY_DSN is set (disabled in dev)
- withSentryConfig wraps next.config.js for source map upload on build
- ErrorBoundary dynamically imports Sentry, calls captureException, displays event ID
- "Something went wrong" fallback now shows Reload Page + Go to Dashboard buttons
- Route-level error.tsx boundaries in /invoice/[id] and /dashboard
- /payments/error.tsx added with route-level Sentry capture
- Pre-existing bugs fixed: duplicate useRouter in DashboardClient, unclosed Link tag,
  missing JSX sibling wrapper, undefined canvas reference in timelineImageExport,
  missing "reminder" and "expired" notification types, mismatched ref type

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 29, 2026

Copy link
Copy Markdown

@lonerthefirst3-sudo is attempting to deploy a commit to the kingsman-99's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Jun 29, 2026

Copy link
Copy Markdown

@lonerthefirst3-sudo Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant