Changelog
Ce qui est nouveau.
Chaque amélioration apportée à la plateforme, à mesure qu'elle est livrée.
· EmailService
Envoyer, dossier et recherche de talons de nuage soutenus par IMAP/SMTP
Extraire le schéma de délégation IMAP/SMTP dans AbstractImapBackedCloudProvider et disposent de l'extension de l'utilisation de l'information, de la surveillance de glace, d'Exchange, de Google Workspace et de Microsoft 365 c'est ça. La classe de base met en œuvre MailSender, MailReader, FolderManager, et SearchProvider en plus d'EmailImapService, EmailSmtpService et SearchService - les mêmes services que KamoMail utilise - donc: - envoyer/enregistrerDraft travailler pour n'importe quel fournisseur de cloud avec des informations d'identification SMTP. - Toutes les opérations de dossiers (créer / renommer / supprimer / déplacer / setDraps / deleteMessage) fonctionne via IMAP. - Rechercher les délégués au service de recherche existant. - Lire les opérations et en ligne cid: le rendu continue à circuler à travers le Partagez EmailImapService parser. Les talons restants dans chaque fournisseur de béton et de notifications en temps réel (où applicable), DomainManager, et MailboxProvisioner - a vraiment besoin API d'administration natives fournisseurs (Microsoft Graph, Google Admin SDK, zoho Admin Admin API, EWS, IceWarp admin) qui ne sont pas encore connectés à cette base de code. Chaque stub porte maintenant un commentaire de style TODO nommant l'API qui l'implémenterait.
· EmailService
MailReader à l'ISMAP pour les talons de fournisseur de cloud
IMAP, IceWarp, Exchange, Google Workspace et Microsoft 365 exposent tous IMAP, Ainsi, les méthodes MailReader de chaque fournisseur de cloud par EmailImapService au lieu de lancer UnsupportedOperationException. Ceci: - Débloque les messages de lecture sur ces fournisseurs lorsque seuls les identifiants IMAP sont configuré (le déploiement le plus courant aujourd'hui). - Effectue le flux uniforme des métadonnées de la nouvelle partie de contenuId/joint de pièces jointes chaque fournisseur, étant donné qu'EmailImapService est l'analyseur unique. - Permet la résolution du critère d'évaluation de l'image en ligne: références pour n'importe quel fournisseur. Les autres méthodes de fournisseur de cloud (envoi, gestion des dossiers, provisionnement, domaines ops) sont toujours non pris en chargeOperationException et ces besoins les API natifs du fournisseur et ne sont pas dans le scope ici. Ajout également MailContext.toMailCredentials() ainsi providers (et les fournisseurs existants) KamoMailReader adaptateur) partage un seul assistant de conversion d'accréditation.
· kamo-internal
Rendage en ligne cid: images via le nouveau critère d'évaluation du service par courrier électronique
Lorsqu'un message expose des parties en ligne (chacun transportant un contenuId), l'e-mail Le moteur de rendu réécrit maintenant le mot «img src» "cid:.."" références au moment de monter à - que le mandataire aujourd'hui Dircule Cache-Control on afin que le navigateur mette en cache l'image récupérée. - EmailApit joint (tous deux dans le cadre de conversationTypes et la copie locale en MessageBrowser) gagne contentId et les champs en ligne. - SanitizedEmailRenderer accepte inlineImageBaseUrl et inlineContentIds; cid: imgs il réécrit des cids connus et cache le reste, avec l'existant un manipulateur de l'on-cigare toujours cachant toute autre image cassée. - Le déshabillage dédié qui vivait dans le désinfectant est inversé la réécriture appartient au moment du rendu, où le contexte du message existe. - La liste des pièces jointes visibles dans ThreadDetailView et MessageBrowser filtre les parties en ligne, de sorte que les logos de signature intégrés n'apparaissent plus comme Pièces jointes téléchargeables.
· EmailService
Servir des parties MIME et de surface Content-ID
Render 'img src'"cid:..." dans les messages UI en exposant les parties en ligne que le corps HTML fait référence. - L'appendiceInfo gagne contenuId (sans crochets d'angle) et drapeau en ligne. - parseMultipart et getAttachment share a single isAttachmentPartPart Prédicat et un marcheur récursif, de sorte que les parties en ligne nidées à l'intérieur de plusieurs parties/liées sont saisis (et leurs indices restent alignés sur les deux méthodes). Auparavant, la récurrence écrasait la liste des personnes jointes aux parents, laquelle ont également laissé tomber des attaches réelles dans des structures imbriquées. - hasAttachment est désormais piloté par des parties non en ligne uniquement - logos de signature no éclairer plus longtemps le trombone sur chaque message. - Nouveau critère d'évaluation GET EmailContrôleur et SharedMailboxMailController; résout cid via le AttachmentInfo, diffuse la partie avec Content-Disposition: en ligne et Cache-Control: privé, max-age 3600.
· KlusterServices
Ajouter la boîte aux lettres et la boîte aux lettres IMAP externe IMAP NodePort
- Nouveau service mail/dovecot-imap-external (NodePort 30143 - 143) L'IMAP peut être atteint de l'extérieur du cluster sur le thème "NODE:30143). - Prix des semences: kamocrm.com dans mysql-init, donc un bootstrap frais DB recrée la boîte aux lettres; la ligne en direct est déjà présente dans MySQL.
· kamo-internal
Redesign ChatsList lignes - élégante disposition, pas de défilement horizontal, points en ligne, badge non lus, horodatés relatives
· MediaService
Ajouter le point d'extrémité GET/sessions/-guid-/members avec priorité de nom d'affichage
Retourne la liste des membres avec le nom résolu via le nom d'utilisateurAlias (intégralitéName) et alias et nom d'utilisateur, correspondant à la même priorité que la liste des sessions de discussion. Cela alimente ChatBox.loadMembers() donc la barre de titre de fenêtre d'outil peut indiquer le nom préféré correct.
· kamo-internal
Titre de la fenêtre de l'outil de recherche et d'expédition des membres de la session
Adds onMembersChange callback to ChatBox; ChatTool dérive le titre (nom unique pour 1-on-1, ou 'nom' («N plus») pour les groupes) et les expéditions outil:title pour mettre à jour la barre de titre ToolWindowShell de manière dynamique.
· kamo-internal
Recherche de pontage au-dessus de la bande d'onglets, partagez la requête entre les onglets Membres et Chats
Déplace la recherche TextField de MemberList dans NavTopPanel au-dessus des onglets. Passe searchQuery comme un accessoire à la fois MemberList et ChatsList donc un seul champ filtre les deux onglets. ChatsList filtre les lignes en correspondant au nom de n'importe quel non-membre.
· MediaService
Émission d'un public non lue avec la charge utile d'ACTIVITY pour les mises à jour de la liste des chats
· kamo-internal
Mises à jour de la liste des chats en direct via le canal NATS non lus
· kamo-internal
Tabs pour les membres/chats dans le panneau du centre d'interaction
· kamo-internal
Liste des chats avec défilement infini, virtualisé via IntersectionObserver
· kamo-internal
Multi-sélection dans MemberList pour le démarrage des discussions de groupe
· kamo-internal
En-tête de discussion avec pile d'avatars, popover du titre et cueilleur des membres
· kamo-internal
Composeur avec glisser-déposer, puces de fixation en attente, entrée multiligne
· kamo-internal
Bulle de message avec des avatars, des actions de vol stationnaire et un indicateur visible
· kamo-internal
Relèce de fixation en ligne et boîte à lumière
· kamo-internal
Types de clients et crochets pour les sessions, reçus, pièces jointes
· kamo-internal
Voies de proxy pour la recherche-or-création, les membres, les pièces jointes, l'imagerie, le mute, la révocation
Extrait partagé et aide à app/lib/mediaServiceUrl.ts. Ajouter des itinéraires proxy: find-or-create, membres, reçus, pièces jointes (streaming), muets, révoquer,
· MediaService
Rubriques de configuration pour les limites de fixation et la multipièces
· MediaService
Liste de discussion en page avec prévisualisations, membres, comptes non lus
qui retourne ChatListRowDto lignes y compris le dernier message avant-première, membre les résumés, les comptes non lus par session et ownLastViewedAt.
· kamo-shared-library
Ajouter countUnreadAfter(guid, memberId, since) à MediaObjRepository
Besoin par point de terminaison de discussion paged pour calculer les comptages non lus par session lorsque ownLastViewedAt est un pointeur LocalDateTime plutôt qu'un message UUID.
· MediaService
Real éditeur NATS met en œuvre et READ-RECEIPT
· MediaService
Critère d'évaluation muet et filtre de message par spectateur
· kamo-shared-library
Ajouter à MediaSessionMuteRepository
· MediaService
Imagerie proxy avec support HTTP Range et suivi du téléchargement par membre
· kamo-shared-library
Ajouter MediaObjImgDownloadRepository avec existByObjImgIdAndMemberId
Requis par ImagingProxyService (tâche 10) pour découvrir par membre le suivi des téléchargements sans scan complet de table.
· kamo-shared-library
Ajouter type assoc CHAT-ATTACLMENT avec seau d'image-chat-pilier
· kamo-shared-library
Méthodes de service pour la recherche/création exacte, le membre ajouter, mute, révoquer, lire

Votre univers vous attend.
Commencez gratuitement en quelques minutes. Ajoutez des produits quand vous êtes prêt. Pas de migration, pas de nouvelles connexions.
Gratuit pour toujours — aucune carte de crédit requise