Μετάβαση στο κύριο περιεχόμενο

Κανάλια

Τα κανάλια φέρνουν ομαδικές συνομιλίες στο Libre WebUI: δημόσια και ιδιωτικά δωμάτια και άμεσα μηνύματα, με νήματα, αντιδράσεις, pins, unread, συνημμένα και απαντήσεις @model — στην ίδια μόνιμη κρυπτογραφημένη βάση με το chat.

Τύποι και μέλη

ΤύποςΠοιος βλέπειΠοιος συμμετέχει
publicΌλοι περιηγούνταιΟ καθένας εισέρχεται μόνος
privateΜόνο μέληΟ ιδιοκτήτης προσκαλεί
dmΟι δύο συμμετέχοντεςΑυτόματα· πάντα ακριβώς δύο

Η συμμετοχή είναι η μόνη εξουσία για περιεχόμενο: κάθε ανάγνωση και εγγραφή, συμπεριλαμβανομένων downloads και live events, ελέγχει πρώτα το μέλος. Μη μέλη παίρνουν μη απαριθμήσιμο 404. Ο global admin σκόπιμα δεν αποκτά πρόσβαση.

Ο δημιουργός public/private είναι ιδιοκτήτης και μπορεί να μετονομάζει, αρχειοθετεί, προσκαλεί, αφαιρεί, συντονίζει και διαγράφει. Φεύγει διαγράφοντας, όχι εγκαταλείποντας. Υπάρχει ένα DM ανά ζεύγος: άνοιγμα με ίδιο άτομο οδηγεί στην ίδια συνομιλία.

Χρονολόγιο

Τα μηνύματα είναι μόνιμο ταξινομημένο timeline με keyset cursors (created_at + ID) και στις δύο κατευθύνσεις χωρίς παραλείψεις ή διπλότυπα.

  • Idempotent posts. Ο πελάτης δίνει identity· retry καταλήγει μία φορά στην ίδια γραμμή.
  • Tombstone διαγραφή. Καθαρίζει περιεχόμενο αλλά κρατά τη γραμμή, ώστε νήματα και σειρά να μένουν. Συγγραφείς διαγράφουν δικά τους, ιδιοκτήτες συντονίζουν όλα.
  • Edits μόνο από συγγραφέα με editedAt.
  • Νήματα ενός επιπέδου. Root μήνυμα φιλοξενεί νήμα· replies σε replies απορρίπτονται.
  • Reactions ανά χρήστη/emoji χωρίς διπλομέτρηση.
  • Pins από μέλη ανά κανάλι.

Ονόματα, περιγραφές και μηνύματα κρυπτογραφούνται σε ηρεμία όπως το chat.

Unread κατάσταση

Κάθε συμμετοχή έχει μονότονο cursor ανάγνωσης. Το backend υπολογίζει unread (δικά σας δεν είναι ποτέ unread) και POST /api/channels/:channelId/read κινείται μόνο εμπρός.

Παράδοση realtime

Κάθε αλλαγή προστίθεται στο channel:<id> και διανέμεται μέσω GET /api/channels/:channelId/events (SSE). Η συμμετοχή επανελέγχεται πριν κάθε παράδοση, άρα η αφαίρεση κλείνει τη ροή. Το SQL timeline είναι η αλήθεια· χαμένα events ανακτώνται με νέα ανάγνωση.

Συνημμένα

Τα αρχεία ανεβαίνουν πρώτα (POST /api/channels/:channelId/attachments), μένουν σύντομα σε shared claim cache και επισυνάπτονται με το μήνυμα. Claim μίας χρήσης λήγει σε 15 λεπτά. Τα blob ανήκουν στον uploader και τα downloads ξαναελέγχουν συμμετοχή.

Απαντήσεις @model

Το μήνυμα μπορεί να στοχεύει μοντέλο. Η απάντηση εμφανίζεται pending και ολοκληρώνεται σε μόνιμη εργασία αυστηρά με την ταυτότητα του μέλους: πρόσβαση, credentials και routing του, ποτέ άλλου. Αν αφαιρεθεί όσο είναι queued, η εργασία ξαναελέγχει και καταγράφει ορατή αποτυχία. Τα σφάλματα εμφανίζονται στην απάντηση.

Χρησιμοποιούνται έως 30 πρόσφατα μηνύματα ως context. Πρόκειται για one-shot completions· εργαλεία, knowledge retrieval και web search δεν έχουν συνδεθεί ακόμη.

Όρια

ΌριοΤιμή
Κανάλια ανά χρήστη50
Μέλη ανά κανάλι200
Μηνύματα ανά κανάλι50,000
Μήκος μηνύματος8,000 χαρακτήρες
Συνημμένα ανά μήνυμα5 × 10 MB
Αντιδράσεις ανά μήνυμα200

Περιορισμοί

  • Presence και typing δεν έχουν υλοποιηθεί.
  • Export και retention ακολουθούν backup εγκατάστασης· δεν υπάρχει export ανά κανάλι.
  • Οι αναφορές ειδοποιούν μέσω της υπηρεσίας· δεν υπάρχει προτίμηση ανά κανάλι πέρα από έξοδο.