Channel
Channel thêm phòng public/private và DM vào Libre WebUI, với thread, reaction, pin, unread state, attachment và trả lời @model trên chat durable được mã hóa.
Loại và thành viên
| Loại | Ai xem | Ai tham gia |
|---|---|---|
public | Mọi người | Tự tham gia |
private | Chỉ thành viên | Owner mời |
dm | Hai người | Tự động |
Access chỉ do membership quyết định: mọi read, write, download và event đều kiểm tra; outsider nhận 404 mà không lộ tồn tại. Global administrator không đọc được content.
Owner có thể rename, archive, invite, remove, moderate và delete. Owner chỉ rời bằng cách xóa channel. DM được deduplicate theo cặp.
Timeline
Timeline durable có thứ tự với cursor keyset created_at và ID.
- Post idempotent theo client ID.
- Tombstone deletion xóa content nhưng giữ vị trí.
- Editing chỉ author, có
editedAt. - Thread một level.
- Reaction unique theo cặp user/emoji.
- Pin do member quản lý.
Tên, mô tả và message được mã hóa.
Chưa đọc
Mỗi membership có cursor monotonic. Server đếm theo channel; message của mình không unread. POST /api/channels/:channelId/read chỉ tiến lên.
Real time
Thay đổi vào channel:<id> và SSE GET /api/channels/:channelId/events. Membership được kiểm tra trước mỗi delivery. SQL là nguồn sự thật; event bỏ lỡ được recover bằng read lại.
Attachment
POST /api/channels/:channelId/attachments tạo claim một lần trong 15 phút. Byte thuộc uploader; mỗi download kiểm tra membership.
Trả lời @model
Trả lời xuất hiện pending ngay và được durable job hoàn tất chỉ dưới danh nghĩa member gọi: access, credentials và routing của họ. Membership được kiểm tra trước generation; error hiển thị.
Context tối đa 30 message. One-shot completion; tool, knowledge và web search chưa nối.
Giới hạn
50 channel/user, 200 member, 50.000 message, 8.000 ký tự, 5 × 10 MB attachment, 200 reaction.
Hạn chế
Không có presence/typing, xuất channel riêng hay cài đặt notification theo channel ngoài rời channel.