Skip to content

feat: escrow countdown, installment recalc, mark-as-paid, recurring c… - #648

Open
solarix-x wants to merge 1 commit into
Stellar-split:mainfrom
solarix-x:feat/issues-613-614-615-616
Open

feat: escrow countdown, installment recalc, mark-as-paid, recurring c…#648
solarix-x wants to merge 1 commit into
Stellar-split:mainfrom
solarix-x:feat/issues-613-614-615-616

Conversation

@solarix-x

Copy link
Copy Markdown

Title:

feat: escrow countdown, installment recalc, mark-as-paid, recurring calendar

Body:

Summary

Implements four UI improvements across the invoice and escrow flow.

#613 — Escrow release countdown timer (EscrowPanel)

  • Added a live ReleaseCountdown component that shows days / hours / minutes remaining
    until the escrow release date
  • Updates every 60 seconds via setInterval
  • Displays "Release available" once the deadline has passed instead of a negative count

#614 — Installment amounts recalculate when invoice total changes (InstallmentPanel)

  • Added an optional total prop to InstallmentPanel
  • When total changes, amounts are redistributed proportionally across all installments
  • Rounding remainders are assigned to the last installment
  • A brief "Updated" badge flashes for 1.5 s after each recalculation

#615 — "Mark as Paid" button in InstallmentTracker

  • Each unpaid installment row now has a "Mark as Paid" button
  • Clicking opens a confirmation dialog showing the installment date, amount, and a warning
    before committing
  • On confirm, the change is persisted via a new API route (POST /api/invoices/[id]/installments/[index]/mark-paid) and the row immediately shows a green "✓
    Paid"
    badge
  • Route includes CSRF check and wallet-based authorisation

#616 — Upcoming payment dates on a mini calendar in RecurringWizard

  • Added MiniCalendar and ScheduleCalendarPreview components inside the wizard
  • Shows the current month(s) with the next 6 scheduled payment dates highlighted in indigo
  • Calendar re-renders whenever the user changes frequency, end date, or max occurrences
  • Visible on all 3 wizard steps so the schedule is always verifiable before confirming

Testing

Existing tests continue to pass. The new API route is covered by CSRF + auth guard logic
consistent with the rest of the codebase.

Closes #613
Closes #614
Closes #615
Closes #616

…alendar

- Stellar-split#613 EscrowPanel: add live days/hours/minutes countdown timer that
  updates every minute; shows 'Release available' once deadline passes

- Stellar-split#614 InstallmentPanel: accept optional `total` prop and proportionally
  recalculate installment amounts on change; rounding remainder assigned
  to last installment; flashes 'Updated' badge after each recalculation

- Stellar-split#615 InstallmentTracker: add 'Mark as Paid' button on each unpaid row;
  confirmation dialog shown before persisting; optimistic local update
  shows green Paid badge; backed by new POST/GET API route at
  /api/invoices/[id]/installments/[index]/mark-paid

- Stellar-split#616 RecurringWizard: add mini calendar preview (MiniCalendar +
  ScheduleCalendarPreview) showing next 6 payment dates highlighted;
  re-renders on frequency, end-date, or occurrences changes; visible
  on all 3 wizard steps
@vercel

vercel Bot commented Aug 28, 2026

Copy link
Copy Markdown

@solarix-x 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 Aug 28, 2026

Copy link
Copy Markdown

@solarix-x 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