İçeriye geçin
KAMOUniverse

Değişiklik Günlüğü

Yeni ne var?

Gemideki her iyileştirme.

  1. · kamo-internal

    Üye infaz rotaları proxy ve saf büyücü modeli

    Sekiz 1:1 rota: /api/docs/legal/member/** forwardToApi (PATHE) forwardToApi, sorgu dizesine sahiptir) ve /api/esig/member /** direkt olarak direkt olarak ESIG SERVICE URL, CHK ile birlikte, çünkü APIService forwards /api /docs /** ve Hiçbir şey ileriye /api /esig/**. One OTK, yol başına bir akış isteği: OTKAuthFilter, VeDelete'yi alır. PDF rotaları uçup üst düzey durumu korur, bu yüzden 409 (the PDF rotaları yayınlanır ve korur) Donmuş içerik artık saklanan çöpleri öpmemektedir) Sihirbaza bir sihirbaz olarak ulaşır 409, bozulmuş bir PDF olarak yerine. Consent, parse etmeme gereken tek yoldur Başarı gövdesi: ESigService boş 200 ile cevap verir. Her büyücü kuralı saf bir modülde yaşar, çünkü burada usta sadece toplanır .test.ts in node environment. Esignable bir belge, esignable Yol - bunlar ESigService düztens tarafındandır ve gördüğünüz şey ne olmalıdır İmzaladığınız; sadece bir belge DocsService'ın versiyonundan oluşur Yol. Adım eksenleri Index düzeninde ve attestation adım bile var imzalamak için sıfır belgeleri olan bir paket.

  2. · kamo-internal

    Port the kamo-signer anayı kamo-internal olarak imzalar

    Her @kamo/* paketi özeldir: ihracatla doğru: ”/src/index.ts” ve hiçbir şey inşa etmiyor Adım, bu yüzden yayınlanamaz bir sanat var - dosyalar kopyalanır ve yeniden dekore edilir göreceli ithalat. Davranış değişmedi; sadece ithalat ve i18n hareket. pdfjs-dist 4.10.38, önceden inşa edilen bir adım tarafından kopyalanan bir SELF-HOSTED çalışanı ile. Değil Değil Değil ************ Bu yüklerin pdf.js 4.4.168'u cdnjs'ten bulabilirsiniz, ki bu da Farklı bir motor ve yasal olarak bağlayıcı bir yüzey için kabul edilemez ve iki GlobalWorkerOptions nesneleri sadece modül örneklerinden dolayı rahatsız kalır çünkü Asla tanışma. AlanElement.tsx ya: onun Alan Kontrolü pointer Events:'none' önizlemeleri değeri bağlayıcı değil - bir tasarımcı önizleme, bir an değil giriş. KullanımTranslations dört imzalı bileşenden çıkıyor: Kamo-signer's diyorlar Kendi mesaj anahtarları, kamo-internal’in sözlüğü onlara sahip değildir ve yeni anahtarlar icat edilemez. Strings, props olarak gelir. SATILIK FONTS çok oldukça oldukça oldukça iyi bir uygulamadır Bir modal için dört bir sonraki /font /google yükten daha; tip font id hala biniyor CapturedSignature.typedFont so flatten ve sertifika etkilenmez. Bir fiilatim kopyasından iki işaretli sapmalar, her ikisi de işaret mağazasında: - Gereklilik şimdi sadece alanları okumayı atlar. kamo-signer onları saydı; ESigService's FieldCompletion - sevk edilen sunucu-side Execution - does not ("If (f == null || f.read Only() || !f.required()) devam eder. Keeping the the server'dan daha katı kopya, sahip oldukları bir boşluk üzerinde bir üyeyi park edecekti Sunucu zarfı tam olarak düşünürken kapatmak için kontrol edin. - draft kalıcı muhafızlar pencere yerine yerel yönetimler. Pencere yanlış Soru: yerelStorage mevcut olabilir (server dosyası) veya erişime atabilirsiniz (özel mod, bölünmüş depolama), ve bir taslak asla büyücü almamalıdır Onunla aşağı.

  3. · DocsService

    Üye yüzeyi /api /docs /legal /member /**

    Ayrı bir funnel ile ayrı bir kontrol, çünkü burada izin Kimlik ve bir HR hakkı değil. Bunları koruma yoluyla bozunmak, demek ya da Her çalışanı kendi kağıt işlerinden veya genişleyen YasalPackageAccess’den kilitletmek şablonlar ızgaraya ve seyirci önbelleği roster tüm bunlara açık olana kadar org; sınıf yasalPackageAccess için bir referans tutmaz, böylece kısayol Mevcut değil. Hiçbir haritalama bir üye kimliği veya bir ya dag id alır - her ikisi de seanstan gelir. Servis Servisi YanıtStatusExceptions statülerini tutuyor: 404 değil-yours, 409 zaten finanse edildi, 422 not-acbilgid ve 503 esign-un kullanılabilirliği dört farklı talimatlardır. Bunlardan biri, üyenin zaten başarılı olduğu anlamına gelir. Beklenmeyen bir istisnadır Sabit 500: E.getMessage(), HR yüzeyinde kullanılabilir, ancak bu Her çalışana ulaşabilir. KToken Ekstraksiyon güvenlik/SessionKToken'a taşındı, bu üçüncü değil fiilatim kopyası.

  4. · DocsService

    Paket bitmek için ve EXECUTED / AWAITING OachS bölünmüş

    WORM YasalPackage Attestation: FROZEN'den FROZEN'den Attestation: attestationTextSha256 sürüm ( paketin taslak kelimesi mutable ve zaten olabilir Yeniden ifade edilir), sipariş edilenden [{documentUid, contentSha256, OrderIndex:) Aslında, başlangıçta, bir kaynaktan kaynaklandı Doğru sol tarafta X-Forwarded-For walk, kanıtBlob fiilatim, böylece sindirme olabilir Daha sonra rekomputed. Müşteri tamamlanmaya güvenmiyor. Her şeyden önce, her biri yazılır, İşaretlenebilir belgenin zarfı ESigService'dan yeniden hazır; alıcım olmalıdır SED ve BECLİ SIGNED, DisclosureEn DevelopmenteSyncService Onu çöker, bu yüzden devam eden bir karşıtlık AWAITING OachS'i, yerine bir karşı-signature verimleri. Bu iddiaların yürütülmesini iddia eden paket. Başarısız bir okuma sonu reddeder - bir Zamanlı çağrı kimsenin imzaladığına dair kanıt değildir. Sıfır işaretli belgeli bir paket zarf yaratmaz, ESigService'ı aramaz Her şeyde ve intestation onun tek infaz kanıtlarıdır. Bir ikinci bitirme Mevcut sırayı döndürür: varlık @PreUpdate atlar tasarım ve tasarım ile Migration's UNIQUE index on assignment uid gerçek serileştiricidir.

  5. · DocsService

    Kimlik yetkili bir üye atamalar için yüzeyi okudu

    YasalAssignmentOwnership, yasalPackageAccess'den bir SEPARATE bekçidir: Kendi anlaşmalarını yürüten bir üye, HR hakkı değildir ve HR'yi genişletir. Onları kabul etmek için setin her üyesi şablonlar ağı ve izleyiciler e-postalarla dolu roster. caller'in olmayan her şey Kendi atama aynı 404 yanıt verir - 403 uid'in gerçek olduğunu onaylayacaktır. detay(), HR sırasındaki ilk görüş kitabı (ilkViewedIn, PENDING -> IN PROGRESS) yerine ESigService, böylece alıcı-status makineye aykırıdır ve badge dürüst kalır. Attestation kelimesi geliyor FROZEN versiyonundan asla paketin mutable taslağından. Belge belgesi Pdf ACKNOWLEDGE-ONLY belgelerine hizmet eder ve ImgDat'ın hizmet ettiği ImgDat'ın belgelerini belirtir. Donmuş içeriğe karşı içerik-address, bir aste hizmet etmeden önce; saveImgContent repoints img.setDat on every Docs save, so drag is live. İmzalanabilir belgeler esign rotasını adlandırmak için 409 ile reddedilir - bu bytes Onları düzelten hizmetten gelmelidir. KToken'ın orgID/memberID'leri oldukça uzun, bu yüzden planın "== null" kimliği Kontrol yerine 0;egKToken, mevcut olmayan bir oturum alanı için 0 geride bırakıyor.

  6. · DocsService

    Manifest canonical form ve bir spoof- dayanıklı müşteri IP

    sunSha256 siparişi alır [{documentUid, contentSha256, orderIndex] Üye aslında gösterildi, uzun süreli bir şekilde genişletildi, böylece bir zanaatkar bir uid taklit edemez Alan sınırı ve iki farklı belge seti aynı şeyi kabul eder. kanıtJson Korumalı fiil ve yuvarlak-trips aynı sindirmelere geri döndü - bir kanıt o ki Kendi kendini yeniden üretemez, hiçbir şey kanıtlayamaz. YasalClientIp, X-Forwarded-For CFD-to-LEFT'yi yürür ve ilk kamu umudu alır. DocumentAccesstor soldan okumaktadır, bu müşteri kontrollüdür; Pre-existing kusurları burada düzeltilmiyor, ancak bir kaynağı olmamalıdır belirgin kaynakIp.

  7. · ESigService

    Personel destekli üye /api /esig /member /**

    OTKAuthFilter sadece /actuator, /api/esig/public ve /api/esig/internal, /api/esig/internal, Bu nedenle bu ek, OTK'nın orgId/memberId ile zaten üzerinde bulunan personelinin arkasındadır. Talep. Alıcı hiçbir zaman bir yol değişkeni değildir: eşleşen EsignEn DevelopmenteRecipient.memberId to the OTK member id, bu yüzden parametre yok Üye bir meslektaşın sırasına ulaşmak için değişebilir. Şaşırtıcı değil, senin-org ve No-on-this-en Developmente all answer an Same 404. No /delegate - bu, keyfi dış e-postaya uygun bir belgeyi ele alır Hiçbir onay olmadan ve bayrağı devre dışı bırakma; omission tarafından hariç, bir bayrak tarafından değil. Hayır hayır hayır /decoder ve hiçbir / adım ya: alıcı-skoder HR'nin boşluğuna ait. Yol ve adım bu yüzeyin sahip olmadığı bir Redis işareti oturumunda anahtarlandı. signerIpAddress bir iletişim-to-LEFT X-Forwarded-For walk. EsignPublicController.clientIp soldan okumaktadır, bu müşteri kontrollüdür. Bu nedenle spoofable ve bu değer belirgin bir alandadır.

  8. · kamo-internal

    Assigned Packages sub-tab ve /redeliver / eylemler

    AG Grid Topluluğu bir MUI-paginated get üzerinde - Topluluğun hiçbir sunucu satır modeli yok, Bu yüzden sunucu sayfaları ve ızgara tam olarak ne teslim olduğunu oluşturur. Executed sütun, aynı statüden gelen aynı durumdan kaynaklanmaktadır, bu yüzden ikisi yapamaz Aynı fikirde değil ve hiçbir zarfla imzalanabilir bir belge oturmaktan ziyade bir uyarı ortaya çıkarır "Selam" sonsuza kadar. Sağ el filtre sütunu org'un kendi çoğu takım üyesi terimi tarafından yönetilir. Veriler, bir standalone "All" satır ile - kasıtlı olarak bir interpolated "All {Team Üyeler}" dize, çünkü sözlükteki tek bu mesaj bir kırık vardır 22 yerel ve yeni anahtarların 12'sinde yer alan sahibi burada icat edilemez. roster, mevcut kitle-parlama uç noktasını yazmak yerine yeniden kullanır Üyelerden gelenlerin on üç kopyası + takım üyeleri-uzaycıları ikili getiriyor, ki bu da PROSPECT, CANDIDATE, DÖNINATED ve RESIGNED üyeleri döndürür. Piginator'un "1-25 / 100", ortaktan ziyade verilerden inşa edilmiştir. Değer, pl.json'da EMPTY STRING'dir - anahtar muhafız sadece en önemli varlığını kanıtlamaktadır. Void sabit bir VOID meydan okuma kelimeyi kullanır: canlı yasal aletleri veya çapında iptal eder.

  9. · kamo-internal

    Yasal paket teslimat/redeliver / moderatörler ve atama istemcisi

    İnce 1:1 forwardToApi rotaları - her biri bir upstream isteği, çünkü OTKAuthFilter yapar VeDelete ve bir sonraki rotada üye başına bir OTK'ya ihtiyaç duyacaktır. The The The The The The The The Liste bir PATHOL'u geçer; forwardToApi tarayıcının sorgu dizesini kendisi birleştirir. Durum-to-i18n haritası gerçek bir bekçidir, çek-i18n-keys.mjs: bu senaryo sadece sadece bu senaryo Bir anahtarın en çok var olduğunu kanıtlıyor ve mesajlar / yönlendiriliyor, bu yüzden yerel olarak eklenen bir anahtar geçiş Ve sonra Docker inşasını başarısız edin. Buradaki her anahtar, 22 yerel boyunca doğrulandı Varlık ve yer sahibi-set eşitliği ve bir test pimleri, bilinen dört kişiden hiçbiri Hasarlı anahtarlar geri döndü. Boş bir seçim hiçbir takımMemberIds anahtar gönderir – bu yokluğun seçimleri nedir Org- çapında bir şube; boş bir dizi hiçbir şey yapmaz ve hiçbir şey rapor etmezdi. RedeliverResult Teslimatı uzatmaz: RedeliverResultDto'nun sürümNumber Alan, sadece ******************** Inheriting it would say a Geri dönüş asla göndermez, bu yüzden teslimSummaryParts yeniVersionNumber'i bir araya getiriyor v0 raporlama yerine kırmızıelivery.

  10. · DocsService

    Org-scoped, paged, filtrelenebilir yasal paket atama listesi

    EntityManager üzerinde paylaşılan-lib repository yöntemi yerine inşa edildi: filtre seti Dinamiktir ve bunu kamo-shared-library'ye eklemek, paylaşılan bir yeniden inşa edebilecektir. Bir sorgu için her tüketicide sadece DocsHizmet sorunları. Organizasyon önceden belirlenmiş ve ilk olarak, ve bir test hayatta kaldığını kanıtlar Her filtre kombinasyonu - son nokta hiçbir veyag parametresi almaz, bu yüzden bir düşüş cümlesi Başka bir kiracının atamalarını listeleyecekti. Paging bir uid kravatı taşır çünkü a 200 kişilik teslimat, bir milisan içinde teslim edilir. Doküman sayısı ikidir GROUP BY sorguları, 25 per-row lookups değil. Bilinmeyen bir durum 400, asla sessiz bir şekilde Uygun bir ağ üzerinde filtre görmezden gelin.

  11. · DocsService

    Void yasal paket atamaları, ya da çapında veya adı verilen üyeler için

    Per-assignment sonuçları - boşluklanmış, atladı-executed, temel değil - çünkü bir yönetici Altı kişi için bir paketin zaten idam edildiğini bilmesi gerekiyor (onları) Kanıtlar öne çıkıyor) ve bu asla tayin edilmedi (bir stale roster id). Açık bir 200, Bunu söyle. Assignment geçişleri senkronize edilir: atama sırası, e-sign statüsü değil, ismindir. Üyeyi hangi kapıları açar ve kötü olanı yönlendirir. Gelişen boşluklar tükeniyor ve SED /VOIDED'de önceden filtrelendi, çünkü Tamamlanan bir zarf ve tamamlanmış bir zarf. Kabul edilen belgenin hepsinde bir zarf yoktur. Bir üye birkaç satır tutabilir Kırmızıelivery'den sonra, her satır kendi kararını alır.

  12. · DocsService

    Redeliver değişen bir paket, açık atamaları süperseding

    Canlı parmak izi yayınlanmadan farklı olmadıkça yeniden füzyon. Binder.dateUpdated Ölü ve Img'in revizyon sayacı yoktur, bu yüzden parmak izi tek değişiklik sinyalidir Orada - kapı olmadan, Redeliver herkesin sessiz bir şekilde yok ettiği bir düğmedir In-progress çalışması ve aynı bir enstrümanı yeniden yaz. Mevcut yayın yolundan (bir versiyon yazarı), işaretler Her bir açık görev, olmayan zarflarını geçersiz kılar ve Süpersedilen üyeye yeniden yazlar artı yeni bir eşleşen - yeniden çözülebilir Bu nedenle bir üye, ilk teslimatın değiştirilmesinden bu yana sona ermiştir. Görevli atamalar yapılır; kanıtlardır.

  13. · DocsService

    Bir yasal paketi izleyicisine teslim edin, istek thread

    İstek konusu üzerine plan (iki ucuz sorgu, bu yüzden yanıt kimin kim olduğu hakkında kesindir. Dahil ve kim atladı ve neden), yazdı: 200 üye x 8 belgedir 1.600 sıra, birçok ESigService çağrısı olarak artı ve DocsService WOPI'ya hizmet ediyor. Havuz bir Spring Executor bean değil. UygulamaTaskExecutor istiror is **************** ve DocsService zaten @Async'i çıplaktır KSessionService and DocumentService - bir Executor bean yayınlayarak sessizce hareket eder WOPI oturumu bu küçük zorunlu havuza dokunur. Geliştirmeler herhangi bir işlem dışında oluşturulur; 20'li bir okuma süresi tutarken Hikari bağlantısı, on starves havuzudur. Bir işaretli belge kimin zarfı Başarısız, ızgaranın sahip olduğu tek sinyal olan bir null zarf uid tutar. Redeliver / yok / atsignment-grid haritalamalar burada da, bu yüzden kontrolör ONE'a sahiptir. Peder tarafından yazılmış ve daha sonra ikinci bir cıvata yerine bir kez ispatlanmış; Hizmetleri, vücutları doldurana kadar 501 yanıt verirler.

  14. · DocsService

    Teslimat planlayıcısı - artan hedefleme, e-filter, çünkü tarihler

    Teslimat yeni üçüncü yoldur ve yeniden işlenecek anlamına geliyor, bu yüzden zaten bir tane tutan üyeler Görev aynı enstrümanın ikinci bir kopyasını vermek yerine çıkarılır. Hiçbir e-posta ile üye sayılır ve ön atılır, çünkü EsignEn DevelopmenteService 400'ler döngü içinde bir işaretçi olmadan, daha önceki üyelerden sonra zaten zaten sahip oldu Canlı zarflar. Seyirci sorgusu OR üç predikates, bu yüzden tekrarlar çöktü. Bir kabul-sadece belge kasıtlı olarak hiç bir zarf almaz.

  15. · DocsService

    ESigService internal client for yasal paket teslimat için

    DocsService's first outbound service-to-service client. Yazılar **************** (origin MANUAL, asla ölçülmüyor) Tartışma: Gerçek - HR bir bildirim gönderir, üye başına bir belge değil. Timeouts açık: EsignEmailClient, hiçbiriyle çıplak bir RestTemplate inşa eder ve bir an ile Bir Wedged pod pins'i yeniden başlayana kadar bir işçi parçacığında okudu. Hiçbir şey bir şeye atmıyor Upstream hatası, çünkü fan-out sorunları bir üye başına imzalanabilir belge çağırılabilir Ve bir kötü şablonun üzerinden bir parti yapmamalıdır. Void haritaları 409 raporlanabilir Bir hatadan ziyade atladı. Yanıt kayıtları bilinmeyen alanları görmezden gelir - The Response records detect unknown fields - the bağlam ObjectMapper hala FAIL ON UNKNOWN PROPERTIES var.

  16. · kamo-internal

    Yasal ve Uyum için Paket Şablonları alt-tab

    HrTabPlaceholder cesedini sadece değiştirir - rota, sekme girişi ve kapı Zaten hrTabs.ts var. AG Grid Community listesi artı bir form/edit dialog ile Binder picker, HR RESOURCE'ye (korinal 13'ü boş tutmaz) emretti. Ve Bölüm/İş Türü, All-Team-Members toggle'ın devre dışı bırakılmasını çok basitleştirir. The The The The The The The The Toggle'ın etiketi, org'un kendi çoğu takım üyesi terimidir, asla zor kodlanmış bir dize değildir. Yeni i18n anahtarları yok: Her etiket, sözlüğü zaten tanımlar ve sayar. Verilerden oluşur.

  17. · kamo-internal

    Yasal paket rotaları proxy, müşteri api ve saf yardımcıları

    İnce 1:1 forwardToApi rotaları /api/docs/legal – her biri bir upstream isteği, Çünkü OTKAuthFilter alır ve bir sonraki rotada bir fan-out döngüsü alır Üye başına bir OTK'ya ihtiyaç var. Ids stay strings end to end (unique rowid). Reorder is Taşlamadan ziyade sıkıştırılır ve seyirci listeleri tüm Takımları boş gönderilir Üyeler o kadar dar bir izleyici geri dönemez.

  18. · DocsService

    İzleyici kararı

    TeamMemberRepo aracılığıyla kurtarılmış veya taslak bir izleyiciyi geride bırak.bul Rolence, ki bu Sadece zorunlu ACTIVE + kayıtState uygunluk önceden belirteçini taşıyan okuyucu - The only reading the required ACTIVE + recordState uygunluk predicate - the Takım üyeleri son noktayı döndürür PROSPECT, CANDIDATE, DÖNINATED ve RESIGNED. Hiçbir e-posta ile Bayraklar üyeleri (EsignEn DevelopmenteService hard-400s without one) ve üyeler TEAM MEMBER güvenliğinin altında (hayvanlar, resmi kopyayı sessizce atlar). An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An An Hiçbir şeyi kimseyle çözmeyenler ve boş boş boş boş boş kimlik listeleri gönderildi. OR'd IN Clauss geçerli SQL kalır.

  19. · DocsService

    Publish, imzalanmış belgelerle bir sürüm donduruyor

    Pins img dat id artı bir içerik hash, img id: saveImgContent repoints the same the samet id artı a content hash, notg id: saveImgContent repoints the samepoints the samepoints the same the same Her Docs'ta yeni bytes'te göz atıyorum veKaynak'ı canlı yaşayacağım Oturumda inşa ve düz. Snapshots yerine donmuş tasarım ÇözümJson en yenisine geri döndü, dönüştürülmemiş bir belgeyi reddediyor PDF, ve parmak izi hareket etmediği bir yayın reddediyor.

  20. · DocsService

    Yasal paket CRUD /api /docs /legal/packages

    Liste, oluşturma, güncelleme ve silin, sipariş edilen binder refs ve seyirci sıraları ile Bir set olarak değiştirildi. Org her yolda oturumdan geliyor - DocsService is Tüm izin ve OTKPreAuthFilter bir token olmadan zinciri devam ediyor, bu yüzden kontrolörün ekstrakToken, doğrulama. Cross-org Bölüm, iş unvanı, Üye ve binder, sessiz bir şekilde hiçbir şey yazmamak yerine 400'ü açıkça boş tutuyor.

  21. · DocsService

    Yasal paket tel sözleşmesi ve normalleştirme isteği

    Ids haç as strings (unique rowid MAX SAFE INTEGER). Binder siparişi, Liste siparişi, de-duplicated ve atılmak yerine sayısız olmayan giriş 400s - Sessiz atlama, bir geri siparişin bir binder kaybettiğidir. Boş seyirci listeleri bire çöker sentinel, bu nedenle, ISSence'in geçerli SQL kalmasını sağlayan maddelerde OR'd IN specifys in findSatence stay valid SQL.

  22. · DocsService

    Yasal paketler için içerik parmak izi

    Binder.dateUpdated hiçbir zaman INSERT’den sonra hareket etmedi, bu yüzden bir paket içeriği hiçbir değişiklik yok Karşılaştırmak için sinyal. Canonical sipariş edilen binder/item tuple üzerinde bir SHA-256 ekleyin - ImgDatId de dahil olmak üzere, çünkü ImgContent, yeni Img at new bytes on Her Docs kurtarır - artı attestation text hash. Encoding uzun kodlanmış Bu yüzden bir zanaatçı Json farklı bir düzen oluşturamaz. Ayrıca com.kamo.z.shared.hr.legal to the repository scan.

  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

    Publish postabox-change events, böylece posta görüşleri anket yapmayı bırakır

    Klasör ağacı, konuşma listesi ve mesaj listesi her biri kendi 30 saniyelik koştu Zamanlayıcı, bir şeyin hareket ettiği şansa yeniden yükleniyor. WebSocket zaten posta geldiğinde onlara, ancak bu bir posta kutusu değişikliği değişikliklerinden sadece biri. - Roundcube'de veya bir telefonda bir mesaj okumak, onu hareket ettirin, ya da Tüm arayüzü bir sonraki akışa kadar yanlış bıraktı. EmailMailboxChanged, bir klasörün artık gösterdiğin şey olmadığını ve taşıdığını söylüyor Bu nedenle bir tüketici, umursamıyor gibi görmezden gelebilir. Yayınlandı e-posta.changed.<addr> ve ********************'e devretti IDLE dinleyiciler (arrival, expunge, bayrak değişikliği) ve işaret hazır, bayraklar, Hareket, silin, spam, gönderin ve draft uç noktaları. Deliberately e-postaUnreadPublisher'e katılmıyor: bu bir sayıya sahip, bu yüzden bu yüzden bu durumda Uygun kalmak için sağlayıcı ve kömür patlamalarına ulaşmak zorunda. Bu taşır Hiçbir sayı ve hiçbir şey okumaz, bu yüzden her değişikliği ve her değişikliği göndermek için yeterince ucuz ve Bir pencerenin arkasına bir sayı ihtiyacı beklememelidir. Bir hareket hiçbir klasörü rapor etmiyor çünkü ikisine dokunuyor ve kaynak her zaman değil caller ile bilinir - tüketiciler bunu "reload her ne gösterir" olarak tedavi eder.

  25. · MediaService

    Relay SecurityService platformu STOMP'ye olaylar

    Güvenlik Hizmeti platformu-admin yüzeyine sahiptir - sistem yapılandırması, DNS Düzenleme, ticaret senkronizasyonu – ama WebSocket endpoint yok, bu yüzden her ekran Bunun yerine herhangi bir şey söylemenin ve yenilemenin bir yolu yoktu: Kapalı-loan antrenörü her 4 saniyede, DNS her 15, ticaret senkronizasyon logları ve VOIP her 30'u kaydeder. Çekirdek NATS'ye yayınlar; Bu, STOMP'deki bu mesajları, aynı zamanda aynı zamanda getiriyor Düzenleme DesteğiStompRelayController ve ******************************************************************** Zaten kullanın. Hedefe konu mekaniktir - lider "güvenlik"i bırakın ve takas Ayaklanmalar için dotlar, bu yüzden güvenlik.dns.log.42 /topik /dns/log/42 geliyor - hangi Yeni bir olay türünin bir yayıncıya ve bir aboneye ihtiyacı var ve burada hiçbir şey yok. Ön ekler güvenlik kadar açıkça bağlıdır.>: bir catch-all olurdu Çift-deliver güvenlik.theme.provision.*, hangi ThemeProvisionStompRelay Zaten aynı konuyu şekillendirir.

  26. · kamo-shared-library

    Kirli ilerleme ve alan devleti, kirleticilerin yerine ilan edilebilir

    Güvenlik Hizmetindeki itme dönüşümü için iki kanca, birkaç platform Ekranlar zamanlayıcıları tazeledi, çünkü onlara bir şey söylemenin bir yolu yoktu. PerakendeSyncListener, PerakendeSyncOrchestrator'da opsiyonel bir bildirimdir, Bir senkroniz onun IN PROGRESS sırasını yazarken ve tekrar yazarken Bir terminal. orkestra, bildirimin nasıl gittiğinin farkında değil ve Hiçbir uygulama kayıtlı olmadan, tam olarak daha önce olduğu gibi davranır. Sağlayıcı senkronizasyon Pano, bir run izlemek için her 30 saniyede tüm günlük listesini yeniden yükledi Kendine başladı. **************** Listeler üst düzey domainler, sahip olmayan Bitti - DNS açılmadı veya onaylanmış bir sertifika ile doğrulandı. Bir sunucunun doğrulama saati için mevcuttur: alan kurulum sayfası ankete alındı doğrulama-dns bir dakika açık sekmede, halka DNS yayılımı ve cert ihraç. İlk önce en az kayıt altına alındı ve bir Pageable ile alındı Limit böylece bir süpürücü kalıcı olarak aydınlatılmış alanlarla büyüleyemez.

  27. · ESigService

    Bir gönderileyicinin per-en Developmente davet e-postasını bastırmasına izin verin

    Bir zarfı koşulsuz olarak bir davetle eleştirin, bu yüzden bir caller bir çok parti Bir bildirimin arkasındaki zarflar sessiz kalmanın bir yolu yoktu. Null korur Mevcut davranışlar; erişim token hala bir şekilde yayınlanmaktadır.

  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

    Arazi yasal paketi şema

    Kom.kamo.z.shared.hr.legal to the repository tarama listesine kaydolun ve emin olun. benzersizlik ve görünüm indeksleri varlık haritası güvenle ifade edemez.

  30. · kamo-shared-library

    Append-sadece kanıt olarak kayıt paketi

    Paket seviyesi ‘Ben okudum ve katılıyorum’, farklı bir yasal araçtır E-SIGN transact ve herhangi bir per-document imzasından onay verir ve öyledir. Bir paket için işaretli belgelerle kanıt. Muhafızlar güncellemeyi reddeder Ve PhiAccessLog'ın yolunu sil.

Evreniniz sizi bekliyor.

Birkaç dakika içinde ücretsiz olarak başlatın. Hazır olduğunuzda ürünleri ekleyin - göç yok, yeni girişler yok.

Sonsuza kadar ücretsiz — kredi kartı gerekmiyor