Skip to content

feat: VirtualList, offline indicator, structured logging, Prometheus metrics (#491–#494)#623

Merged
Mystery-CLI merged 1 commit into
Ethereal-Future:mainfrom
victorisiguzoruzoma874:feat/issues-491-494-virtual-list-sw-logging-prometheus
May 30, 2026
Merged

feat: VirtualList, offline indicator, structured logging, Prometheus metrics (#491–#494)#623
Mystery-CLI merged 1 commit into
Ethereal-Future:mainfrom
victorisiguzoruzoma874:feat/issues-491-494-virtual-list-sw-logging-prometheus

Conversation

@victorisiguzoruzoma874
Copy link
Copy Markdown
Contributor

Summary

  • Optimise the VirtualList component for large transaction sets #491 — Integrates VirtualList (backed by @tanstack/react-virtual) into TransactionHistory.jsx; the plain DOM loop is replaced with a windowed list capped at 480 px, rendering only visible rows so large transaction sets stay smooth.
  • Add service worker caching strategy for offline support #492 — Adds OfflineIndicator component that listens to browser online/offline events and displays a fixed toast when the user loses connectivity; the service worker already implements cache-first for static assets, network-first for API calls, and background-sync replay of queued payments.
  • Add structured logging with request context to all service files #493 — Exports withContext(logger, ctx) from logger.js (thin wrapper over Winston's logger.child(ctx)); applies it with the standard { correlationId, userId, action, durationMs } shape to key log calls in stellar.js, streaming.js, and transactions.js.
  • Add Prometheus metrics for business-level KPIs #494 — Adds business counters (payments_total, payments_failed_total, accounts_created_total), gauges (active_streams, pending_multisig_transactions), and histograms (payment_amount_xlm, stellar_api_duration_seconds) to metrics.js; GET /api/metrics now returns Prometheus text format when Accept: text/plain; adds docs/grafana-dashboard.json reference dashboard covering all new KPIs.

Closes

Closes #491
Closes #492
Closes #493
Closes #494

🤖 Generated with Claude Code

… metrics

Closes Ethereal-Future#491 — Integrates VirtualList (@tanstack/react-virtual) into
TransactionHistory.jsx, replacing the plain DOM render loop with a
windowed list capped at 480px so large transaction sets stay at 60fps.

Closes Ethereal-Future#492 — Adds OfflineIndicator component (listens to browser
online/offline events) rendered at the app root; SW already implements
cache-first for static assets and network-first for API calls with
background sync replay.

Closes Ethereal-Future#493 — Exports withContext(logger, ctx) from logger.js creating
a child logger pre-bound with { correlationId, userId, action, durationMs };
applied to key log calls in stellar.js, streaming.js, and transactions.js.

Closes Ethereal-Future#494 — Adds business counters (payments_total, payments_failed_total,
accounts_created_total), gauges (active_streams, pending_multisig_transactions),
and histograms (payment_amount_xlm, stellar_api_duration_seconds) to metrics.js;
GET /api/metrics now returns Prometheus text format when Accept: text/plain;
adds docs/grafana-dashboard.json reference dashboard.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented May 30, 2026

@victorisiguzoruzoma874 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

@Mystery-CLI Mystery-CLI merged commit f842354 into Ethereal-Future:main May 30, 2026
7 of 30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants