Журнал изменений
Что нового.
Каждое усовершенствование платформы, как только она появится.
· kamo-internal
Пересмотр / сообщения - рендеринг iframe, контекстное меню списка, потоковая передача, гонки, a11y
Реализует аудит страницы /сообщений сквозной. Заявленные вопросы: - Кнопки Reply/Reply All/Forward теперь отображают текстовые метки; удалены из дополнительных действий выпадающие (они соседние кнопки), в то время как новое меню списка сохраняет их. - строки списка сообщений теперь открывают общее меню действий на правой кнопке и касании длительный пресс **************************** Строки получают кольцо фокусировки (j/k), флажок выбора (x) и прокрутка-в-просмотр. - Электронная почта теперь отображается в песочнице с автовысотой iframe (srcdoc) вместо встроенного Опасно, SetInnerHTML. Это изолирует электронную почту CSS/layout, которая фиксирует Reading-pane «отскок» и потеря среднего фрагмента текста закрывает приложение CSS-утечка и добавление по умолчанию «внешних изображений, заблокированных» трекинг-пикселя. Корректность/жучки: - Полнокомпонентный ответ/ответ - все теперь установлено в ответе/ссылках (объединенное сообщение проекта) тип) поэтому ответы остаются резьбовыми; быстрые ответные потоки Ссылки + родительский идентификатор, HTML- Он покидает тело и отправляется из активного почтового ящика. Вперед несет оригинальные вложения; ответ / вперед решить полное сообщение Вместо того, чтобы цитировать то, что открыто. - Охранники гонки (последние победители) на loadMessages / message select / thread load / загрузка разговора; опрос больше не отправляет пользователей на страницу 0; перезагрузка WS фильтруется в активную папку; SearchPage сбрасывает изменения запросов. - ThreadDetail расширит состояние с помощью folder+uid (cross-folder collision); только когда не прочитано; retry использует реквизит папки. - Композиция: смывной типизированный, но необязательный получатель на Send/Draft; дедуп вложения + 40 МБ совокупная капитализация + функциональные обновления; откажитесь от избыточного клиента OTK. - Прокси: передний диапазон + валидаторы кэширования для вложения / потоковой передачи; близко многокомпонентная вырезка на охраняемых прокладочных путях. - Email WebSocket: реальная остановка после максимума повторных попыток, экспоненциальная обратная связь, стабильное соединение retry reset; мемодифицированная контекстная ценность для сокращения оттока повторного рендеринга потребителя. Качество: унифицированный **************** a11y (aria-labels, aria-pressed, keyboard-operable rows/toggles); i18n (названия папок, даты списков, пейджеры, множественное число ICU; удаленный мертвый код и фантомные записи на клавиатуре.
· kamo-internal
Редизайн панели инструментов — акцентные семьи, masthead, section-index nav, унифицированная стеклянная карта
Перепроектируйте две наиболее посещаемые посадки в консоль оператора в форме разрешения. Фонд Включите уже сложенный Geist Sans/Mono (были отброшены запасным вариантом Arial); маршрут MUI типографика через Geist. - Добавьте токены семейства модулей White-label-safe-accent-*, лестницу возвышения, переднюю часть светового стекла, утилиты Operator-Label + .tabular и токен-ease-house. Fix -gradient-primary-transparent (была жестко закодированной синей, теперь полученной из -color-primary). Shared FeatureCard (один компонент, правильная клавиатура) Теперь настоящий якорь (NextLink): работа Tab/Enter/middle-click и фокус-видимое кольцо могут, наконец, выстрелить. Добавляет использование ReducedMotion Guard, в то время как InView вход на дом легко, семейный акцент освещенный чип, пип для подсчета внимания, весовые ярусы и прохождение onClick. Возрождает намерение цвета на модуль, которое было отброшено на рендере. Удалите раздвоенную встроенную домашнюю карту. Домой - Masthead (mono kicker + время / имя приветствие + табличная полоса статуса) заменяет баннер только для оргов; oklab Backdrop заменяет водяной знак в виде серой шкалы; разрешительная двухуровневая стартовая площадка (упорядоченная по использованию основная + сгруппированная директория) с полосой внимания «Needs you today» и «Jump back in» (новое использование HomeRecent + глобальный RecentRouteTracker); адаптивные разреженные / пустые состояния; реальные <h1> + ориентиры. Настройки - Рендеры, управляемые реестром, заменяют 18 блоков Collapse с копированием: липкий рельс индекса сечения + IntersectionObserver scroll-spy + живые подсчеты, 4 супергруппы, прогрессивное раскрытие (персональное открытое, недавнее осознание, восстановление последнего сечения, расширение / коллапс), ряды инструментов SectionHeader и фиксированный быстрый доступ (правильный срез MAX RECENT + относительное время + Начните здесь). Сохраняет все разрешения/флаг продукта точно. Сквозное сечение: скелет + Пустое государство, предпочтение-снижение-прозрачность + пути с уменьшенным движением, на одного оператора-лабеля колпачки отказа. Новые строки пользовательского интерфейса приземляются в камо-переводческом словаре (en) в компаньоне.
· kamo-shared-library
************* целенаправленное обновление
Асинхронизация (виртуальные нити) и плановые развертки удерживают отсоединенный ImgDat; Save()/merge() cascades into the orphanRemoval=true images collection and throws 'коллекция с каскадом = все-удаленные-сироты больше не упоминалась владельцем Субъектный экземпляр. Массовое обновление только миниатюрных столбцов позволяет избежать графа сущности Он полностью и безопасен для любых нитей.
· kamo-internal
Добавить ответ Все для чтения сообщений Pane and thread view
Ответить Все рекламировалось (клавиатура + клавиша i18n), но не было обработчик. Проводите его: новый помощник ComputeReplyAllRecipients вводит отправителя в Для каждого другого оригинального получателя в Cc, исключая самообман и демпфирование бесчувственно. Добавляет кнопку, ярлык «a» и запись контекст-меню в MessageBrowser, плюс кнопка за сообщение в ThreadDetailView.
· InitializerService
Частично уникальный индекс, обеспечивающий один активный пакет закрытия кредита (eClose double-close backstop)
Создать UNIQUE INDEX uk mlos closing pkg active loan ON mlos closing package (loan file uid) Где статус <> "УДАЛЕН" Долгосрочная поддержка сзади охрана идемпотентности ассемблера: дублированный активный закрывающий пакет Управлять собственной регистрацией MERS + финансированием (двойное закрытие). Закрытие пакета живет в Shared-lib только с неуникальными записями @Index и не может выразить частично уникальное ограничение через JPA, так что это рукописный DDL здесь (KI владеет) схема). Idempotent; применяется при следующем запуске KI.
· MediaService
Эскизно-плановые материалы в процессе
Безголовая зачистка не может управлять миниатюрным конвейером ConversionService OTK, поэтому сгенерировать миниатюру Page-0 PNG через ImageIO сразу после хранения экспорта Запланированные материалы теперь отображаются в сетке, как и любые другие, без заправки.
· kamo-internal
Регулярные графики генерации UI
Менеджер расписаний: создавать/список/удалять расписания (рецепт + ежедневно/еженедельно/ежемесячно +) час/день + необязательные цели автопоста + подпись; запущено из Материалов, закрыто Возможность автозаполнения Canva (Enterprise). + canvaApi + /api/canva/schedules proxies.
· MediaService
Запланированное поколение — зачистка запускает рецепты по каденции
- CanvaScheduleController: CRUD для расписаний организаций (рецепт + каденция + час / день +) факультативные социальные цели, вычисления NextRunAt CanvaGeneration Обслуживание: безголовый ********************** Материал (в процессе ImageService; миниатюра до обратного заполнения) - CanvaScheduleSweep: @Scheduled sweep, Atomic per-schedule claim, generates and Автосообщение с лучшими усилиями результата целевым социальным связям через подпись Public-URL Seam
· kamo-shared-library
CanvaSchedule entity + repo (повторяющаяся генерация)
Регулярный график (рецепт + каденция + факультативные социальные цели) Атомный запрос, поэтому развертка MediaService выполняет каждый график один раз.
· kamo-internal
Расширяемая расшифровка Whisper на софтфонной голосовой почте + строки истории звонков
Каждая записанная строка (голосовая почта и история звонков) получает переключатель «Transcript», который Вычитает запись Whisper транскрипт по требованию и показывает его в строке, так что Участники могут прочитать его, не открывая игрока. Кашед на запись.
· kamo-internal
Сохранить + повторно использовать рецепты автозаполнения
TemplateAutofill: чипы «Спасенные рецепты» загружают шаблон + предварительно заполненное отображение; «Сохранить как рецепт» сохраняется текущий шаблон + значения поля в целом. + canvaApi list/save/delete + /api/canva/recipes proxies.
· MediaService
Сохраненные рецепты автозаполнения CRUD (org-scoped)
CanvaRecipeController: GET/POST/api/media/canva/recipes + DELETE/{id} — сохранение/список/мягкое удаление названного шаблона бренда + отображение поля, приложенное к Орган звонящего.
· kamo-shared-library
CanvaAutofillRecipe entity + repo (сохраненные рецепты автозаполнения)
Org-shared — связывание шаблона бренда Canva с значениями поля (буквально) текст или изображение Материала, поэтому стюарды могут повторно запустить стандартное объединение данных.
· kamo-internal
Добавить поле Material ID для создания формы, страницы деталей и импорта
Пропускает нулевой материал Id (макс 40) через тип Lead, leadsApi (создавать + обновлять запросы проводов) и совместно используемое системное поле leadFields Список, который управляет как мастером ручного импорта, так и API / поставщиком впускное отображение UI (плюс загружаемый шаблон CSV). Добавляет вход в /leads/new and a view/edit row on the lead details page, wired to the Панефлеш карта в реальном времени. Ярлыки через leads.new.fields / leads.view.fields / leads.view.rows (материальное право).
· kamo-internal
Enterprise Autofill UI — шаблоны брендов для слияния данных
TemplateAutofill: выберите шаблон бренда Canva, заполните каждое поле буквальным текст, токен соответствия/орга (NMLS #, Раскрытие информации о равном жилье, имя/телефон/орган) веб-сайт / адрес, имя участника или изображение Материалов; генерировать слияние данных проектировать и импортировать его обратно в материалы. Оригинальное название: Gated on the Canva 'autofill' (предпринимательская) способность. + методы canvaApi и /api/canva/ **************************** Прокси.
· MediaService
Автозаполнение предприятия — шаблоны бренда Data-merge
- CanvaApiClient: список шаблонов бренда (dataset=non empty), получить набор данных, Загрузка активов, создание / получение рабочих мест автозаполнения - CanvaController: GET/brand-templates, GET/brand-templates/{id}/dataset, POST /autofill - разрешает поля изображений, загружая указанные материалы материал для Canva как актива, затем данные сливаются; опросы для нового дизайна. Canva 403 (без возможности автозаполнения) поверхностей как autofill not available.
· SecurityService
Persist Mapped Material ID на ручном импорте + прием API
Оба переключателя setDirectFieldOnCreateRequest не имеют чехла по умолчанию, поэтому Безымянная системаFieldPath тихо падает. Добавить материал Id case в ручной импорт (LeadImportController) и вендор/API-intake (LeadIntakeController) Диспетчеры, таким образом, отображают столбец / поле Material ID на карте.
· kamo-shared-library
Добавить Material ID поле end-to-end в shared-lib
Добавляет обнуляемый материал с максимальным значением 40 шаров в Ведущую сущность (MATERIAL ID) VARCHAR(40)), регистрирует его в LeadHistoryFieldRegistry (категория профиля) Редактирование проверяется, потоки его через создание / обновление / чтение DTO и Создание/обновление LeadService (трим + усечение до 40, зеркальное название компании) и сохраняет его по всей базе <->конверсия лидов ипотеки.
· kamo-internal
Социальный атташе + электронная почта-материал + публичные ссылки
Распространение маркетинговых материалов, построенных по новому подписанному публично-URL шву. - МатериалыApi.publicLink(imgId) + /api/materials/link proxy - Материалы: "Копировать общедоступную ссылку" и "Электронная почта этого материала" (прикрепляет файл к отправка через существующую многочастную /api/email/send, закрытую по электронной почте MaterialPickerDialog (многоразовая сетка над MATERIALS) SocialComposer: некогда отключенная кнопка фото теперь открывает пикер и прикрепляет Материал в качестве средства массовой информации через общедоступный URL (работает для Meta/Telegram/Discord)
· MediaService
Краткосрочные подписанные публичные URL-адреса для маркетинговых активов
Позволяет социальным провайдерам (Meta) и электронной почте получать определенный материал для ограниченного доступа. Окно, не обнажая приватное ведро для обработки изображений. - MaterialUrlSigner: токен HMAC-SHA256 (платформа.enc-key) = imgId:orgId:exp, 1h TTL - MaterialsController: POST/api/media/materials/link (авт → mint URL для ссылки) Изображение компании MATERIALS) + GET **************** (Неправда) обслуживать байты для действительного токена; org + assoc проверен. Избавляет от существующего Бессессионный /api/media/** — изменения APIService не требуется.
· kamo-shared-library
Первоклассный заемщик самостоятельно подает переход *******************
ДРАФТ → ПРИМЕЧАНИЕ ТАКЕН для заемщика (кредитная сторона, а не оператор, поэтому нет) LOS TAKE APPLICATION. Маршруты через переход () с ограниченным предикатом, который предоставляет ТОЛЬКО право на получение заявки и прикрепленный к StatusId, поэтому заемщик Подчинение становится надлежащим переходом трубопровода — государственно-машинной законностью. хеш-цепочка, ApplicationSubmission (INITIAL DISCLOSURE) и Событие STATUS CHANGE — вместо молчаливого вымогательства статуса кредитного файла. Членство в кредитной партии проверяется абонентом.
· kamo-internal
Удалить + предварительный просмотр + импорт-файл-в-Canva
- удалить материал (с указанием MANAGE MATERIALS) с подтверждением - щелкните миниатюру, чтобы просмотреть ее в лайтбоксе «Импортировать файл» превращает PDF/PPTX/изображение в редактируемый дизайн Canva (Прокси восстанавливает многочастное тело, как загрузчик изображений)
· MediaService
Импорт файла в Canva как редактируемый дизайн
********************** (импорт бинарного дизайна) - CanvaController POST /imports (многочастный) → создание + оплата импортной работы → редактор Глубокая связь с корреляцией состояние для возврата-nav - отказаться от неиспользованного импорта Base64 в CanvaOAuthController
· InitializerService
Миграция добавляет запись.transcript TEXT столбец
· VOIPService
Возврат транскрипта в записи метаданных для софтфониста
· kamo-internal
Show Whisper расшифровка в софтфон медиаплеер
· ConversionService
Shared TranscriptionService + общая конечная точка; транскрибирование записей VOIP
- Извлеките многоразовую службу транскрипции (ffmpeg normalize -> whisper-asr) и универсальная конечная точка POST/api/conversion/transcribe, заменяющая специфичную для конкретного Контроллер. Meet + VOIP теперь имеет один путь транскрипции. - RecordingProcessController: транскрибировать каждую завершенную запись VOIP / голосовую почту в процессе (не фатально при отказе) и хранить транскрипт на Записи.
· kamo-shared-library
Обсуждение Recording + RecordingMetadata
Добавляет столбец TRANSCRIPT TEXT к записывающей сущности и выводит транскрипт **************************** (с обратной совместимостью) Таким образом, существующие абоненты 5- и 9-арг не затронуты. Населенный The Запись-окончание потока через Whisper; созданный миграцией KI.
· MediaService
Проверить подпись Return-nav JWT; аккуратное обновление токена
CanvaJwtVerifier: проверьте сигнатуру Ed25519 в корреляции jwt Canva's JWKS (/connect/keys), плюс aud/exp/type; ключи, кэшированные ребенком. Return-nav теперь не закрывается для ручного импорта, если проверка не выполняется. - CanvaTokenService: откажитесь от неэффективного @Transactional Обновление/помощники для дауна (Spring Data's per-call tx + блокировка для каждого участника) уже сделать токен ротации правильно; уточнить с комментарием.
· KlusterServices
Сделайте шепот-аср независимо масштабируемым (HPA, многоузловый)
Удалите одноузловый штифт и переключитесь на кэш-память для каждой модели, чтобы стручки могли Расписание на любом узле и добавление HPA (мин 1/макс 4, CPU 75%, преднамеренно) Ускорение, учитывая медленные модели холодных стартов. whisper-asr — общая транскрипция бэкэнд для записей встреч и VOIP-записей / голосовых сообщений.

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