Κανάλια
Τα κανάλια φέρνουν ομαδικές συνομιλίες στο 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 ανά κανάλι.
- Οι αναφορές ειδοποιούν μέσω της υπηρεσίας· δεν υπάρχει προτίμηση ανά κανάλι πέρα από έξοδο.