Skip to content

Add retry stats, form validation, column resize, and user activity timeline#534

Open
miss-yusrah wants to merge 1 commit into
Core-Foundry:mainfrom
miss-yusrah:feature/ux-stats
Open

Add retry stats, form validation, column resize, and user activity timeline#534
miss-yusrah wants to merge 1 commit into
Core-Foundry:mainfrom
miss-yusrah:feature/ux-stats

Conversation

@miss-yusrah

Copy link
Copy Markdown
Contributor

closes #487
closes #498
closes #501
closes #506

Summary

  • Notification retry statistics: Record and expose retry counts via calculation helpers, API endpoints (/api/schedule/execution-metrics, /retry-distribution, /retry-statistics), and a dashboard Retry Stats panel with distribution breakdown.
  • Form validation feedback: Inline validation on the subscription form (and preference contact fields) with immediate messages, field highlighting, and accessible aria-invalid / aria-describedby / role="alert" wiring.
  • Table column resizing: Event Explorer columns are resizable with stable grid layout; widths persist in localStorage.
  • User activity timeline: New chronological timeline for subscription/notification management actions, including empty-state handling and dashboard tab.

What changed

Task 1 — Notification Retry Statistics

  • Added listener/src/services/retry-statistics.ts with pure calc helpers and payload builder.
  • Wired metrics endpoints in events-server.ts and NotificationAPI.getRetryStatistics().
  • Added dashboard RetryStatisticsPanel + API client + unit/UI tests.

Task 2 — Form Validation Feedback

  • SubscriptionForm validates on blur/submit; invalid fields are highlighted immediately.
  • Preference email/Telegram fields now use accessible inline errors.
  • Expanded frontend validation tests.

Task 3 — Table Column Resizing

  • EventExplorerTable supports drag resize handles, CSS grid stability, and persisted widths.
  • Added helper/UI tests for load/persist/clamp behavior.

Task 4 — User Activity Timeline

  • Added UserActivityTimeline + userActivityApi with chronological sorting and empty state.
  • Exposed under the User Activity dashboard tab.

Test plan

  • listener: npm test -- --testPathPattern=retry-statistics
  • dashboard: npm test -- --testPathPattern='RetryStatisticsPanel|EventExplorerTable|UserActivityTimeline|retryStatistics'
  • frontend: npx vitest run src/components/__tests__/SubscriptionForm.test.tsx
  • Manually open dashboard tabs: Retry Stats, User Activity, resize Event Explorer columns and reload to confirm persistence
  • Confirm subscription form shows inline errors on blur for short group name / invalid usages

Notes

  • Branch: feature/ux-stats
  • Do not commit frontend/node_modules/ if it appears untracked
  • No commit/push performed (per request)

…meline

Co-authored-by: Cursor <cursoragent@cursor.com>
@drips-wave

drips-wave Bot commented Jul 26, 2026

Copy link
Copy Markdown

@miss-yusrah 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

Development

Successfully merging this pull request may close these issues.

Add User Activity Timeline Improve Table Column Resizing Improve Form Validation Feedback Add Notification Retry Statistics

1 participant