Mergi la conținut
KAMOUniverse

Jurnal de schimbări

Ce e nou.

Fiecare îmbunătățire a platformei, pe măsură ce se livrează.

  1. · EmailService

    IMAP/SMTP-backed send, folder, and search for cloud stubs

    Extragerea modelului de delegare IMAP/SMTP în RezumatImapBacked CloudProvider și au Zoho, IceWarp, Exchange, Google Workspace, și Microsoft 365 extinde Ea. Clasa de bază implementează MailSender, MailReader, FolderManager, și SearchProvider pe partea de sus a EmailImapService, EmailSmtpService, și SearchService - trimite / salvaLucrarea pentru orice furnizor de cloud cu acreditare SMTP. - Toate operaţiunile dosarului (creare / redenumire / ştergere / mutare / setFlags / ȘtergeMesajul) lucrează prin IMAP. - Căutați delegați la Serviciul de căutare existent. - Operaţiuni de citire şi CID: redare continuă să curgă prin Partajat EmailImapservice parser. Cămaşele rămase în fiecare furnizor de beton aplicabil), DomainManager, și MailboxProvisioner API (Microsoft Graph, Google Admin SDK, Zoho Admin API, EWS, IceWarp admin) care nu sunt conectate în această bază de cod încă. Fiecare coarda poartă acum un comentariu de tip TODO care numește API-ul care l-ar implementa.

  2. · EmailService

    MailReader cu suport IMAP pentru cotoare

    Zoho, IceWarp, Exchange, Google Workspace, și Microsoft 365 toate expune IMAP, așa că sârmă fiecare cloud-furnizor mailReader metode prin EmailImapService în loc de a arunca o operaţiune nesusţinută Excepţie. Asta: - Deblochează citirea mesajelor pe acei furnizori atunci când numai acreditări IMAP sunt configurat (cea mai frecventă desfăşurare de astăzi). - Face ca noul conţinutId/inline ataşament să curgă uniform peste fiecare furnizor, deoarece EmailImapService este singurul parser. - Lets the inline-image end remit CID: References for any provider. metodele de furnizare a cloud-urilor rămase (trimitere, gestionare a dosarelor, furnizare, domeniu ops) sunt încă nesusţinut operaţiune Excepţie API-uri native furnizor și nu sunt în domeniul de aplicare aici. De asemenea, adaugă MailContext.to MailCredentials() astfel furnizorii (și furnizorii existenți KamoMailReader adaptor) împărtășesc o singură acreditare-conversie ajutor.

  3. · kamo-internal

    Render inline cid: imagini prin noul obiectiv EmailService

    Atunci când un mesaj expune piese inline (fiecare care transportă un conținutId), e-mailul rescrie acum <img src="cid:... referințe la data de montare Acum şi proxy-ul. înainte Cache-Control pe astfel încât browser-ul cache imaginea adus. - EmailAtachment (atât în conversație Tipuri și copia locală în MesajBrowser) câștigă conținutCâmpuri Id și Inline. - Sanitized EmailRenderer acceptă inlineImageBaseUrl + inlineContentIds; on imgs rescrie Cids cunoscute și ascunde restul, cu existente Onerror Handler încă ascunde orice altă imagine ruptă. - Dezbracare CID dedicat care a trăit în sanitizer este reverificat Rescrierea trebuie făcută la timp, unde există contextul mesajului. - Lista de atașamente vizibile în ThreadDetailView și MessageBrowser filtrează piesele inline astfel încât logo-urile de semnătură încorporate nu mai apar ca atașamente descărcabile.

  4. · EmailService

    Se serveste inline imagini piese MIME și metadate de conținut-ID

    Render <img src="cid:... [62] în mesajele UI prin expunerea părților liniare că referinţele corpului HTML. - AtașamentInfo câștigă conținutId (fără paranteze unghiulare) și pavilion linie. - parseMultipart and getAttachment share a single isAttachmentPart predicate și un Walker recursiv, astfel încât părțile linia cuiburi în interiorul multipart / legate sunt capturate (și indicii lor rămân aliniați la cele două metode). Anterior recursiunea a suprascris lista de atașamente părintelui, care De asemenea, a scăzut atașamente reale în structuri cuib. - hasAtachment is now drived by non-inline parts only lumina mai mult agrafa de hârtie pe fiecare mesaj. - Noul obiectiv GET ******************* pe ambele EmailController și SharedMailboxController; rezolvă CID prin intermediul parsed AttachmentInfo, fluxs the part with Content-Dispozition: inline și Cache-Control: privat, max-age=3600.

  5. · KlusterServices

    Adăugaţi cutia poştală de preţuri@kamocrm.com şi NodePort IMAP extern

    - New Service mail/dovecot-imap-extern (NodePort 30143 -> 143) so IMAP poate fi contactat din afara grupului pe NODE 30143. - Seed pricement@kamocrm.com in mysql-init so a fresh DB bootstrap recrea cutia poștală; rândul viu este deja prezent în MySQL.

  6. · kamo-internal

    Reproiectare chat-uriList rânduri

  7. · MediaService

    Add GET /sessions/{guid}/members endpoint with display-name priority

    Returns member list with name resolved via usernameAlias → fullName → alias → username, matching the same priority as the chat sessions list. This feeds ChatBox.loadMembers() so the tool window title bar can show the correct preferred name.

  8. · kamo-internal

    Derive and dispatch tool window title from session members

    Adds onMembersChange callback to ChatBox; ChatTool derives the title (single name for 1-on-1, or '<name> (+N more)' for groups) and dispatches tool:title to update the ToolWindowShell title bar dynamically.

  9. · kamo-internal

    Lift search above tab strip, share query across Members and Chats tabs

    Moves the search TextField from MemberList into NavTopPanel above the Tabs. Passes searchQuery as a prop to both MemberList and ChatsList so a single field filters both tabs. ChatsList filters rows by matching any non-self member's name.

  10. · MediaService

    Augment necitit transmision cu activitate sarcină utilă pentru actualizări chat-list

  11. · kamo-internal

    Actualizări live ale listei de chat-uri prin intermediul canalului NATS necitit

  12. · kamo-internal

    Taburi pentru membri/chat-uri în panoul central de interacţiune

  13. · kamo-internal

    Listă de chat cu sul infinit, virtualizat prin IntersectionObserver

  14. · kamo-internal

    Multiselectează în lista membrilor pentru discuții în grup

  15. · kamo-internal

    Comment

  16. · kamo-internal

    Compozitor cu drag-drop, în așteptare chips-uri de atașament, intrare multi-line

  17. · kamo-internal

    Bubble mesaj cu avatare, acțiuni hover, și indicatorul văzut

  18. · kamo-internal

    Reglarea și caseta de lumină a atașamentului

  19. · kamo-internal

    Tipuri de clienți și cârlige pentru sesiuni, chitanțe, atașamente

  20. · kamo-internal

    Proxy routes for find-or-create, members, attachments, imaging proxy, mute, revoke

    Extract shared **************** helper to app/lib/mediaServiceUrl.ts. Add proxy routes: find-or-create, members, receipts, attachments (streaming), mutes, revoke,

  21. · MediaService

    Configmap entries for attachment limits and multipart

  22. · MediaService

    Paged chat list with previews, members, unread counts

    that returns ChatListRowDto rows including last message preview, member summaries, per-session unread counts, and ownLastViewedAt.

  23. · kamo-shared-library

    Add countUnreadAfter(guid, memberId, since) to MediaObjRepository

    Needed by paged chat-list endpoint to compute per-session unread counts when ownLastViewedAt is a LocalDateTime pointer rather than a message UUID.

  24. · MediaService

    Real NATS publisher impl and READ_RECEIPT broadcast

  25. · MediaService

    Per-viewer mute endpoint and message filter

  26. · kamo-shared-library

    Adaugă ***************** la MediaSessionmuteRepository

  27. · MediaService

    Imaging proxy with HTTP Range support and per-member download tracking

  28. · kamo-shared-library

    Add MediaObjImgDownloadRepository with existsByObjImgIdAndMemberId

    Required by ImagingProxyService (Task 10) to deduplicate per-member download tracking without a full table scan.

  29. · kamo-shared-library

    Add CHAT_ATTACHMENT assoc type with imaging-chat-attachments bucket

  30. · kamo-shared-library

    Service methods for exact-match find/create, member add, mute, revoke, read

Universul tău te așteaptă.

Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.

Gratuit pentru totdeauna — nu este necesar un card de credit