Sari la conținutul principal

Canale

Canalele aduc conversații de echipă în Libre WebUI: camere publice/private și mesaje directe, cu fire, reacții, pins, necitite, atașamente și răspunsuri @model, pe aceeași bază persistentă criptată ca chat-ul.

Tipuri și membri

TipCine vedeCine intră
publicToți pot navigaOricine se înscrie
privateNumai membriiProprietarul invită
dmCei doi participanțiAutomat; exact doi

Calitatea de membru este singura autoritate: orice citire/scriere, download și eveniment o verifică. Non-membrii primesc 404 neenumerabil. Rolul global admin nu acordă acces.

Creatorul este proprietar și poate redenumi, arhiva, invita, elimina, modera și șterge. Proprietarul pleacă ștergând canalul. Există un singur DM per pereche.

Cronologie

Mesajele formează cronologie persistentă ordonată, citită în ambele direcții cu cursoare (created_at + ID), fără omisiuni sau duplicate.

  • Postări idempotente. Clientul dă identitatea; retry ajunge o singură dată.
  • Ștergere tombstone. Conținutul dispare, rândul rămâne, păstrând firele și ordinea. Autorii șterg proprii, proprietarii moderează toate.
  • Editări doar autor cu editedAt.
  • Fire de un nivel. Root poate avea răspunsuri, răspunsurile la răspuns se refuză.
  • Reacții per utilizator/emoji fără duplicate.
  • Pins administrate de membri.

Numele, descrierile și mesajele sunt criptate în repaus.

Necitite

Fiecare membru are cursor monoton. Backendul calculează per canal (propriile mesaje nu sunt necitite), iar POST /api/channels/:channelId/read avansează doar înainte.

Livrare live

Orice mutație intră în channel:<id> și se distribuie prin GET /api/channels/:channelId/events (SSE). Calitatea de membru se recontrolează la livrare, deci eliminarea închide fluxul. Cronologia SQL rămâne adevărul.

Atașamente

Fișierele se încarcă întâi prin POST /api/channels/:channelId/attachments, stau scurt în cache de claim și se atașează la postare. Claim-ul este de unică folosință și expiră în 15 minute. Blobul aparține uploaderului și downloadul reverifică membrul.

Răspunsuri @model

Composerul poate ținti modelul. Răspunsul apare pending și este finalizat de job persistent strict sub identitatea membrului apelant: acces, credentiale și routing proprii, niciodată ale altuia. Membrul eliminat din coadă nu îl păstrează; jobul verifică din nou și afișează eșec. Erorile apar pe răspuns.

Se folosesc până la 30 mesaje ca context. Sunt completări one-shot; unelte, knowledge și web search nu sunt încă integrate.

Limite

LimităValoare
Canale per utilizator50
Membri per canal200
Mesaje per canal50,000
Lungime mesaj8,000 caractere
Atașamente per mesaj5 × 10 MB
Reacții per mesaj200

Granițe

  • Prezența și typing nu sunt implementate.
  • Exportul și retention urmează backupul instanței; nu există export per canal.
  • Mențiunile folosesc serviciul de notificare; fără preferință per canal în afară de ieșire.