Hoppa till huvudinnehåll

Kanaler

Kanaler för in teamkonversationer i Libre WebUI: publika och privata rum samt direktmeddelanden, med trådar, reaktioner, fästa meddelanden, spårning av olästa, filbilagor och @model-svar — allt på samma beständiga, krypterade grund som chatt.

Kanaltyper och medlemskap

TypVem kan se denVem går med
publicAlla kan bläddra i denVem som helst går med själv
privateEndast medlemmarÄgaren bjuder in medlemmar
dmEndast de två deltagarnaÖppnas automatiskt; alltid exakt två personer

Medlemskap är den enda behörigheten för kanalinnehåll. Varje läsning och skrivning — inklusive hämtning av bilagor och leverans av direkthändelser — kontrollerar först anroparens medlemskap. Icke-medlemmar får ett 404-svar som inte avslöjar om resursen finns. Den globala administratörsrollen ger avsiktligt ingen åtkomst till kanalinnehåll.

Skaparen av en publik eller privat kanal är dess ägare. Ägare kan byta namn, arkivera, bjuda in (privat), ta bort medlemmar, moderera meddelanden och radera kanalen. En ägare lämnar genom att radera kanalen, aldrig genom att överge den. Det finns bara en direktmeddelandekanal per deltagarpar: om du öppnar ett DM med samma person hamnar du alltid i samma konversation.

Tidslinjen

Meddelanden bildar en beständig, ordnad tidslinje som läses med nyckelbaserade markörer (created_at plus meddelande-ID) i båda riktningarna, så sidindelning aldrig hoppar över eller duplicerar poster.

  • Idempotenta inlägg. Klienten anger meddelandets identitet. En förfrågan som görs om hamnar exakt en gång på samma tidslinjepost.
  • Borttagning med gravsten. När ett meddelande tas bort rensas innehållet men tidslinjeposten behålls, så trådar aldrig blir lösa och ordningen inte ändras. Författare raderar egna meddelanden, och kanalägare kan moderera alla.
  • Redigeringar är endast för författaren och har markören editedAt.
  • Trådar har ett djup. Alla rotmeddelanden kan ha en tråd, men svar på svar avvisas. Rotmeddelanden visar aktuellt antal svar.
  • Reaktioner är per användare och emoji och räknas utan dubbletter.
  • Fästa meddelanden hanteras av medlemmar och listas per kanal.

Kanalnamn, beskrivningar och meddelandeinnehåll krypteras vid lagring med samma gräns som chattmeddelanden.

Oläst status

Varje medlemskap har en monotont ökande läsmarkör. Antalet olästa beräknas på serversidan per kanal (dina egna meddelanden är aldrig olästa), och POST /api/channels/:channelId/read flyttar markören framåt — aldrig bakåt — så en inaktuell klient kan inte göra lästa meddelanden olästa igen.

Realtidsleverans

Varje ändring i tidslinjen läggs till i den beständiga händelseströmmen channel:<id> och sprids över GET /api/channels/:channelId/events (SSE). Medlemskapet kontrolleras före varje leverans, så borttagning av en medlem stänger dess direktsändning säkert. SQL-tidslinjen förblir sanningskällan. En prenumerant som missat händelser läser bara tidslinjen igen — liggaren används för leverans, inte som sanning.

Bilagor

Filer laddas upp först (POST /api/channels/:channelId/attachments), placeras kort i en gemensam anspråkscache och bifogas när meddelandet publiceras. Ett uppladdningsanspråk kan användas en gång och löper ut efter 15 minuter om det inte tas i anspråk. Blobdata tillhör uppladdaren (dess kvot), och medlemskap kontrolleras på nytt vid varje hämtning.

@model-svar

Redigeraren kan rikta ett meddelande till en modell. Svaret visas omedelbart som ett väntande modellförfattat meddelande och slutförs genom ett beständigt jobb som körs strikt under den anropande medlemmens identitet: dess modellåtkomst, leverantörsuppgifter och dirigering — aldrig kanalägarens eller en annan medlems. En medlem som tas bort medan ett omnämnande väntar kan inte hålla det vid liv. Jobbet kontrollerar medlemskapet igen före generering och registrerar ett synligt fel i stället. Modellfel visas på själva svaret i stället för att försvinna i en kö.

Modellsvar använder den senaste kanalkonversationen (upp till 30 meddelanden) som kontext. De körs som engångskompletteringar. Chattverktyg, kunskapshämtning och webbsökning är ännu inte anslutna till kanalomnämnanden.

Gränser

GränsVärde
Kanaler skapade per användare50
Medlemmar per kanal200
Meddelanden per kanal50,000
Meddelandelängd8,000 tecken
Bilagor per meddelande5 × 10 MB
Reaktioner per meddelande200

Avgränsningar

  • Närvaroindikatorer och skrivstatus är inte implementerade.
  • Export av kanalinnehåll och lagringspolicyer följer instansens säkerhetskopieringsmodell. Export per kanal finns ännu inte.
  • Omnämnanden aviseras genom aviseringstjänsten i appen. Det finns ännu ingen aviseringsinställning per kanal utöver att lämna kanalen.