thePR0M3TH3AN and Claude Opus 4.8
de515462e6
fix(feed): always reserve live default relays in the feed set
...
The video feed's getDefaultRelays only fell back to bitvid's default relays
when the healthy set was COMPLETELY empty. A user whose own relays are all dead
but not yet probed (so they still pass the liveness filter) would have the feed
subscribe to that fully-broken list and hang forever on "Fetching…" — the
default aggregators were never injected.
Route the healthy set through capReadRelays (via new buildFeedRelaySet), which
always reserves a couple of reliable aggregator slots. Now the feed can reach
live relays regardless of how broken the user's personal list is, while still
prioritizing the user's own relays and bounding REQ fan-out to MAX_SUBSCRIBE_RELAYS.
Tests (buildFeedRelaySet): an all-dead user list still yields a default
aggregator while keeping the user's relays; empty input falls back to defaults;
an empty healthy set uses the configured fallback yet still reserves defaults; a
huge list stays bounded. Mutation-verified — reverting to the old
healthy-or-defaults logic fails 3 of the 4 scenarios.
Build + full lint green.
Co-Authored-By: Claude Opus 4.8 <[email protected] >
2026-06-20 12:14:03 -04:00
..
2026-06-15 08:49:05 -04:00
2026-02-08 00:33:13 +00:00
2026-02-26 21:40:23 -05:00
2026-02-08 00:41:34 +00:00
2026-02-05 03:00:29 +00:00
2026-06-17 05:56:38 -04:00
2026-02-21 20:45:47 -05:00
2026-02-08 03:41:50 +00:00
2026-02-08 01:29:09 +00:00
2026-06-14 15:04:40 -04:00
2026-06-18 20:32:50 -04:00
2026-02-18 17:07:47 +00:00
2026-02-11 12:01:39 +00:00
2026-02-14 13:22:43 +00:00
2026-06-18 12:15:38 -04:00
2026-02-08 00:33:27 +00:00
2026-02-05 23:04:21 +00:00
2025-10-15 14:54:24 -04:00
2026-06-18 12:15:27 -04:00
2026-02-23 01:16:32 +00:00
2026-02-26 17:44:51 +00:00
2026-03-04 12:25:23 -05:00
2026-02-12 14:36:45 +00:00
2026-02-22 18:33:41 +00:00
2026-06-14 16:15:06 -04:00
2026-01-24 11:44:16 +00:00
2026-02-12 14:36:45 +00:00
2026-02-12 14:42:51 +00:00
2026-02-05 17:00:13 +00:00
2026-02-08 02:00:10 +00:00
2026-02-26 17:36:00 +00:00
2026-01-13 20:32:06 +00:00
2026-06-18 13:55:03 -04:00
2026-06-18 12:15:14 -04:00
2025-10-14 13:31:22 -04:00
2026-06-18 12:15:46 -04:00
2026-02-21 16:45:16 -05:00
2026-06-16 15:07:14 -04:00
2026-02-08 03:41:19 +00:00
2026-06-16 14:52:11 -04:00
2026-02-26 17:45:31 +00:00
2025-10-26 19:23:40 -04:00
2026-01-20 12:39:19 +00:00
2025-10-27 18:19:14 -04:00
2026-06-20 09:09:07 -04:00
2026-06-20 09:32:30 -04:00
2026-01-24 21:42:37 +00:00
2026-06-20 07:39:05 -04:00
2026-01-23 05:33:57 +00:00
2025-10-26 12:05:03 -04:00
2026-06-20 12:14:03 -04:00
2026-06-14 16:57:05 -04:00
2026-02-08 00:22:16 +00:00
2026-06-17 12:13:58 -04:00
2026-02-26 17:38:30 +00:00
2026-02-17 04:52:40 +00:00
2026-02-09 23:22:49 -05:00
2025-10-14 08:48:17 -04:00
2026-02-15 20:18:30 +00:00
2026-02-27 03:43:14 +00:00
2026-02-14 18:58:02 +00:00
2026-02-01 21:47:29 +00:00
2025-10-26 16:06:40 -04:00
2026-02-01 21:47:29 +00:00
2026-06-19 08:52:11 -04:00
2026-06-16 20:15:17 -04:00
2026-02-21 16:08:33 -05:00
2026-06-14 09:52:33 -04:00
2026-06-18 15:53:56 -04:00
2026-01-06 15:32:21 -05:00
2026-01-06 15:32:21 -05:00
2025-10-08 16:39:30 -04:00
2025-11-03 14:35:43 -05:00
2026-01-06 15:32:21 -05:00
2026-06-12 11:16:25 -04:00
2025-10-22 07:18:25 -04:00
2026-02-21 15:53:09 -05:00
2026-01-27 11:54:02 +00:00
2026-02-09 21:32:29 +00:00
2026-06-20 08:27:21 -04:00
2026-06-16 20:28:27 -04:00
2026-01-06 15:32:21 -05:00
2025-10-22 15:48:59 -04:00
2026-03-04 12:25:23 -05:00
2026-06-12 14:31:38 -04:00
2026-01-31 10:33:50 +00:00
2026-01-29 11:53:42 +00:00
2026-02-09 15:33:21 +00:00
2025-10-22 22:17:30 -04:00
2026-01-06 15:36:37 -05:00
2026-06-18 15:40:16 -04:00
2025-10-29 06:52:30 -04:00
2025-10-21 17:46:41 -04:00
2026-06-18 12:15:27 -04:00
2026-01-14 03:52:53 +00:00
2026-06-19 08:04:54 -04:00
2026-02-05 22:59:50 +00:00
2026-02-18 15:10:29 +00:00
2026-02-26 17:42:43 +00:00
2025-10-29 22:14:20 -04:00
2026-06-20 08:27:41 -04:00
2026-06-20 08:27:41 -04:00
2026-06-14 22:51:36 -04:00
2026-01-27 03:20:08 +00:00
2025-10-02 12:48:24 -04:00
2026-01-22 22:50:00 -05:00
2026-01-25 03:34:10 +00:00
2026-01-29 11:53:42 +00:00
2026-06-16 14:18:46 -04:00
2026-02-26 17:42:07 +00:00
2026-06-16 22:09:57 -04:00
2026-06-16 16:56:12 -04:00
2026-06-17 05:35:02 -04:00
2025-10-20 21:15:47 -04:00
2026-06-16 09:53:52 -04:00
2026-01-27 02:09:22 +00:00
2026-06-14 22:51:36 -04:00
2026-02-08 03:34:20 +00:00
2025-10-16 16:43:58 -04:00
2026-02-26 17:41:34 +00:00
2026-02-08 03:44:38 +00:00
2026-02-28 19:48:57 +00:00
2026-01-30 03:40:36 +00:00
2026-01-27 03:54:41 +00:00
2026-01-27 02:09:22 +00:00
2025-10-23 13:43:05 -04:00
2026-02-08 03:44:38 +00:00
2026-06-18 20:32:50 -04:00
2025-10-29 17:06:19 -04:00
2026-01-06 15:32:21 -05:00
2026-01-29 03:19:06 +00:00
2026-06-14 15:49:50 -04:00
2026-01-07 00:43:18 +00:00
2026-06-17 18:23:10 -04:00
2025-10-04 17:25:43 -04:00
2026-02-26 18:02:18 +00:00
2026-06-13 08:00:28 -04:00
2026-06-18 16:05:54 -04:00
2026-02-01 19:35:02 +00:00
2025-10-05 22:03:07 -04:00
2026-01-06 15:32:21 -05:00