Duy /zuey/
f771cff77c
fix(channels): coalesce multi-attachment inbounds ( #63 ) ( #90 )
...
Implements 3 coalescing layers to handle rapid multi-attachment inbounds:
- Bus debouncer: delays inbound messages 1s, merges duplicates
- Web chat debouncer: buffers client-side inbound frames for batch RPC
- Telegram album aggregator: collects album members via AfterFunc+Stop timer
Drops media-bypass shortcut (forces 1s media floor). Aggregator enforces:
- AfterFunc+Stop timer discipline with ordered drain on stop
- 2-tuple (album_id, sender) keying for isolation
- Dual DoS caps: max 10 albums per sender, max 100 messages per album
- merged_message_ids dedup seeding across all 3 surfaces
Closes #63
2026-05-28 18:30:34 +07:00
..
2026-05-17 15:33:55 +07:00
2026-04-18 12:17:23 +07:00
2026-03-06 18:51:11 +07:00
2026-04-09 21:15:19 +07:00
2026-05-18 20:33:40 +07:00
2026-04-09 21:15:19 +07:00
2026-05-22 20:53:01 +07:00
2026-05-24 11:27:02 +07:00
2026-05-24 11:27:02 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-03-10 00:09:15 +07:00
2026-03-10 00:09:15 +07:00
2026-04-27 12:00:14 +07:00
2026-05-28 18:17:49 +07:00
2026-05-23 00:16:03 +07:00
2026-04-09 21:15:19 +07:00
2026-04-14 18:28:31 +07:00
2026-05-19 06:53:45 +07:00
2026-05-21 16:44:43 +07:00
2026-04-09 23:15:08 +07:00
2026-05-22 20:53:01 +07:00
2026-05-28 18:30:34 +07:00
2026-05-28 18:30:34 +07:00
2026-05-28 18:30:34 +07:00
2026-05-28 18:30:34 +07:00
2026-05-24 11:13:03 +07:00
2026-03-31 23:14:39 +07:00
2026-04-16 14:17:48 +07:00
2026-04-09 23:15:08 +07:00
2026-05-22 20:53:01 +07:00
2026-05-24 11:13:03 +07:00
2026-04-18 14:53:42 +07:00
2026-04-14 18:28:31 +07:00
2026-05-28 18:30:34 +07:00
2026-05-24 09:42:44 +07:00
2026-05-24 09:42:44 +07:00
2026-05-24 11:13:03 +07:00
2026-04-15 20:40:25 +07:00
2026-04-20 08:49:38 +07:00
2026-04-12 19:03:47 +07:00
2026-04-10 20:52:28 +07:00
2026-03-27 09:28:42 +07:00
2026-05-18 21:43:03 +07:00
2026-04-09 21:15:19 +07:00
2026-05-24 11:13:03 +07:00
2026-04-18 12:17:23 +07:00
2026-05-24 15:57:21 +07:00
2026-05-24 13:49:40 +07:00
2026-05-24 13:52:23 +07:00
2026-05-24 13:52:23 +07:00
2026-05-24 11:13:03 +07:00
2026-05-24 16:39:44 +07:00
2026-05-24 11:13:03 +07:00
2026-02-22 14:58:07 +07:00
2026-02-22 14:58:07 +07:00
2026-05-11 15:41:27 +07:00
2026-05-11 12:54:05 +07:00
2026-03-19 13:35:57 +07:00
2026-03-19 13:35:57 +07:00
2026-04-15 11:24:57 +07:00
2026-05-24 13:52:23 +07:00
2026-03-19 13:35:57 +07:00
2026-03-27 09:28:42 +07:00
2026-03-27 09:28:42 +07:00
2026-03-27 09:28:42 +07:00
2026-03-31 11:45:16 +07:00
2026-04-16 14:17:48 +07:00
2026-05-24 15:57:21 +07:00
2026-05-24 11:27:02 +07:00
2026-05-19 06:53:45 +07:00
2026-02-22 14:58:07 +07:00
2026-04-04 06:58:15 +07:00
2026-04-19 15:00:07 +07:00
2026-05-24 15:57:21 +07:00
2026-04-18 16:55:08 +07:00
2026-04-18 16:55:08 +07:00
2026-03-11 07:27:38 +07:00
2026-03-09 22:28:18 +07:00
2026-04-09 21:15:19 +07:00
2026-03-10 00:09:15 +07:00
2026-03-07 00:46:29 +07:00
2026-04-27 12:00:11 +07:00
2026-04-09 21:15:19 +07:00
2026-05-22 20:53:01 +07:00
2026-03-06 18:51:11 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-04-27 12:00:11 +07:00
2026-04-09 21:15:19 +07:00
2026-04-16 15:49:50 +07:00
2026-04-09 21:15:19 +07:00
2026-04-16 15:49:50 +07:00
2026-04-16 15:49:50 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-03-07 20:51:39 +07:00
2026-04-13 10:59:27 +07:00
2026-04-13 10:59:27 +07:00