Канали
Канали додають до Libre WebUI публічні й приватні кімнати та особисті повідомлення з гілками, реакціями, закріпленнями, непрочитаним, вкладеннями й відповідями @model на довговічній зашифрованій основі чату.
Типи й участь
| Тип | Хто бачить | Хто приєднується |
|---|---|---|
public | Усі | Самостійно |
private | Лише учасники | Запрошує власник |
dm | Двоє | Автоматично |
Доступ визначає лише участь: усі читання, записи, завантаження й події перевіряють її; сторонні отримують 404 без розкриття існування. Глобальний адміністратор не має доступу до вмісту.
Власник перейменовує, архівує, запрошує, вилучає, модерує й видаляє. Він виходить лише видаленням каналу. DM дедуплікується для пари.
Хронологія
Довговічна впорядкована шкала з keyset-курсорами created_at та ID.
- Ідемпотентні дописи за ID клієнта.
- Видалення з надгробком очищає вміст, але зберігає позицію.
- Редагування лише автором з
editedAt. - Гілки одного рівня.
- Реакції унікальні для пари користувача й емодзі.
- Закріплення керуються учасниками.
Назви, описи й повідомлення шифруються.
Непрочитане
Кожна участь має монотонний курсор. Сервер рахує окремо для каналу; власні повідомлення не непрочитані. POST /api/channels/:channelId/read рухається лише вперед.
Реальний час
Зміни додаються до channel:<id> і SSE GET /api/channels/:channelId/events. Участь перевіряється перед кожною доставкою. SQL — джерело істини; пропущені події відновлюються перечитуванням.
Вкладення
POST /api/channels/:channelId/attachments, одноразова заявка на 15 хвилин. Байти належать завантажувачу, скачування щоразу перевіряє участь.
Відповіді @model
Відповідь одразу з’являється як очікувана й завершується довговічним завданням лише від імені учасника, що викликав: його доступ, credentials і routing. Перед генерацією участь перевіряється; помилки видимі.
Контекст — до 30 повідомлень. Одноразове completion; інструменти, знання й веб-пошук ще не під’єднані.
Ліміти
50 каналів на користувача, 200 учасників, 50 000 повідомлень, 8 000 символів, 5 × 10 MB вкладень, 200 реакцій.
Межі
Немає presence/typing, окремого експорту каналу або окремих налаштувань сповіщень, крім виходу.