Description
Users reviewing a single invoice cannot see how each recipient's payment obligation was fulfilled over time—whether by a lump sum or multiple partial payments—because no per-recipient timeline exists within the invoice view. A collapsible history panel for each recipient row on the detail page should surface this data.
Technical Context
src/components/invoice/RecipientRow.tsx adds a chevron toggle that expands an inline src/components/invoice/RecipientPaymentHistory.tsx (new) panel. The panel fetches from src/app/api/invoices/[id]/recipients/[recipientId]/history/route.ts (new), which queries Horizon for payment and path_payment operations filtered to the recipient's address and the invoice's escrow account. Each history entry shows the operation hash, amount, and timestamp using RelativeTime (Issue 52) and TxHash (Issue 30).
Acceptance Criteria
Description
Users reviewing a single invoice cannot see how each recipient's payment obligation was fulfilled over time—whether by a lump sum or multiple partial payments—because no per-recipient timeline exists within the invoice view. A collapsible history panel for each recipient row on the detail page should surface this data.
Technical Context
src/components/invoice/RecipientRow.tsxadds a chevron toggle that expands an inlinesrc/components/invoice/RecipientPaymentHistory.tsx(new) panel. The panel fetches fromsrc/app/api/invoices/[id]/recipients/[recipientId]/history/route.ts(new), which queries Horizon forpaymentandpath_paymentoperations filtered to the recipient's address and the invoice's escrow account. Each history entry shows the operation hash, amount, and timestamp usingRelativeTime(Issue 52) andTxHash(Issue 30).Acceptance Criteria
src/app/invoice/[id]/page.tsxhas a chevron that expands a payment history panelTxHashcomponent