Skip to content

feat(payment): #4 offline payment-queue management UI#141

Merged
TortoiseWolfe merged 1 commit into
mainfrom
feat/4-payment-offline-ui
Jun 6, 2026
Merged

feat(payment): #4 offline payment-queue management UI#141
TortoiseWolfe merged 1 commit into
mainfrom
feat/4-payment-offline-ui

Conversation

@TortoiseWolfe

Copy link
Copy Markdown
Owner

Closes #4.

What

The offline payment queue (paymentQueue, IndexedDB via Dexie) shipped long ago but had no user-facing controlsOfflineRetryBanner is display-only and mounted only on /payment-result. This adds the management layer the issue asked for, on top of the existing backend (no new backend, no creds).

  • PaymentQueuePanel (5-file molecular) — live online/offline/syncing status badge; queued-item list with per-item retry count (Attempt N/5Max retries at the cap) + last error; a manual Retry now (paymentQueue.retryFailed() + sync(), disabled when offline or empty); and Clear queue behind an inline confirmation (paymentQueue.clear()). Targets paymentQueue specifically — NOT the separate messaging queue.
  • Wired into /payment/dashboard behind the existing provider feature-flag gate.

E2E

  • Un-skipped a real "queue UI renders on the dashboard" test (no creds — the queue is client-side).
  • Rewrote the 8 stale "… UI not yet implemented" skip reasons in 05-offline-queue.spec.ts to the actual remaining blocker: a queue-seed fixture (Dexie) or provider creds to populate the queue. The UI itself now exists — the honest accounting is "needs a seed fixture," not "not implemented."

Verification

  • type-check / lint / structure (110/110) / build green.
  • 7 component tests: empty state, item + retry-count rendering (incl. Max-retries cap), retry→retryFailed+sync, offline-disables-retry, clear-needs-confirmation. Plus 2 a11y (empty + populated, zero axe violations).

🤖 Generated with Claude Code

The offline payment queue (paymentQueue, IndexedDB) shipped long ago but had no
user-facing controls — OfflineRetryBanner is display-only and lives only on
/payment-result. This adds the management layer:

- PaymentQueuePanel (5-file molecular): live online/offline/syncing status,
  queued items with per-item retry count (Attempt N/5 → "Max retries" at the
  cap), a manual "Retry now" (paymentQueue.retryFailed + sync, disabled offline
  / when empty), and a "Clear queue" behind an inline confirmation
  (paymentQueue.clear). Targets paymentQueue, not the messaging queue.
- Wired into /payment/dashboard behind the existing provider feature-flag gate.
- E2E: un-skipped a real "queue UI renders on the dashboard" test (no creds
  needed — the queue is client-side); rewrote the 8 stale "UI not yet
  implemented" skip reasons to the actual remaining blocker (a queue-seed
  fixture / provider creds), since the UI now exists.

Verification: type-check, lint, structure (110/110), build green; 7 component
tests (empty state, item+retry-count rendering, retry→retryFailed+sync,
offline-disables-retry, clear-needs-confirmation) pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@TortoiseWolfe TortoiseWolfe merged commit 429fcd7 into main Jun 6, 2026
18 checks passed
@TortoiseWolfe TortoiseWolfe deleted the feat/4-payment-offline-ui branch June 6, 2026 12:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Eval-Backlog] PAYMENT-OFFLINE-UI: UI layer for existing offline payment queue

2 participants