nntrivi2001
21a042dc2b
feat(chat): direct chats and groups between users in the pet's window
...
Server mode: a rail beside the pet's chat lists the pet, then the user's
direct chats (one per pair) and groups with unread counts, and + for a new
chat. A room shows its messages (group senders named), loads older pages,
and sends text, pasted / dropped / attached files (<= 10 x 25 MB; images
inline). A group's creator renames it and adds or removes people; anyone may
leave. A blue dot on the pet counts unread messages.
Only a room's members read or write it, an admin included (roomFor → 404).
Files are stored under server-made names in <data dir>/chat/<room>/ and
served to members only under a sandbox CSP + nosniff. chat_message /
chat_room frames reach exactly the ids in `to` (scope.exactAudience).
New tables chat_rooms / chat_members / chat_messages / chat_files (additive).
2026-11-03 09:33:33 +07:00
..
2026-09-18 16:52:05 +07:00
2026-10-28 10:41:53 +07:00
2026-10-26 08:32:45 +07:00
2026-10-14 16:06:54 +07:00
2026-10-01 13:39:17 +07:00
2026-09-29 08:25:37 +07:00
2026-10-26 11:18:05 +07:00
2026-10-01 13:39:17 +07:00
2026-10-20 16:44:55 +07:00
2026-09-29 08:25:37 +07:00
2026-10-23 16:41:45 +07:00
2026-10-06 17:12:28 +07:00
2026-09-29 16:09:19 +07:00
2026-09-29 16:09:19 +07:00
2026-10-21 15:44:17 +07:00
2026-09-07 12:09:15 +07:00
2026-10-30 15:22:19 +07:00
2026-10-22 10:04:30 +07:00
2026-11-02 16:40:29 +07:00
2026-10-08 12:22:14 +07:00
2026-10-22 14:34:50 +07:00
2026-10-22 14:34:50 +07:00
2026-10-22 14:34:50 +07:00
2026-10-16 10:20:09 +07:00
2026-10-07 14:11:25 +07:00
2026-10-26 14:22:41 +07:00
2026-10-26 14:22:41 +07:00
2026-10-26 14:22:41 +07:00
2026-10-26 14:22:41 +07:00
2026-10-28 15:09:30 +07:00
2026-10-26 14:22:41 +07:00
2026-10-26 14:22:41 +07:00
2026-09-10 16:05:07 +07:00
2026-10-28 15:09:30 +07:00
2026-09-07 08:32:19 +07:00
2026-11-03 09:33:33 +07:00
2026-09-07 12:09:15 +07:00
2026-10-09 14:57:10 +07:00
2026-10-28 15:09:30 +07:00
2026-11-02 10:47:51 +07:00
2026-11-02 10:47:51 +07:00
2026-09-09 01:29:17 +07:00
2026-10-09 14:57:10 +07:00
2026-09-29 16:09:19 +07:00
2026-09-29 16:09:19 +07:00
2026-10-09 14:57:10 +07:00
2026-09-09 08:30:45 +07:00
2026-10-30 16:06:20 +07:00
2026-10-28 10:41:53 +07:00
2026-10-08 12:22:14 +07:00
2026-09-09 08:30:45 +07:00
2026-10-28 10:41:53 +07:00
2026-10-21 15:44:17 +07:00
2026-10-14 16:06:54 +07:00
2026-10-06 17:12:28 +07:00
2026-10-21 15:44:17 +07:00
2026-10-08 23:04:57 +07:00
2026-10-16 10:20:38 +07:00
2026-10-26 11:18:05 +07:00
2026-10-09 14:57:10 +07:00
2026-10-06 17:12:28 +07:00
2026-11-02 16:12:57 +07:00
2026-10-26 11:18:05 +07:00
2026-10-09 14:57:10 +07:00
2026-11-02 12:12:45 +07:00
2026-09-25 10:44:40 +07:00
2026-10-14 12:21:55 +07:00
2026-10-30 13:05:13 +07:00
2026-10-09 14:57:10 +07:00
2026-11-02 12:22:46 +07:00
2026-11-02 16:49:27 +07:00
2026-11-02 12:22:46 +07:00
2026-11-02 12:22:46 +07:00
2026-11-02 12:00:55 +07:00
2026-11-02 12:12:45 +07:00
2026-10-19 17:13:26 +07:00
2026-10-09 14:57:10 +07:00
2026-10-29 13:40:28 +07:00
2026-10-14 11:55:53 +07:00
2026-10-19 16:49:59 +07:00
2026-10-09 14:57:10 +07:00
2026-10-26 14:22:41 +07:00
2026-09-07 12:09:15 +07:00
2026-10-01 16:03:24 +07:00
2026-10-14 12:21:55 +07:00
2026-10-09 14:57:10 +07:00
2026-09-07 12:09:15 +07:00
2026-07-30 14:39:03 +07:00
2026-09-25 17:30:28 +07:00
2026-09-18 09:44:17 +07:00
2026-09-07 12:09:15 +07:00
2026-10-01 16:03:24 +07:00
2026-09-07 12:09:15 +07:00
2026-10-01 16:03:24 +07:00
2026-10-16 13:38:09 +07:00
2026-10-01 16:03:24 +07:00
2026-11-02 10:11:47 +07:00
2026-10-15 16:02:11 +07:00
2026-10-27 16:39:38 +07:00
2026-10-09 14:57:10 +07:00
2026-10-15 14:44:47 +07:00
2026-10-07 14:11:25 +07:00
2026-10-12 15:40:51 +07:00
2026-10-23 16:41:45 +07:00
2026-10-26 17:12:02 +07:00
2026-10-28 14:31:11 +07:00
2026-10-19 16:49:59 +07:00
2026-10-14 11:55:53 +07:00
2026-10-14 17:21:33 +07:00
2026-10-26 14:22:41 +07:00
2026-10-23 10:44:11 +07:00
2026-10-22 17:02:08 +07:00
2026-10-27 16:39:38 +07:00
2026-08-04 10:03:40 +07:00
2026-10-08 23:04:57 +07:00
2026-10-08 12:22:14 +07:00
2026-10-06 17:12:28 +07:00
2026-10-26 14:22:41 +07:00
2026-10-01 16:33:25 +07:00
2026-10-26 14:22:41 +07:00
2026-10-09 14:57:10 +07:00
2026-10-14 14:17:39 +07:00
2026-10-26 14:53:29 +07:00
2026-11-02 15:32:46 +07:00
2026-10-06 17:12:28 +07:00
2026-10-07 14:11:25 +07:00
2026-10-09 14:57:10 +07:00
2026-10-28 15:09:30 +07:00
2026-10-07 14:11:25 +07:00
2026-10-16 10:16:54 +07:00
2026-10-06 17:12:28 +07:00
2026-10-06 17:12:28 +07:00
2026-10-26 14:22:41 +07:00
2026-10-07 14:11:25 +07:00
2026-11-03 09:33:33 +07:00
2026-10-07 13:24:15 +07:00
2026-09-07 12:09:15 +07:00
2026-07-30 14:39:03 +07:00
2026-10-16 10:27:22 +07:00
2026-10-26 14:22:41 +07:00
2026-09-10 13:44:28 +07:00
2026-10-30 08:50:34 +07:00
2026-10-07 13:24:15 +07:00
2026-10-02 13:22:29 +07:00
2026-09-29 16:09:19 +07:00
2026-10-09 14:57:10 +07:00
2026-10-07 11:18:10 +07:00
2026-10-07 14:11:25 +07:00
2026-08-28 10:05:24 +07:00
2026-10-23 16:41:45 +07:00
2026-10-26 14:53:29 +07:00
2026-10-08 12:22:14 +07:00
2026-10-29 15:54:20 +07:00
2026-10-09 14:57:10 +07:00
2026-10-21 15:44:17 +07:00
2026-10-08 12:22:14 +07:00
2026-10-23 10:44:11 +07:00
2026-11-02 16:12:57 +07:00
2026-10-28 14:31:11 +07:00
2026-10-14 17:21:33 +07:00
2026-09-07 12:09:15 +07:00
2026-09-07 12:09:15 +07:00
2026-10-06 20:22:34 +07:00
2026-10-09 14:57:10 +07:00
2026-10-08 23:04:57 +07:00
2026-11-02 12:12:45 +07:00
2026-10-26 14:22:41 +07:00