Changelog
Was ist neu?
Jede Verbesserung an der Plattform, wie sie geliefert wird.
· EmailService
IMAP/SMTP-Backed Senden, Ordner und Suche nach Cloud Stubs
Extrahieren Sie das IMAP/SMTP-Delegationsmuster in AbstractImapBackedCloudProvider und haben Zoho, IceWarp, Exchange, Google Workspace und Microsoft 365 erweitern es. Die Basisklasse implementiert MailSender, MailReader, FolderManager und SearchProvider auf EmailImapService, EmailSmtpService und SearchService Die gleichen Dienste, die KamoMail nutzt, so: - sende / saveDraft Arbeit für jeden Cloud-Provider mit SMTP-Anmeldeinformationen. - Alle Ordneroperationen (erschaffen / umbenennen / löschen / verschieben / setFlags / deleteMessage) Arbeit über IMAP. - Suchdelegierte zum bestehenden SearchService. - Lesen Operationen und Inline-zid: Rendering weiterhin durch die geteilt EmailImapService Parser. Die restlichen Stubs in jedem Betonanbieter - RealtimeNotifier (wobei anwendbar), DomainManager und MailboxProvisioner - wirklich need Provider-native Admin APIs (Microsoft Graph, Google Admin SDK, Zoho Admin API, EWS, IceWarp Admin), die noch nicht in diese Codebasis verdrahtet sind. Jeder stub trägt nun einen Kommentar im TODO-Stil, der die API benennt, die sie implementieren würde.
· EmailService
IMAP-unterstützter MailReader für die Cloud-Provider stubs
Zoho, IceWarp, Exchange, Google Workspace und Microsoft 365 setzen IMAP aus, so verdrahten jeden Cloud-Provider stub MailReader Methoden durch EmailImapService anstatt UnsupportedOperationException zu werfen. Dies: - Entsperrt das Lesen von Nachrichten auf diesen Anbietern, wenn nur IMAP-Anmeldeinformationen sind konfiguriert (der häufigste Einsatz heute). - Macht den neuen ContentId/Inline-Anhängetadaten einheitlich quer jeder Anbieter, da EmailImapService der einzelne Parser ist. - Erleichtert die Inline-Image-Endpunkt-Credit-Referenzen für jeden Anbieter. Die restlichen Cloud-Anbieter-Methoden (Senden, Ordnerverwaltung, Bereitstellung, domain ops) sind immer noch nicht unterstütztOperationException . die Provider-native APIs und sind hier nicht in Reichweite. Fügt auch MailContext.toMailCredentials() so Anbieter (und die bestehenden KamoMailReader-Adapter) teilen Sie sich einen einzigen Anmeldehilfe-Hilfe.
· kamo-internal
Inline-Ziteden anzeigen: Bilder über den neuen EmailService Endpunkt
Wenn eine Nachricht inline Teile aussetzt (jeder mit einem ContentId), die E-Mail Renderer schreibt jetzt <img src="cid:"..." Referenzen zur Zeit auf ****************, welcher der Proxy nun auch weiterleitet Cache-Control auf, so dass der Browser das abgeholte Bild cakt. - E-Mail-Anhänger (sowohl in Konversationsarten als auch in der lokalen Kopie in MessageBrowser) gewinnt ContentId- und Inline-Felder. - SanitizedEmailRenderer akzeptiert inlineImageBaseUrl + inlineContentIds; auf cid: imgs es neu schreibt bekannte cids und versteckt den Rest, mit dem bestehenden onerror-Handler versteckt immer noch jedes andere kaputte Bild. - Die dedizierte cid Stripping, die in der Desinfektionsmittel lebte wird umgedreht Rewriting gehört zur Renderzeit, wo der Nachrichtenkontext existiert. - Die Liste der sichtbaren Anhänge in ThreadDetailView und MessageBrowser Filter aus Inline-Teile, so dass eingebettete Signatur-Logos nicht mehr erscheinen als Downloadbare Anhänge.
· EmailService
Inline-Image MIME Teile und Oberflächen-Content-ID-Metadaten servieren
Render <img src="cid:""" in den Nachrichten UI, indem die Inline-Teile freigelegt werden dass die HTML-Körperreferenzen. - AttachmentInfo gewinnt ContentId (ohne Winkelwinkel) und Inline-Flag. - parseMultipart und getAttachment share a single isAttachmentPart predicate und ein rekursiver Walker, so Inline-Teile im Inneren multipart / verwandt verschachtelt werden erfasst (und ihre Indizes bleiben über die beiden Methoden ausgerichtet). Zuvor überschrieben die Rekursion die Anhangliste der Eltern, die fiel auch reale Anhänge in verschachtelten Strukturen. - hatAnhänger wird jetzt nur noch von Nicht-Inline-Teilen angetrieben - Signatur-Logos nicht länger leuchten die Büroklammer auf jeder Nachricht. - Neuer Endpunkt GET **************** auf beiden EmailController und SharedMailboxMailController; löst cid über die parsed AttachmentInfo, streamt den Part mit Content-Disposition: inline und Cache-Control: privat, max-age=3600.
· KlusterServices
Hinzufügen pricing@kamocrm.com Mailbox und externe IMAP NodePort
- Neuer Service mail/dovecot-imap-external (NodePort 30143 - 143) so IMAP ist von außerhalb des Clusters auf $NODE:30143 zu erreichen. - Seed pricing@kamocrm.com in mysql-init so eine frische DB Bootstrap erstellt die Mailbox neu; die Live-Reihe ist bereits in MySQL vorhanden.
· kamo-internal
Redesign ChatsList Reihen - elegantes Layout, keine horizontale Schriftrolle, Online-Darts, ungelesene Plakette, relative Zeitstempel
· MediaService
GET /sessions/{guid'/members endpoint mit Anzeige-Name-Priorität hinzufügen
Gibt Mitgliederliste mit aufgelöstem Namen via usernameAlias . fullName . alias . username, Die gleiche Priorität wie die Chat-Sitzungen-Liste. Dies füttert ChatBox.loadMembers() so die Titelleiste des Werkzeugfensters kann den richtigen bevorzugten Namen anzeigen.
· kamo-internal
Der- und Versandwerkzeugfenstertitel von Session-Mitgliedern
Fügt onMembersChange Callback zu ChatBox hinzu; ChatTool leitet den Titel (Einzelname für 1-on-1, oder '<name' (+N mehr) für Gruppen) und Versand tool:title zur Aktualisierung der ToolWindowShell Titelleiste dynamisch.
· kamo-internal
Liftsuche über Tab-Streifen, teilen Abfrage über Mitglieder und Chats Tabs
Bewegt die Suche TextFeld von MemberList in NavTopPanel über die Registerkarten. Passiert SearchQuery als Requisite für MemberList und ChatsList so ein einzelnes Feld Filtert beide Registerkarten. ChatsList filtert Zeilen, indem es den Namen eines Nicht-Selbst-Mitglieds abgleicht.
· MediaService
Augment ungelesene Sendung mit ACTIVITY-Nläge für Chats-Listen-Updates
· kamo-internal
Live-Chats-Liste Updates über NATS ungelesenen Kanal
· kamo-internal
Tabs für Mitglieder/Chats im Interaktion Center Panel
· kamo-internal
Chats Liste mit unendlichem Scrollen, virtualisiert über IntersectionObserver
· kamo-internal
Multi-select in MemberList für Gruppen-Chats
· kamo-internal
Chat Header mit Avatar Stack, Titel Popover und Mitglied Picker
· kamo-internal
Komponist mit Drag-Drop, anhängigen Befestigungschips, Multiline-Eingang
· kamo-internal
Nachrichtenblase mit Avataren, Schwebaktionen und gesehenem Indikator
· kamo-internal
Inline-Anbau-Rendering und Lightbox
· kamo-internal
Kundentypen und Haken für Sitzungen, Quittungen, Anhänge
· kamo-internal
Proxy-Routen für find-or-create, Mitglieder, Anhänge, bildgebende Proxy, stumm, widerrufen
Extrahieren geteilt ************ Hilfeer zu app/lib/mediaServiceUrl.ts. Proxy-Routen hinzufügen: find-or-create, Mitglieder, Quittungen, Anhänge (Streaming), mutes, widerrufen,
· MediaService
Configmap Einträge für Anhängelimits und mehrteilig
· MediaService
Geseitete Chatliste mit Vorschauen, Mitglieder, ungelesene Zähler
das liefert ChatListRowDto Zeilen einschließlich letzter Nachrichtenvorschau, Mitglied Zusammenfassungen, ungelesene Zählungen pro Sitzung und besitzenLastViewedAt.
· kamo-shared-library
CountUnreadAfter(guid, memberId, since) zu MediaObjRepository hinzufügen
Benötigt durch Paged Chat-Liste Endpunkt, um pro Sitzung ungelesene Zählungen berechnen wenn ownLastViewedAt ist ein LocalDateTime-Zeiger und nicht eine Nachricht UUID.
· MediaService
Echter NATS-Publisher impl und READ_RECEIPT-Sendung
· MediaService
Per-Viewer stumm Endpunkt und Nachrichtenfilter
· kamo-shared-library
************ zu MediaSessionMuteRepository hinzufügen
· MediaService
Imaging Proxy mit HTTP Range Unterstützung und per-member Download-Tracking
· kamo-shared-library
MediaObjImgDownloadRepository mit existen hinzufügenByObjImgIdAndMemberId
Erforderlich von ImagingProxyService (Task 10) zu deduplicate pro Mitglied Download Tracking ohne vollständigen Tabellenscan.
· kamo-shared-library
CHAT_ATTACHMENT assoc Typ mit Bild-Chat-Antachments Eimer hinzufügen
· kamo-shared-library
Servicemethoden für exact-match find/create, member add, stumm stumm, widerrufen, lesen

Euer Universum wartet.
Fügen Sie Produkte hinzu, wann immer Sie möchten – keine Migration, keine neuen Anmeldungen.
Für immer kostenlos – keine Kreditkarte erforderlich