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.

O mențiune ajunge și pe e-mail la membrul menționat, dacă acesta a activat Mențiuni în canale în Settings → Notificări și un administrator a configurat serverul de e-mail de ieșire (vezi Notificări).

Se folosesc până la 30 mesaje ca context.

Instrumentele de chat sunt integrate: când membrul care menționează trece de gate-ul funcției de instrumente și are un catalog nevid, răspunsul rulează aceeași buclă de instrumente pe mai multe runde ca o tură de chat, pe serverele și instrumentele integrate vizibile ale acelui membru. Un canal nu leagă nicio persona, deci nicio legare de instrumente de persona nu îngustează catalogul.

Nimeni nu urmărește o mențiune așa cum urmărește un chat, deci un apel de instrument cu efect secundar este refuzat direct dacă membrul nu are deja o aprobare permanentă pentru el. Răspunsul spune asta, iar modelul este instruit să îl ruleze dintr-un chat în schimb. Instrumentele numai-citire rulează fără să întrebe, exact ca în chat. Aprobările permanente sunt limitate per canal: o decizie "allow for this chat" nu se transferă niciodată într-un canal, iar o aprobare per canal nu se scurge niciodată în alt canal sau în chat. Pentru că numai lucrul numai-citire poate rula nesupravegheat, o reîncercare a jobului de mențiune e sigură.

Răspunsul poartă un rezumat limitat al apelurilor pe care le-a făcut (cel mult 12, cu argumente și previzualizări de rezultat trunchiate), afișat ca o dezvăluire "Tools used" sub mesaj. Knowledge și web search tot nu sunt integrate în mențiunile din canale.

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.