Lewati ke konten utama

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

TipeYang melihatYang bergabung
publicSemuaMandiri
privateHanya anggotaDiundang owner
dmDua orangOtomatis

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.