Channel
Channel menambahkan ruang publik/privat dan pesan langsung ke Libre WebUI, dengan thread, reaction, pin, unread state, attachment, dan jawaban @model di atas chat durable terenkripsi.
Tipe dan keanggotaan
| Tipe | Yang melihat | Yang bergabung |
|---|---|---|
public | Semua | Mandiri |
private | Hanya anggota | Diundang owner |
dm | Dua orang | Otomatis |
Akses hanya ditentukan keanggotaan: semua read, write, download, dan event memeriksanya; outsider menerima 404 tanpa mengungkap keberadaan. Administrator global tidak dapat membaca isi.
Owner dapat rename, archive, invite, remove, moderate, dan delete. Owner hanya keluar dengan menghapus channel. DM dideduplikasi per pasangan.
Timeline
Timeline durable terurut dengan cursor keyset created_at dan ID.
- Post idempoten berdasarkan ID client.
- Tombstone deletion membersihkan isi tetapi mempertahankan posisi.
- Editing hanya oleh author dengan
editedAt. - Thread satu level.
- Reaction unik per pasangan pengguna dan emoji.
- Pin dikelola anggota.
Nama, deskripsi, dan pesan dienkripsi.
Belum dibaca
Setiap keanggotaan memiliki cursor monotonik. Server menghitung per channel; pesan sendiri tidak dianggap belum dibaca. POST /api/channels/:channelId/read hanya bergerak maju.
Waktu nyata
Perubahan masuk ke channel:<id> dan SSE GET /api/channels/:channelId/events. Keanggotaan diperiksa sebelum setiap pengiriman. SQL adalah sumber kebenaran; event terlewat dipulihkan dengan membaca ulang.
Attachment
POST /api/channels/:channelId/attachments membuat claim sekali pakai selama 15 menit. Byte dimiliki uploader; setiap download memeriksa keanggotaan.
Jawaban @model
Jawaban langsung muncul pending dan diselesaikan durable job hanya sebagai anggota yang memanggil: akses, credentials, dan routing miliknya. Keanggotaan diperiksa sebelum generation; error terlihat.
Context maksimum 30 pesan. One-shot completion; alat, knowledge, dan web search belum terhubung.
Batas
50 channel per pengguna, 200 anggota, 50.000 pesan, 8.000 karakter, 5 × 10 MB attachment, 200 reaction.
Keterbatasan
Tidak ada presence/typing, ekspor channel terpisah, atau pengaturan notifikasi per channel selain keluar.