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.
Sebuah sebutan juga menjangkau anggota yang disebut lewat email jika mereka menyalakan Sebutan di kanal di Pengaturan → Notifikasi dan administrator telah menyiapkan server email keluar (lihat Notifikasi).
Context maksimum 30 pesan.
Alat chat kini terhubung: saat anggota yang menyebut lolos gerbang fitur alat dan memiliki katalog yang tidak kosong, jawabannya menjalankan loop alat multi-ronde yang sama seperti giliran chat, terhadap server alat dan alat bawaan milik anggota itu sendiri. Sebuah channel tidak mengikat persona, sehingga tidak ada pengikatan alat persona yang mempersempit katalog.
Tidak ada yang mengawasi sebuah sebutan sebagaimana seseorang mengawasi chat, sehingga panggilan alat berefek samping langsung ditolak kecuali anggota itu sudah memegang persetujuan tetap untuknya. Jawabannya menyebutkan hal itu, dan model diberi tahu untuk menjalankannya dari chat sebagai gantinya. Alat hanya baca berjalan tanpa bertanya, persis seperti di chat. Persetujuan tetap dibatasi per channel: keputusan "izinkan untuk chat ini" tidak pernah terbawa ke sebuah channel, dan persetujuan per-channel tidak pernah bocor ke channel lain atau ke chat. Karena hanya pekerjaan hanya-baca yang dapat berjalan tanpa pengawasan, tugas sebutan yang dicoba ulang aman untuk diulang.
Jawabannya membawa ringkasan terbatas dari panggilan yang dibuatnya (maksimal 12, dengan argumen dan pratinjau hasil yang dipotong), ditampilkan sebagai pengungkapan "Alat dipakai" di bawah pesan. Pengambilan knowledge dan pencarian web masih belum terhubung ke sebutan channel.
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.