Перейти до вмісту
KAMOUniverse

Журнал змін

Что нового.

Все усовершенствования платформы, как только она будет запущена.

  1. · kamo-internal

    Проксі маршрути та чиста модель майстра

    1:1 маршрут: /api/docs/legal/member/** впередToApi володіє рядком запитів та /api/esig/member/* ESIG SERVICE URL з генеруватиOTK, оскільки APIПослуги /api/docs/* та нічого вперед /api/esig/**. Один OTK, один запит на шляху: OTKAuthFilter робить getAndDelete. PDF маршрути потокові байти і збереження статусу вгору, тому 409 (the Заморожений вміст трави більше не відповідає збереженим байтам) досягає майстра як 409 замість пошкодженого PDF. Консент - це один маршрут, який не повинен бути ESigService відповідає його пустою 200. Кожне правило, яке живе в чистому модулі, тому що випробуєте тут тільки .test.ts в середовищі вершини. Визначений документ, що надає від підпису маршрут — ті байти ESigService flattens, і які ви бачите, повинні бути те, що Ви підписалися; визначте документ, що підтверджується версією DocsService маршрут. Покрокова вісь є наказомІндексу і кроком атестації існує навіть для пакет з нульовими документами для реєстрації.

  2. · kamo-internal

    Port the kamo-signer реєстрація в kamo-internal

    Кожен пакет @kamo/* приватний:true with import:./src/index.ts" і не будувати крок, так що немає опублікованого артефакту — файли скопійовані і переоцінюються на відносні імпорти. Поведінка не змінюється; тільки імпорт і i18n переміщення. pdfjs-dist 4.10.38 з SELF-HOSTED робочим папером, що скопіюється за допомогою преbuild step. Нема **************************************************************************************************************************************************************************************************************************************************************** є різним двигуном і неприпустимою для правово пов'язаної поверхні, а два Об'єкти GlobalWorkerOptions залишаються некоректними тільки тому, що модульні екземпляри не відповідає. Не полеElement.tsx або: його FieldControl рендерує точилкаПодії:'Не обов'язково з'ясувати значення — дизайнер попереднього перегляду, а не вхід. ВикористанняПерекладів видається з чотирьох компонентів підписки: вони називають kamo-signer's власні ключі повідомлення, словник kamo-internal не має їх, і нові ключі не можна придумати. Стрінги прибувають як пропси. SIGNATURE FONTS є пропа ніж чотири наступні / шрифт / Google завантаження для одного модуля; типований ідентифікатор шрифту все ще їде через CapturedSignature.typedFont так flatten і сертифікат неоцінений. Дві позначені відхилення від словесної копії, як у знакуСторі: - обов'язкові дані на полях. kamo-signer підрахував їх; FieldCompletion — вихідний сервер-захищений контроль — не (=============================================================================================================================================================================================================================================================== Збереження Реєстратор копіювальника, ніж сервер, буде припаркувати учасника на проміжку, вони не мають контроль за тим, як сервер розглядає конверт завершено. - проект стійких охоронців локальногоповіту замість вікна. вікно неправильно питання: локальнийСтораж може бути відсутнім (сервера рендерингу) або кинути на доступ (приватний режим, перегороджений накопичувач), і проект не повинен брати майстра з ним.

  3. · DocsService

    Встановити поверхню членів на /api/docs/legal/member/*

    Окремий контролер з окремою вороною, оскільки авторизація тут особистість і не право HR. Поправка цих через охорону () буде означати або блокування кожного працівника з власної паперової роботи або розширення LegalPackageAccess до сітчастої сітки шаблонів та глядачі будуть відкриті до всього org; клас не містить посилання на LegalPackageAccess так скорочень немає. Немає картографування, що бере участь у id або org id — обидва приходять з сеансу. Послуги ВідповідьStatusExceptions зберігає свій статус: 404 незалежних, 409 вже готових, 422 не зареєстрований і 503 esign-unЗагружено гостем і один з них – учасник вже досягнув успіху. Несподіваючий виняток фіксований-string 500: echoing e.getMessage() є переносним на поверхні HR, але це кожен працівник може досягти. Вилучення KToken перейшло на безпеку/SessionKToken так що це не третій словесним копіюванням.

  4. · DocsService

    Атестація пакету на фініші, і ЕКСЕКТУТОВАНО/АВАТИ Інші розщеплені

    Написання правової програми WORM: атестаціяTextSha256 від FROZEN версія (проект пакета, що складається з глута і вже може бути reworded), проявляєтьсяSha256 над замовленням [{documentUid, contentSha256, ЗамовитиIndex}] фактично представлений, atestedAt додаток-set, джерелоIp від прямо вліво X-Forwarded-Для прогулянок, доказBlob дієслово, так що травлення може бути з'явився пізніше. Клієнт не довіряє до завершення. До чогось написано, кожен Зареєстрований конверт документів перечитується від ESigService; мій одержувач повинен бути SIGNED, і PARTIALLY SIGNED не згорнув шлях DisclosureEnvelopeSyncService згортає його, так що званий лічильник-видатковий дохід AWAITING OTHERs, а не пакет, який вимагає виконання. Не вдалося прочитати відмову від обробки — Зателефонуйте, що будь-який підписаний. Пакет з нульовими реєстраційними документами не створює конвертів, дзвінків ESigService на всіх, атестація – це лише докази виконання. Друга обробка повертає існуючий ряд: @PreUpdate кидає дизайн і Індекс міграції UNIQUE про призначення uid є реальним послідовником.

  5. · DocsService

    Ідентифікований учасник читання поверхні для завдань

    LegalAssignmentOwnership – охоронець від LegalPackageAccess з метою: не має права HR, а також розширення HR читати набір, щоб визнати їх, будь ласка, будь ласка, зв'яжіться з нами Повний роутер аудиторії з електронними листами. Все, що не є платником відповіді про те, що він відповідає ідентичному 404 — 403. деталь() проводить першого перегляду бухгалтерського обліку на HR-ряді (firstViewedAt, PENDING -> IN PROGRESS, а не в ESigService, тому одержувач-статус машинка доторкнулася, і значок залишається чесною. Атестація слів приходить від версії FROZEN, ніколи не від проекту мута. Документація Pdf служить ACKNOWLEDGE-ONLY документи і виправляє подані ImgDat перетравлення вмісту на замороженому вмістіSha256 перед цим слугує байт; зберегтиImgContent repoints img.setDat на кожен Docs зберегти, тому drift живий. Приблизні документи відмовляються від 409 промовлення маршруту — байтів необхідно приїхати з сервісу, яка їх розтоплює. KToken's orgID/memberID є примітивним довгим, тому стиль плану "= null" check is 0 замість; екстрактKToken листя 0 за відсутністю поле сеансу.

  6. · DocsService

    Маніфест канонічна форма і спофостійкий клієнт IP

    проявляєтьсяSha256 замовляється [{documentUid, contentSha256, замовленняIndex}] не може імітувати її поле межа і зробити два різних наборів документів, які мають однакові. JavaScript licenses API Веб-сайт збережені дієслова і круглі смуги назад до того ж перетравлення — доказовий благ, який не можна перегенерувати власні хеши, що не доводить нічого. ЮридичнийКлієнтІп ходи X-Forwarded-For ПРАВО-ЛЕФА і бере перший публічний хміль. DocumentAccessAuditor читати його зліва направо, що підконтрольний клієнту; передвиборний дефект не фіксується тут, але він не повинен бути джерелом джерело даних.

  7. · ESigService

    Поверхня підпису членів-аутентифікованого учасника на /api/esig/member/**

    OTKAuthFilter охоплює тільки /actuator, /api/esig/public і /api/esig/internal, Так, цей префікс є за кадром OTK, який вже перебуває в orgId/memberId запит. Одержувач ніколи не змінився шлях: він вирішується з урахуванням відповідності EsignEnvelopeRecipient.memberId до ID OTK, тому немає параметра учасник може змінитися до рядка колеги. Недобрий, не-йор-орг і не-on-this-envelope всі відповідають ідентичним 404. No /delegate — це документ відповідності до до довільної зовнішньої пошти без затвердження і не відключений прапор; виключений відпуском, не прапором. Ні /decoder і no /stepup будь-який: одержувач-scoped decoder належить до порожнечі шлях, і step-up наведено на сеансі вивіски Redis. SignerIpAddress походить від ПРАВО-ТОВИЙ X-Forwarded-For Walk. EsignPublicController.clientIp читає лівий шлях, який керується клієнтом і, отже, порожне, і це значення землі на явному полі.

  8. · kamo-internal

    Призначені пакети суб-таб і доставка/червоні дії

    AG Сітка спільноти над MUI-paginated fetch — співтовариство не має моделі сервера-стороннього ряду, Таким чином, серверні сторінки та сітки забезпечують саме те, що було зроблено. Виконаний стовпець виходить на сервер з того ж стану чіп рендерів, тому два не можуть незгодні, і реєстраційний документ без конверта підніме попередження, а не сидячи як «закінчення» назавжди. Праворучний фільтрувальний стовпчик очолював власну команду-члена org, починаючи з дані, з підставкою "Все" ряд — свідомо не одна міжпольована "Все {Team Члени}" рядок, оскільки тільки таке повідомлення у словнику має розбитий Винайдені нові ключі. Растр перетворює існуючу аудиторію, а не написання тринадцятий примірник членів-підписувачів + команди-члени-підрядники подвійного зчеплення, який повертає СПЕКТИП, КАДИДАТ, ТЕРМІНАТОВАНИХ та РЕЗОНОВАНИХ членів. "1-25 / 100" побудовано з даних, а не з загального.table.of, чия значення є EMPTY STRING в pl.json — ключовий охоронець тільки доводить ключ, який існує в т.д. Неймовірно використовує фіксоване слово VOID: він скасовує живі правові інструменти org-wide.

  9. · kamo-internal

    Юридичний пакет доставляння/відновлення/повідомлення клієнтів

    Thin 1:1 переадресаToApi маршрути — один запит на потік кожен, оскільки OTKAuthFilter робить getAndDelete і перманентна петля в наступному маршруті буде потрібно один OTK за гравця. Про нас Список переходить на PATH ONLY; переадресуToApi об'єднує рядок запиту браузера. Статус на сервери доводить ключ, який існує в конверті, і повідомлення / is gitignored, тому локально додано ключ а потім не змогла побудувати Docker. Кожен ключ тут було перевірено по всій місцевості 22 наявність та розміщення рівності, а також тестових штифтів, які не мають чотирьох відомих пошкоджені ключі коли-небудь повернулися. Порожній вибір недійсний надсилання командиMemberIds ключа на всіх — це відсутність того, що вибирає org-wide branch; порожній масив недійсний нічого і звітувати нічого. RedeliverResult не продовжить DeliverResult: RedeliverResultDto не має версії поле, тільки *********** Зважаючи на це нерухомість Backend ніколи не надсилає, тому доставкаSummaryParts читає новийVersionКількість для redelivery замість звітності v0.

  10. · DocsService

    Org-scoped, Paged, фільтрований список правових пакетів

    Вбудований метод репозиторій EntityManager, а не загальний метод репозиторій: динамічний і додаючи його до камо-шаред-ліберта, змусить спільний архітектурний ремонт на будь-який споживач для запиту тільки питання DocsService. Предикатор організації - це безумовний і перший, і тест доводить, що він виживає Кожна комбінація фільтра — кінцева точка не бере параметра org, тому скидання буде перераховувати інші завдання орендаря. Paging несе в'язану краватку-брейк через 200-член доставки направляється Кількість документів два ГРУП за запитами, не 25 зарядних пошуків. Невідомий статус - 400, ніколи не мовчить ігнорується фільтр на сітці комплаєнсу.

  11. · DocsService

    Повідомлення про недійсний правовий пакет, org-широта або за іменованими членами

    Результатів перевизначення — недійсні, пропущені, не пов'язані — через адмін недійсний пакет для шести названих людей, щоб дізнатися, які вже були виконані докази) і які ніколи не були приписані. Баре 200 не може сказати, що. Переходи відправлення синхронні: рядок призначення, не статус електронного знака, які ворота членів і приводять значок. Конвертувати порожнечі відступати і pre-filtered на SIGNED/VOIDED, тому що voidEnvelope 409s заповнений конверт і Повноцінний документ не містить конвертів. Один учасник може утримувати декілька рядків після того, як черв’як, так кожен рядок отримує своє рішення.

  12. · DocsService

    Редактор змінного пакету, що надходить до відкритих завдань

    Використовуються, якщо живий відбитк відрізняється від опублікованого. Біндер.dateUpdated є мертвим і Img не має ревізійної лічильники, так що відбитки пальців є єдиним сигналом змін є — без брами, Redeliver — кнопка, яка мовчить недійсним в-прогресних роботах та редагує ідентичний інструмент. Публікація через існуючий шлях публікації (єдиний письменник версій рядків), позначки кожен вихідний збір, що відповідає їх нетривалим конвертам для недійсності, і перевизнання до набору іменованих членів, а також будь-який новий матч — повторно ЗнайтиАудиторія, тому учасник припиняється з моменту отримання першої доставки. Виконуються завдання доручені; вони є доказами.

  13. · DocsService

    Виконувати юридичний пакет до своєї аудиторії, від запиту

    Планувати на вимогу нитка (дві недорогі запити, тому відповідь точно про те, хто є в т.ч., який пропущений і чому, виписав його: 200 членів x 8 документів 1,600 рядків плюс стільки ESigService дзвінків, і DocsService обслуговує WOPI. Басейн не є пружинним виконавцем. JavaScript licenses API Веб-сайт ****** і DocsService вже має bare @Async на KSessionService and DocumentService - видавництво Виконавця безшумно рухайтесь Схожі WOPI на цей невеликий обмежений басейн. Конверти створюються за межами будь-якої угоди; З'єднання Hikari - як басейн з десятьма зірками. Вивісний документ, конверт якого не тримає нулл конверт uid, який є єдиним сигналом сітки. Редактор/void/assignment-grid картографування землі тут теж, тому контролер має ONE авторизація воронку написано і доведено один раз на другий болт. своїх послуг відповідають 501 до завдань 4-6 заповнити органи.

  14. · DocsService

    Планувальник доставки — збірна ціль, електронний лист попередньо фільтра, дата

    Компанія Deliver - це новий шлях і покликаний бути повторним. призначення відхилено, ніж дана друга копія одного інструменту. Члени з електронною поштою не підраховуються і пропущені передніми, оскільки EsignEnvelopeService 400-й знак без однієї з всередині петлі, після того, як раніше учасники вже мають живі конверти. Забір аудиторій ORs три предикати, тому дублікати згортаються. Визначений документ, навмисно не отримує конверт.

  15. · DocsService

    ESigService внутрішній клієнт для надання юридичних послуг

    Першокласне обслуговування клієнтів DocsService. Повідомлення ****************************************************************************************************************************************************************************************************************************************************************************** (район MANUAL, ніколи не допущений) ПригнічуєІнвіте=true — HR надсилає одне повідомлення, а не один за документ у учасника. Терміни явні: EsignEmailClient будує ледь RestTemplate з жодним чином, і несвоєчасно прочитати на звареному под шпильками робочу нитку до перезавантаження. Ніщо кидає на похибка по потоку, оскільки питання, що відтворюються від вентилятора, один дзвінок на реєстраційний документ для учасника і не повинні абсорбувати партії над одним поганим шаблоном. Неймовірні карти 409 до звітної пропущена, а не помилка. Відповідні записи ігнорувати невідомі поля — Об'єкт контекстного об'єктуMapper все ще має FAIL ON UNKNOWN PROPERTIES.

  16. · kamo-internal

    Шаблони пакетів для правової та комплаєнсу

    Замінює корпус HrTabPlace тільки — маршрут, запис вкладок і ворота вже існує в hrTabs.ts. AG Grid Список спільноти плюс діалогове вікно створення / виходу з замовлений бункер, призначений для HR RESOURCE (звичайний 13, не ID 15), up/down reorder, та відділ / Job Type мульти-вибірники, які перевозяться у всіх містах. Про нас мітка Toggle - це власний графічний колектив-член, який ніколи не закодовано. Немає нових ключів i18n: кожен мітка повторно використовує ключ, словник вже визначає, і підрахунки з даними.

  17. · kamo-internal

    Юридичний пакет проксі-маршрутів, клієнтів-апі та чистих помічників

    Thin 1:1 фортепі маршрути під /api/docs/legal — один запит на потік кожного, Оскільки OTKAuthFilter робить getAndDelete і вентиляційною петлею в наступному маршруті буде потрібен один OTK для учасника. Іди залишаються рядки до кінця (unique rowid). Замовити зафіксовано, а не загортання, а списки аудиторій відправляються порожніми, коли всі команди Члени не можуть повертатися.

  18. · DocsService

    Попередній перегляд дозволу аудитора

    За допомогою командиMemberRepo.findAudience, який є тільки зчитувач, що несе обов'язковий ACTIVE + реєстраційний номерДержавний обов'язковий індекс — Команда-члени-контрактори кінцевої точки повертає ПЕРСПЕКТИВИ, CANDIDATE, ТЕРМІНАТОВАНИХ та РЕЗОНОВАНИХ. Прапори, які не мають електронної пошти (EsignEnvelopeService hard-400s без одного) та членів нижче TEAM MEMBER безпеки (ImagingController безшумно пропускає подану копію). Анжела аудиторія не вирішує нікому, а порожні списки id стають направленими ОР-Д В пунктах, що залишаються дійсними SQL.

  19. · DocsService

    Публікація заморожує версію з документами

    Pins img dat id плюс вміст хеш, не Гим id: зберегтиImgContent repoints той же самий Img на нових байтах на кожному Docs зберегти, і вирішувати при побудові сеансу і розплавці. Знімки замороженого дизайну замість відпуску вирішитиДизайнДизайнЖсон повернувся на новий, відмовляється від документа без перетворення PDF, і відмовляється від опублікування, відбитки пальців яких не перенесли.

  20. · DocsService

    Юридичний пакет CRUD на /api/docs/legal/packages

    Список, створення, оновлення та видалення, з замовленими рефами та аудиторією рядків заміщений в комплекті. Org йде з сеансу на кожному шляху - DocsService OTKPreAuthFilter продовжує ланцюжок без токену, тому екстракт контролераKToken IS автентифікації. Cross-org відділ, назва роботи, не мовчить нічого.

  21. · DocsService

    Нормативно-правовий пакет

    Іди перетинаються як рядки (unique rowid перевищує МАКС SAFE INTEGER). Замовлення Биндера - замовити список, демонтований і ненумерний вхід 400s, а не пропущений — Німецька стрибка - як повторне замовлення втрачає бункер. Списки електронної аудиторії згортають відправник так, що OR'd IN в пунктах пошукуВедучі залишаються дійсними SQL.

  22. · DocsService

    Зміст відбитків пальців для юридичних пакетів

    Binder.dateUpdated ніколи не рухається після INSERT, тому вміст пакета не має змін сигнал для порівняння. Додає SHA-256 над канонічним замовленим в'язаком/item tuple — включаючи imgDatId, тому що зберегтиImgContent repoints той же Img на нових байтах на кожен Docs зберегти — плюс атестацію тексту Кондиціонери так, що ремесланий configJson не може зависати інший макет. Також додає com.kamo.z.shared.hr.legal до репозиторійного сканування.

  23. · SecurityService

    Push platform-admin state changes instead of being polled for them

    Every platform screen backed by this service refreshed on a timer, because this service has no WebSocket and therefore no way to tell anyone anything: the closed-loan trainer tab re-read every 4 seconds while a run was live, DNS provisioning every 15, commerce sync logs and VOIP recording stats every 30, and the domain setup page asked verify-dns once a minute per open tab. PlatformEventPublisher sends these to core NATS and MediaService's new PlatformStompRelayController puts them on STOMP. Core NATS rather than JetStream, matching ThemeProvisionPublisher: this service's stream is CHAT_MESSAGES/chat.>, so a JetStream publish to security.* would fail expected-stream validation and be dropped. At-most-once is the right trade — every consumer also loads over REST when it mounts, so a lost event costs a refresh, never correctness. Wired at the points where the state actually moves: - ClosedLoanTrainerService on each progress write, on claim, and on every terminal state, so the monitor advances exactly when the walk does. - DnsProvisioningService as each record settles, rather than the panel re-reading the whole log hoping something landed. - RetailSyncLogBroadcaster on each sync-log row, via the new shared-lib listener seam, keyed by provider config so an org syncing several providers does not redraw all of them because one moved. Two counters have no such moment, and are handled honestly rather than pretended into events: - The VOIP recording backlog is written by another service entirely, so PlatformStatsWatcher samples it — but on the server, once, and it publishes only when the numbers actually change, so a quiet backlog produces no traffic where the old arrangement re-sent an identical payload to every viewer twice a minute forever. trigger-sync publishes immediately, since it knows the backlog is about to move. - Diagnostics is live JVM/host/database readings where essentially every field differs second to second, so there is nothing discrete to push. It gets a bare tick: one server timer deciding when "now" is worth re-reading, instead of one per open tab each pulling the full snapshot. DomainVerificationWatcher replaces the setup page's polling. DNS propagation and certificate issuance are genuinely external state with no event to subscribe to, so the checking has to happen somewhere — but not in every browser. One sweep covers every waiting domain, takes the 25 least-recently-checked so a backlog of misconfigured domains rotates instead of being re-queried in full, only probes HTTPS once DNS resolves, and publishes only when a domain actually advances. Two existing tests construct these classes directly and were updated for the new constructor parameters. Note: **************** fails on main already (unset EntityManager in the test's hand-built service) and is untouched by this change — verified against a clean HEAD worktree.

  24. · EmailService

    Публікова поштова скринька-зміна подій, так що поштові переглядів припиняють опитування

    Список папок, список розмов та список повідомлень, кожен побіг свій 30-другий таймер, перезавантаживши на шанс, що щось було перенесено. WebSocket вже Повідомляємо їх, коли прибули поштові скриньки, але це лише один із способів зміни поштової скриньки — читання повідомлення в Roundcube або на телефоні, переміщення його, видалення його або Витягуючи все, що залишив UI неправильно, до наступного удару. EmailMailboxChanged коментує папку більше, що ви показуєте, і несе причина, що споживач може ігнорувати види, не піклуючись про це. Опубліковано e-mail.changed.<addr> і relayed to *********** від Ідентифікатори IDLE (прибуття, вибухання, зміна прапора) і з маркування, прапори, перемістити, видалити, спам, відправити і протягувати кінцеві точки. Не складаний в електронному листі. має отримати доступ до провайдера та вугільних родовищ, щоб залишитися доступним. Про нас немає нічого, тому досить дешево, щоб відправити на кожну зміну і не варто чекати за вікном. Перехід звітів немає папки, оскільки він доторкнеться двох і джерела не завжди Відомий за допомогою абонента — споживачі лікують, як «завантажити те, що ви показуєте».

  25. · MediaService

    Ажурні події платформи безпеки на STOMP

    SecurityService володіє поверхнею платформи — конфігурацією системи, DNS надання, синхронізація електронної комерції, але не має кінцевої точки WebSocket, тому кожен екран Повернувшись до нього не вдалося розповісти нічого і освіжити на таймері замість: Замкнений тренер вкладка кожні 4 секунди, DNS надання кожного 15, торгівля синхронізація журналів і VOIP запис статистика кожні 30. Публікує до сердечника NATS; це кладе повідомлення на STOMP, тим самим ************* вже використовується. Предметом призначення є механічна — краплина провідної «безпеки». dots for slashes, so security.dns.log.42 прибуває на /topic/dns/log/42 — який означає новий тип заходу, який потребує видавця та підписника. Префікси є обов'язковими для забезпечення безпеки. > подвійне проникнення безпеки.theme.provision.*, які ThemeProvisionStompRelay вже реле на однакову тему.

  26. · kamo-shared-library

    Оголошено стан синхронізації та домену замість запилення

    Два гачки для перетворення штовхача в SecurityService, де кілька платформ екрани освіжають на таймерах, оскільки не було ніякого способу розповісти їм що завгодно. РоздрібнийSyncLogListener є додатковим повідомленням шва на RetailSyncOrchestrator, називається коли синхронізація записує свій IN PROGRESS ряд і знову, коли він пише термінал. У оркестрі залишаються ненависті про те, як проїхати повідомлення, і без виконання, зареєстрованих в ній, як і раніше. Синхронізація провайдера Dashboard перезавантажив весь список журналів кожні 30 секунд, щоб дивитися запустити його просто сам. ****************************************************************************************************************************************************************************************************************************************************************************** список доменів верхнього рівня, які не мають закінчився — DNS неперевершений або перевірений без підтвердження сертифікату. Він існує для годинника-перевірки сервера: сторінка налаштування домену, що запилюється Перевірити-dns раз на хвилину за відкритою вкладкою, чекаючи на поширення публічного DNS і Сертифікат відповідності. Замовили принаймні-відкладений перший і прийнятий з Pageable обмежувати так, що один ковпачок не може виростити з числом постійно неперевершених доменів.

  27. · ESigService

    Дозволити відправника, щоб пригнічувати первуферу запрошення електронної пошти

    Створення конверту безумовно по електронній пошті запрошення, тому абонентська партія багато Конверти за одним повідомленням не встигли залишитися спокійним. Нулл зберігає існуюча поведінка; токен доступу все ще видається як спосіб.

  28. · EmailService

    Push INBOX unread counts over NATS/WebSocket instead of polling

    The nav-top mail badge in kamo-internal refreshed itself by calling /api/email/folders every 30 seconds, per browser tab. That endpoint walks the entire folder tree and opens every folder read-only to answer, so the cost of one integer was a full mailbox summary, repeated indefinitely. The WebSocket that already existed only announced that mail had arrived and carried no count, so its one job was to trigger another poll. Publish the count itself: - EmailUnreadSnapshot on NATS email.unread.<addr>, relayed to STOMP /topic/email/unread/<memberId>. NATS is in the path because the pod that observes a change is routinely not the pod holding the member's WebSocket. - EmailUnreadPublisher coalesces per mailbox, so a ten-message IDLE delivery or a page of mail marked read is one IMAP round trip and one publish, off the caller's thread. - MailReader.getUnreadCount reads one folder. Graph answers it from the folder list it already returns; IMAP-backed providers override it with a single STATUS (UNSEEN). - A snapshot is published on subscribe, on IDLE messagesAdded/messagesRemoved, on IMAP flag changes, and from the mark-read / flags / move / delete / spam endpoints. Three gaps this also closes: - Flag changes were invisible. Reading mail in Roundcube or on a phone sets \Seen without adding or removing a message, so the badge only ever fell when the browser next polled. IDLE now carries a MessageChangedListener. - Cloud mailboxes got no push at all. EmailWebSocketController resolved credentials through the KamoMail virtual_users table, which has no row for a member on Microsoft 365 or Google Workspace, so subscribe() logged a warning and returned. It now resolves through MailProviderResolver, and IDLE connects with the credential spec (host/port/TLS/XOAUTH2) via a shared ImapStoreFactory.connect rather than assuming the KamoMail host and a password. - Sessions leaked. A closed tab never sends /email/unsubscribe, so mailboxes are now reference counted per STOMP session and released on SessionDisconnectEvent. Mailboxes with no live IDLE listener — Graph, past the 50-connection cap, or a dead IDLE thread — are swept server-side every 60s and published to the same topic. That replaces per-tab polling rather than push: one sweep serves every tab a member has open, membership is re-tested each pass so a dead listener is picked up, and the browser still receives the count over the WebSocket. MessageIndexer binds email.> and deserialized everything on it as a message, so it now skips subjects outside email.inbox. — filtered in the handler rather than by narrowing the subscription, because email-metadata-indexer is a durable consumer and changing its filter subject would reject the subscribe on every pod until the durable was deleted by hand.

  29. · InitializerService

    Земельна ділянка schema

    Додаток com.kamo.z.shared.hr.legal до списку репозиторій і забезпечує список сканування репозиторій і забезпечує список сканування репозиторій і забезпечує список сканування репозиторій і забезпечує список репозиторій Унікальність та індекси пошуку суб’єкта господарювання не можуть вільно висловлюватися.

  30. · kamo-shared-library

    Атестація пакета записів як апенд-тільки докази

    Пакет-рівень 'Я прочитав і погоджуюсь' є інший юридичний інструмент від Згода E-SIGN на переклад і з будь-якого підпису документів, і це ОНЛЬНІ докази для пакету без реєстраційних документів. Захист від оновлення і видалити спосіб PhiAccessLog робить.

Твій всесвіт чекає.

Почати безкоштовно за декілька хвилин. Додати продукти, коли ви будете готові — без перенесення, без нових реєстрацій.

Безкоштовно назавжди — не потрібна кредитна карта