- Virtualize log list with react-virtuoso for 500-entry buffer performance
- Add ErrorEntry renderer for new ERROR log type (AlertTriangle icon)
- Show per-relay response time (e.g. "142ms", "2.3s") in publish details
- Make all entry types expandable (connect/disconnect now have details)
- Show absolute timestamp in all expanded detail views
- Group ERROR events under Connect tab filter
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add an ephemeral event log system that tracks relay operations:
- EventLogService (src/services/event-log.ts):
- Subscribes to PublishService for PUBLISH events with per-relay status
- Monitors relay pool for CONNECT/DISCONNECT events
- Tracks AUTH challenges and results
- Captures NOTICE messages from relays
- Uses RxJS BehaviorSubject for reactive updates
- Circular buffer with configurable max entries (default 500)
- useEventLog hook (src/hooks/useEventLog.ts):
- React hook for filtering and accessing log entries
- Filter by type, relay, or limit
- Retry failed relays directly from the hook
- EventLogViewer component (src/components/EventLogViewer.tsx):
- Tab-based filtering (All/Publish/Connect/Auth/Notice)
- Expandable PUBLISH entries showing per-relay status
- Click to retry failed relays
- Auto-scroll to new entries (pause on scroll)
- Clear log button
- LOG command accessible via Cmd+K palette