Перейти к содержимому
KAMOUniverse

Журнал изменений

Что нового.

Каждое усовершенствование платформы, как только она появится.

  1. · EmailService

    Поддерживаемые IMAP / SMTP отправки, папки и поиск облачных заглушки

    Извлеките шаблон делегирования IMAP/SMTP в AbstractImapBackedCloudProvider Zoho, IceWarp, Exchange, Google Workspace и Microsoft 365 расширяются Это. Базовый класс реализует MailSender, MailReader, FolderManager и Поисковый провайдер поверх EmailImapService, EmailSmtpService и SearchService — те же услуги, которые использует KamoMail, — так: Отправлять/сохранитьПроект работы для любого облачного провайдера с учетными данными SMTP. - Все операции с папками (создать/переименовать/удалить/переместить/настроитьФлаги/ Удалить сообщение) через IMAP. Делегаты поиска в существующем поисковом сервисе. - читать операции и inline cid: рендеринг продолжает течь через EmailImapService Parser. Оставшиеся заглушки в каждом конкретном провайдере — RealtimeNotifier (где применимо, DomainManager и MailboxProvisioner — действительно необходимо API-интерфейсы администратора (Microsoft Graph, Google Admin SDK, Zoho Admin) API, EWS, админ IceWarp), которые еще не подключены к этой кодовой базе. Каждый Stub теперь содержит комментарий в стиле TODO, называя API, который будет его реализовывать.

  2. · EmailService

    MailReader с поддержкой IMAP для облачных заглушки

    Zoho, IceWarp, Exchange, Google Workspace и Microsoft 365 раскрывают IMAP. так проводка каждого облачного провайдера методы MailReader через EmailImapService Вместо того, чтобы бросать неподдерживаемую операцию Исключение. Это: Разблокирует чтение сообщений на этих провайдерах, когда только учетные данные IMAP Настройка (наиболее распространенное развертывание на сегодняшний день). - делает новый контент Id/inline вложение метаданных поток равномерно по всему Каждый провайдер, поскольку EmailImapService является единственным парсером. Позволяет конечной точке inline-image разрешать cid: ссылки для любого провайдера. Оставшиеся методы облачных провайдеров (отправка, управление папками, обеспечение, доменные операции) по-прежнему не поддерживаются Операция Исключение - эти потребности API-интерфейсы нативного провайдера и не входят в область применения здесь. Также добавляется MailContext.toMailCredentials() для поставщиков (и существующих) Адаптер KamoMailReader) имеет единый помощник по преобразованию учетных данных.

  3. · kamo-internal

    Render inline cid: изображения через новую конечную точку EmailService

    Когда сообщение раскрывает встроенные части (каждая из которых содержит контент), электронная почта Рендер теперь переписывает <img src="cid:..."> Ссылки в момент установки на **************************************************************************************************** пересылает Cache-Control, чтобы браузер кэшировал полученное изображение. - EmailAttachment (как в разговорах, так и в локальной копии) MessageBrowser) получает контент Id и встроенные поля. - SanitizedEmailRenderer принимает inlineImageBaseUrl + inlineContentIds; on cid: imgs переписывает известные cids и скрывает все остальное Обработчик ошибок все еще скрывает любое другое сломанное изображение. - Выделенная кислота, которая жила в дезинфицирующем средстве, возвращается - Переписывание происходит во время рендеринга, когда существует контекст сообщения. Список видимых вложений в ThreadDetailView и MessageBrowser фильтрует встроенные части, поэтому встроенные логотипы подписей больше не отображаются в виде загружаемые вложения.

  4. · EmailService

    Обслуживать встроенные изображения MIME-части и поверхностные метаданные Content-ID

    Render <img src="cid:..."> в сообщениях UI путем экспонирования встроенных частей Тело HTML ссылается. - AttachmentInfo получает контентId (без угловых скобок) и встроенный флаг. - parseMultipart и getAttachment разделяют один предикат attachmentPart и рекурсивный ходок, поэтому рядные части, вложенные внутри многочастного/связанного Они фиксируются (и их индексы выравниваются по двум методам). Ранее рекурсия переписала список привязанностей родителя, который Также сбрасывали настоящие крепления в вложенные структуры. - HasAttachment теперь управляется только нелинейными частями - фирменные логотипы нет Дальше зажигайте скрепку на каждом сообщении. - Новая конечная точка GET ******************* EmailController и SharedMailboxMailController; решает проблему с помощью Разобранный AttachmentInfo, транслирует часть с Content-Disposition: inline Cache-Control: частный, максимальный возраст = 3600.

  5. · KlusterServices

    Добавить прайс @kamocrm.com почтовый ящик и внешний IMAP NodePort

    - Новая служебная почта/dovecot-imap-external (NodePort 30143 -> 143) До IMAP можно добраться извне кластера по $NODE:30143. - Seed pricing@kamocrm.com in mysql-init so a fresh DB bootstrap Воссоздает почтовый ящик; живой ряд уже присутствует в MySQL.

  6. · kamo-internal

    Redesign ChatsList rows — элегантный макет, отсутствие горизонтальной прокрутки, онлайн-точки, непрочитанный значок, относительные метки времени

  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

    Добавить нечитанную трансляцию с полезной нагрузкой ACTIVITY для обновлений списка чатов

  11. · kamo-internal

    Обновления списка чатов через непрочитанный канал NATS

  12. · kamo-internal

    Закладки для членов / чатов в панели центра взаимодействия

  13. · kamo-internal

    Список чатов с бесконечной прокруткой, виртуализированный через IntersectionObserver

  14. · kamo-internal

    Multi-select в MemberList для групповых чатов

  15. · kamo-internal

    Заголовок чата со стеком аватара, пополнением заголовка и сборщиком членов

  16. · kamo-internal

    Композитор с перетаскиванием, ожидающие фишки крепления, многолинейный вход

  17. · kamo-internal

    Пузырь сообщений с аватарами, действиями наведения и видимым индикатором

  18. · kamo-internal

    Встроенный рендеринг крепления и лайтбокс

  19. · kamo-internal

    Типы клиентов и крючки для сессий, квитанции, вложения

  20. · kamo-internal

    Прокси-маршруты для поиска или создания, члены, вложения, визуализация прокси, немой, отзыв

    Выдержка из раздела **************** Helper to app/lib/mediaServiceUrl.ts. Добавить прокси-маршруты: find-or-create, members, квитанции, вложения (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

    Добавить ******************* в 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

Ваша вселенная ждет.

Начните бесплатно через несколько минут. Добавляйте продукты, когда будете готовы — без миграции, без новых логинов.

Бесплатно навсегда — не требуется кредитная карта