Salta al contenuto
KAMOUniverse

Changelog

Cosa c'è di nuovo.

Ogni miglioramento alla piattaforma, come si spedisce.

  1. · EmailService

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

    Estrarre il modello di delegazione IMAP/SMTP in AbstractImapBackedCloudProvider e hanno Zoho, IceWarp, Exchange, Google Workspace, e Microsoft 365 estendere Ecco. La classe di base implementa MailSender, MailReader, FolderManager, e CercaProvider sulla parte superiore di EmailImapService, EmailSmtpService e SearchService — gli stessi servizi utilizzati da KamoMail: - inviare / salvareDraft lavoro per qualsiasi provider cloud con credenziali SMTP. - Tutte le operazioni di cartella (creare / rinominare / eliminare / spostare / setFlags / deleteMessage) funziona tramite IMAP. - Ricerca dei delegati al servizio di ricerca esistente. - Operazioni di lettura e cid in linea: il rendering continua a scorrere attraverso condiviso EmailImapService parser. I rimanenti stubs in ogni fornitore di calcestruzzo — RealtimeNotifier (dove applicabile), DomainManager e MailboxProvisioner — veramente bisogno provider-native admin API (Microsoft Graph, Google Admin SDK, Zoho Admin API, EWS, IceWarp admin) che non sono ancora collegati a questo codebase. Ogni stub ora porta un commento in stile TODO che nomina l'API che lo implementa.

  2. · EmailService

    IMAP-backed MailReader per il cloud-provider stubs

    Zoho, IceWarp, Exchange, Google Workspace, e Microsoft 365 tutti espongono IMAP, quindi collegare i metodi MailReader di ogni cloud-provider tramite EmailImapService invece di lanciare UnsupportedOperationException. Questo: - Sblocca i messaggi di lettura su quei provider quando solo le credenziali IMAP sono configurato (la distribuzione più comune oggi). - Rende i nuovi metadati di attacco contentId/inline uniformemente attraverso ogni fornitore, dal momento che EmailImapService è il singolo parser. - Consente di risolvere il punto finale dell'immagine in linea: riferimenti per qualsiasi fornitore. I restanti metodi cloud-provider (in attesa, gestione delle cartelle, provisioning, dominio ops) sono ancora UnsupportedOperationException — quelle necessità API provider-native e non sono in campo. Aggiunge anche MailContext.toMailCredentials() così fornitori (e l'esistente Adattatore KamoMailReader) condividere un singolo helper di conversione delle credenziali.

  3. · kamo-internal

    Render inline cid: immagini tramite il nuovo endpoint EmailService

    Quando un messaggio espone parti in linea (ciascuno che trasporta un contentId), l'e-mail rewrites <img src="cid:..."> riferimenti al tempo di montaggio a E ora anche il proxy. inoltra Cache-Control in modo che il browser memorizza l'immagine recuperata. - EmailAttachment (entrambi in conversazioneTypes e la copia locale in MessageBrowser) acquisisce i campi contenutiId e inline. - SanitizedEmailRenderer accetta inlineImageBaseUrl + inlineContentIds; on cid: imgs riscrive cids conosciuti e nasconde il resto, con l'esistente maneggiatore onerror ancora nascondendo qualsiasi altra immagine rotta. - La spogliatura cid dedicata che viveva nel sanitizzatore è ritratta — riscrittura appartiene al tempo di rendering, dove esiste il contesto del messaggio. - L'elenco degli allegati visibili in ThreadDetailView e MessageBrowser filtri fuori parti in linea così i loghi firma incorporati non appaiono più come allegati scaricabili.

  4. · EmailService

    Serve l'immagine inline MIME parti e la superficie

    Render <img src="cid:..."> nei messaggi UI esponendo le parti in linea che i riferimenti del corpo HTML. - AttachmentInfo ottiene il contenutoId (senza staffe angolari) e la bandiera in linea. - parseMultipart e getAttachment condividono un singolo isAttachmentPart predicate e un walker ricorsivo, così parti inline nidificate all'interno di multipart/collegato sono catturati (e i loro indici rimangono allineati attraverso i due metodi). In precedenza la ricorsione ha superato l'elenco degli allegati del genitore, che anche abbandonato gli attaccamenti reali in strutture nidificate. - haAttachment è ora guidato solo da parti non in linea — loghi firma no accendere più a lungo la clip di carta su ogni messaggio. - Un nuovo endpoint GET. EmailController e SharedMailboxMailController; risolve cid tramite il parsed AttachmentInfo, trasmette la parte con Content-Disposition: inline e Cache-Control: privato, max-age=3600.

  5. · KlusterServices

    Aggiungi pricing@kamocrm.com mailbox e IMAP NodePort esterno

    - Nuova posta di servizio/dovecot-imap-esterno (NodePort 30143 -> 143) IMAP può essere raggiunto da fuori del cluster su $NODE:30143. - Seed pricing@kamocrm.com in mysql-init così un fresco DB bootstrap ricrea la casella di posta; la riga live è già presente in MySQL.

  6. · kamo-internal

    Redesign ChatsList righe — layout elegante, nessun rotolo orizzontale, punti online, badge non letto, timestamp relativi

  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 non letto trasmissione con ACTIVITY payload per gli aggiornamenti di chat-list

  11. · kamo-internal

    Live chat-list aggiornamenti via NATS canale non letto

  12. · kamo-internal

    Tabs per membri/chat nel pannello centrale di interazione

  13. · kamo-internal

    Elenco delle chat con scorrimento infinito, virtualizzato tramite IntersezioneObserver

  14. · kamo-internal

    Multi-select in MemberList per avviare chat di gruppo

  15. · kamo-internal

    Intestazione di chat con avatar stack, popover titolo e picker membro

  16. · kamo-internal

    Composer con drag-drop, chip di fissaggio in attesa, ingresso multi-linea

  17. · kamo-internal

    La bolla di messaggio con avatar, le azioni di hover, e l'indicatore visto

  18. · kamo-internal

    Rendering degli allegati in linea e lightbox

  19. · kamo-internal

    Tipi di clienti e ganci per sessioni, ricevute, allegati

  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

    Aggiunta a 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

Il tuo universo ti sta aspettando.

Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.

Gratis per sempre — nessuna carta di credito richiesta