Jump to content
KAMOUniverse

Changelog

Ada kabar baru.

Setiap perbaikan pada platform, sebagai kapal.

  1. · kamo-internal

    Rute proksi eksekusi anggota dan model penyihir murni

    Delapan 1: 1 rute: / api / docs / legal / anggota / * * melalui forwardToApi (PATH HANYA - forwardToApi memiliki string query) dan / api / esig / anggota / * * langsung ke ESIG _ SERVICE _ URL dengan generateOTK, karena APIService forwards / api / docs / * dan tidak ada yang maju / api / esig / * *. Satu OTK, satu permintaan hulu setiap rute: OTKAblification tidak getAndDelete. The PDF rute stream bytes dan mempertahankan status upstream, sehingga 409 ( isi beku digest tidak lagi cocok dengan bytes yang tersimpan) mencapai wizard sebagai 409 daripada PDF yang korup. Consent adalah salah satu rute yang tidak boleh diurai tubuh yang sukses: ESigService menjawabnya dengan 200 kosong. Setiap aturan penyihir hidup dalam modul murni karena vitest di sini mengumpulkan hanya .testles dalam lingkungan node. Sebuah dokumen yang dapat ditandatangani dibuat dari esign rute - mereka adalah byte ESigService flat, dan apa yang Anda lihat harus apa tanda tangan anda; dokumen yang anda ketahui -satu-satunya dibuat dari versi DocsService - disematkan rute. Sumbu langkah adalah urutan perintah dan tahap attestation ada bahkan untuk paket dengan nol dokumen untuk ditandatangani.

  2. · kamo-internal

    Port kamo- signer menandai inti ke kamo- internal

    Setiap paket @ kamo / * adalah pribadi: true dengan ekspor: ". / src / index.ts" dan tidak ada build step, so there is no publishable artifact - the files are copy and rewired into Impor relatif. Perilaku tidak berubah; hanya impor dan gerakan I18n. pdfjs- dist 4.10.38 dengan SELF-HOSTED pekerja disalin oleh langkah prebuild. Tidak * * * * * * * * * * * * yang dimuat pdf.js 4.4.168 dari cdnjs, yang adalah mesin yang berbeda dan tidak dapat diterima untuk permukaan mengikat secara hukum, dan dua Objek GlobalWorkerOptions tetap tidak rusak hanya karena modul instance tidak pernah bertemu. Tidak FieldElement.tsx baik: yang FieldControl render pointerEvents: 'none' preview tanpa binding nilai - pratilik desainer, bukan sebuah masukan. useTranslation keluar dari empat komponen penandatanganan: mereka memanggil kamo- signer kunci pesan sendiri, kamo-internal kamus tidak memiliki mereka, dan kunci baru tidak dapat ditemukan. String tiba sebagai alat peraga. SIGNATURE _ FONTS adalah sebuah prop terlalu bukan dari empat berikutnya / font / google loads untuk satu modal; yang diketik font id masih rides melalui CaptureSlagture.typedFont sehingga meratakan dan sertifikat tidak terpengaruh. Dua penyimpangan ditandai dari salinan verbatim, keduanya dalam signStore: - Resedness sekarang melewati bidang baca-Saja. kamo- signer menghitung mereka; ESigService Penyelesaian FieldCompletion - yang dikirim server- sisi penegakan - tidak ("jika (f = = null 12.4; firman 124; f.readOnly () 12.4; 12.4;! f.need () melanjutkan."). Menjaga signer salin stricter dari server akan memarkir anggota pada gap mereka tidak kontrol untuk menutup sementara server menganggap amplop selesai. - draft persistensi penjaga localStorage bukan jendela. jendela adalah salah pertanyaan: localStorage dapat absen (server render) atau membuang pada akses (mode pribadi, penyimpanan partisi), dan draft tidak boleh mengambil wizard turun dengan itu.

  3. · DocsService

    Mengait permukaan anggota di / api / docs / legal / anggota / *

    Pengontrol terpisah dengan saluran terpisah, karena otorisasi di sini adalah Identitas dan bukan hak HR. Routing ini melalui dijaga () akan berarti baik mengunci setiap karyawan keluar dari dokumen mereka sendiri atau memperluas akses LegalPackageAccess sampai garis templat dan daftar pratinjau penonton dibuka untuk keseluruhan org; kelas tidak menyimpan referensi ke LegalPackageAccess sehingga pintasan tidak tersedia. Tidak ada pemetaan yang mengambil anggota id atau id org - keduanya berasal dari sesi. Layanan Responses StatusException menjaga status mereka: 404 bukan milikmu, 409 sudah selesai, 422 nt-diakui dan 503 esign- tidak tersedia adalah empat instruksi yang berbeda, dan salah satunya berarti anggota sudah berhasil. Sebuah pengecualian tak terduga adalah fixed- string 500: bergema e getMessage () ditoleransi pada permukaan HR, tapi ini satu setiap karyawan dapat mencapai. Ekstraksi KToken dipindahkan ke keamanan / SesionKToken jadi ini bukan yang ketiga Verbatim copy.

  4. · DocsService

    Pengaturan paket selesai, dan penguraian EXECUTED / APAITING _ OTHERS terpecah

    Menulis WORM LegalPackageAttesation: attestationTextSha256 dari FROZEN versi (draft wording paket adalah mutable dan mungkin sudah pernah reworded), manifestSha256 atas perintah [{dokumenter Uid, contentSha256, orderindex}] sebenarnya disajikan, attestedAt application- set, sourceIp dari Kanan-kiri X-ForwardedForwalk, proofBlob verbatim sehingga dapat dicerna dihitung kemudian. Klien tidak dipercaya untuk penyelesaian. Sebelum semuanya ditulis, masing-masing amplop dokumen dapat ditandatangani adalah dibaca ulang dari ESigService; penerima saya harus SIGNED, and PARTILY _ SIGNED is NOT collapse the way DisclosuReEnvelopeSyncService collete it, so a pending counter- signature yives AWITING _ OTHERS than a paket yang diklaim akan dieksekusi. Sebuah membaca gagal menolak finish - a panggilan telepon-out bukan bukti bahwa siapa pun ditandatangani. Sebuah paket dengan nol dokumen yang dapat ditandatangani tidak menciptakan amplop, panggilan ESigService tidak Sama sekali, dan attestation adalah satu-satunya bukti eksekusi. Selesai kedua mengembalikan baris yang sudah ada: Entitas @ PreUpdate melempar dengan desain dan indeks UNIQUE migrasi pada assignmen _ uid adalah serializer nyata.

  5. · DocsService

    Identitas - anggota resmi membaca permukaan untuk tugas

    LegalAssignmentment Owities adalah penjaga SEPARATE dari LegalPackageAccess dengan sengaja: seorang anggota melaksanakan perjanjian mereka sendiri tidak memegang hak HR, dan memperluas HR membaca set untuk mengakui mereka akan tangan setiap anggota yang Templat grid dan penonton pratinjau penuh daftar dengan email. Segala sesuatu yang tidak pemanggil penugasan sendiri menjawab 404 identik - sebuah 403 akan mengkonfirmasi uid itu nyata. detail () melakukan pertama-view pembukuan di baris HR (First ViewedAt, Pending - > IN _ PROGRESS) daripada dalam ESigService, sehingga status penerima Mesin tidak tersentuh dan lencana tetap jujur. Pembuatan stasiun telah tiba dari versi FROZEN, tidak pernah dari draft mutable paket. dokumen Pdf melayani AKKNOWLEDGE-HANYA dokumen dan memverifikasi yang dilayani ImgDAT content-address digest terhadap beku contentSha256 sebelum melayani byte; Save ImgContent repoints img.setDat on every Docs save, so drift is live. Dokumen sinyal ditolak dengan nama 409 yang menyatakan rute esign - byte tersebut harus datang dari layanan yang meratakan mereka. Identitas orgID / memberID KToken sangat primitif, jadi identitas "= null" cek adalah 0 sebaliknya; extratKToken daun 0 belakang untuk daerah absen sesi.

  6. · DocsService

    Bentuk canonikal yang jelas dan IP klien yang tahan ketakutan

    manifestSha256 hashes the command [{dokumentasi Uid, contentSha256, orderIndex}] anggota sebenarnya ditampilkan, panjang-prefixed sehingga uid dibuat tidak dapat meniru batas lapangan dan membuat dua dokumen berbeda set hash sama. proofJson adalah disimpan verbatim dan round - perjalanan kembali ke mencerna yang sama - gumpalan bukti yang tidak dapat meregenerasi hash sendiri membuktikan apa-apa. LegalClientip berjalan X-ForwardedForRIGHT-ke- kiri dan mengambil hop publik pertama. Dokumenter AccessAudititor membacanya left-to-right, which is client- controlled; that pre- ada cacat tidak tetap di sini, tetapi tidak harus sumber dari evidentiary sourceIp.

  7. · ESigService

    Staff- terotentikasi anggota penandatanganan permukaan di / api / esig / anggota / *

    OTKAbsolutive bypass hanya / actuator, / api / esig / public dan / api / esig / internal, sehingga awalan ini adalah di belakang staf OTK auth dengan orgId / memberId sudah pada permintaan. Penerima tidak pernah sebuah path variabel: ini diselesaikan dengan pencocokan Esignal EnvelopeRecipant.memberId ke anggota id OTK, sehingga tidak ada parameter sebuah anggota dapat mengubah untuk mencapai baris rekan. Tidak ditemukan, tidak -your-org dan Tidak pada amplop ini semua menjawab sebuah 404 identik. Tidak / delegate - ia menyerahkan dokumen kepatuhan ke sebuah email eksternal sewenang-wenang dengan tidak ada persetujuan dan tidak ada bendera non-aktifkan; dikecualikan oleh kelalaian, bukan oleh bendera. Tidak / decoder dan tidak / langkah-langkah baik: penerima-scoped decoder milik ke kekosongan HR jalan, dan langkah-up yang tajam pada sesi penanda Redis permukaan ini tidak memiliki. SignerIpAddress berasal dari right-to-KIRI X- ForwardedFor walk. Esignics Controller.clientIp membaca kiri ke kanan, yang dikendalikan oleh klien. dan karena itu bisa diposefsebagaimana, dan nilai yang mendarat di bidang bukti.

  8. · kamo-internal

    Diassign Packages sub-tab dan memberikan / mengirim / void aksi

    AG Grid Community lebih dari sebuah MUI- paginated fetch - komunitas tidak memiliki model baris server-, Jadi halaman server dan jaringannya menghasilkan apa yang telah diserahkan. Yang Dieksekusi kolom diturunkan sisi server- dari status yang sama merender chip, sehingga dua tidak dapat tidak setuju, dan dokumen yang dapat ditandatangani tanpa amplop menimbulkan peringatan daripada duduk sebagai "tertunda" selamanya. Kolom filter tangan-kanan dipimpin oleh tim plural org sendiri - istilah anggota, dari data, dengan baris "All" - sengaja bukan satu interpolasi "All {Team Anggota} "string, karena satu-satunya pesan seperti itu dalam kamus memiliki rusak placeholder ditetapkan dalam 12 dari 22 locales dan kunci baru tidak dapat ditemukan di sini. Daftar memakai kembali titik akhir audio yang ada ketimbang menulis salinan ketiga belas dari anggota-pelanggan + tim-anggota-kontraktor ganda, yang mengembalikan PROSPECT, CANDIDATE, TERMINATED dan anggota RESIGNED. Paginator "1-25 / 100" dibangun dari data daripada dari common-table.of, yang nilai adalah sebuah EMPTY STRING di pl.json - penjaga kunci hanya membuktikan kunci ada di en. Void menggunakan kata tantangan VOID yang tetap: itu membatalkan instrumen legal hidup org- lebar.

  9. · kamo-internal

    Pengiriman paket legal / redeliver / void proxies dan penempatan klien

    Thin 1: 1 forwardToApi rute - satu permintaan upstream masing-masing, karena OTKAutFilter tidak GET DAN Delete and a permember loop in a Next route would need one OTK per anggota. The daftar melewati PATH HANYA; forwardToApi gabungan peramban pencarian string itu sendiri. Pemetaan status -i18n adalah penjaga sebenarnya, tidak memeriksa -i18n-keys.mjs: hanya script membuktikan sebuah kunci ada dalam en, dan pesan / adalah diabaikan, sehingga lokal ditambahkan lewat kunci dan kemudian gagal membangun Docker. Setiap kunci di sini diverifikasi di seluruh 22 locales untuk kehadiran dan placeholder- set kesetaraan, dan sebuah pin tes bahwa tidak satupun dari empat dikenal kunci rusak pernah dikembalikan. Pemilihan kekosongan kosong tidak mengirim kunci tim sama sekali - bahwa ketiadaan adalah apa yang memilih cabang org- lebar; array kosong akan batal apa-apa dan melaporkan apa-apa. Hasil Pengembalian kembali Tidak memperpanjang Hasil Pengantar: RedeviverDto tidak memiliki nomor versi field, only * * * * * * * * * * * * * * * * * * * Menyimpang itu akan menyatakan properti backend tidak pernah mengirimkan, sehingga devide SummaryParts membaca NewVersionNomer untuk pengiriman ulang daripada melaporkan v0.

  10. · DocsService

    Daftar penempatan paket yang dapat diatur secara legal

    Dibangun di EntityManager daripada metoda repositori shared-lib: set penyaring dinamis dan menambahkannya ke kamo- shared-library akan memaksa shared- artifact building pada setiap konsumen untuk query hanya masalah Dokter. Dugaan organisasi ini tanpa syarat dan pertama-tama, dan sebuah tes membuktikan hal itu bertahan setiap kombinasi filter - titik akhir tidak membutuhkan parameter org, sehingga sebuah clause dijatuhkan akan daftar tugas penyewa lain. Pager membawa tie- istirahat uid karena 200-anggota pengiriman menulis pemberian dalam satu milidetik. Jumlah dokumen adalah dua GROUP BY queries, bukan 25 per-row lookup. Status yang tidak diketahui adalah 400, tidak pernah diam-diam mengabaikan filter pada suatu kisi compliance.

  11. · DocsService

    Tugas paket legal Void, org-wide atau untuk anggota bernama

    Tugas per- keluar - voided, skipped- dijalankan, bukan - ditemukan - karena sebuah admin voiding paket untuk enam orang bernama perlu tahu yang telah dieksekusi (mereka Sesungguhnya kamu, pada gilirannya, akan mendapatkan kemenangan seperti para nabi terdahulu. Sebuah telanjang 200 tidak bisa Katakan itu. Transisi penugasan adalah sinkron: baris penempatan, bukan status e-sign, adalah Apa gerbang anggota dan drive lencana. velope void pergi off-thread dan pre- disaring pada SIGNED / VOIDED, karena voidEnvelope 409s sebuah amplop lengkap dan dokumen hanya diketahui - tidak memiliki amplop sama sekali. Satu anggota dapat menyimpan beberapa baris setelah pengiriman kembali, jadi setiap baris mendapat keputusan sendiri.

  12. · DocsService

    Mengirim ulang paket yang telah berubah, menggantikan tugas terbuka

    Menolak kecuali sidik jari hidup berbeda dari yang diterbitkan. Binder.dateUpdated is dead and Img has no revisi counter, so that fingerprint is the only change signal ada - tanpa gerbang, Redeliver adalah tombol yang diam-diam voids semua orang pekerjaan in- kemajuan dan remisses instrumen identik. Terbitkan melalui path yang telah ada (salah satu penulis baris versi), tanda setiap tugas OPEN SUPERSEDED, antrian mereka non- terminal amplop untuk voiding, dan reissues ke set anggota superseded plus siapa pun yang baru cocok - re-diselesaikan melalui findaudies sehingga anggota dihentikan sejak pengiriman pertama tidak mendapat pengganti. Tugas yang dieksekusi tidak tersentuh, mereka adalah bukti.

  13. · DocsService

    Kirim paket hukum kepada penontonnya, dari benang permintaan

    Rencana pada thread permintaan (dua kueri murah, jadi respon persis tentang siapa yang termasuk dan siapa yang dilewati dan mengapa), tulis dari itu: 200 anggota x 8 dokumen adalah 1.600 baris ditambah sebanyak panggilan ESigService, dan DocsService melayani WOPI. Kolam renang TIDAK kacang Spring Executor. applicationTaskExecutor adalah * * * * * * * * * * * * dan DocsService sudah memiliki telanjang @ Async pada KSesionService dan Dokumenter Service -- menerbitkan kacang Executor dengan diam-diam akan bergerak sesi WOPI menyentuh kolam kecil ini. Amplop dibuat diluar transaksi apapun; 20-an waktu baca ketika memegang Hubungan Hikari adalah bagaimana kolam sepuluh bulan. Sebuah dokumen yang dapat ditandatangani yang amplop gagal menyimpan sebuah null amplop _ uid, yang merupakan satu-satunya sinyal grid memiliki. Pengantar / kehampaan / pengambil pesan jaringan di sini juga, jadi pengontrol memiliki SATU corong otorisasi ditulis dan terbukti sekali daripada yang kedua terkunci di kemudian hari; layanan mereka menjawab 501 sampai Tugas 4-6 mengisi tubuh.

  14. · DocsService

    Perencana pengiriman - incremental target, pre-filter email, tanggal jatuh tempo

    Pengiriman adalah jalan baru-mempekerjakan dan dimaksudkan untuk kembali berjalan, sehingga anggota yang sudah memegang Tugas dikurangi daripada diberikan salinan kedua instrumen yang sama. Anggota tanpa surel dihitung dan dilewati di depan, karena EsignEnvelopeService 40an sebuah penandatangan tanpa satu dari dalam loop, setelah anggota sebelumnya sudah memiliki amplop hidup. Query penonton tiga prediksi, jadi duplikat yang runtuh. Sebuah dokumen pengakuan - hanya sengaja mendapat amplop sama sekali.

  15. · DocsService

    Klien internal ESigService untuk pengiriman paket legal

    Layanan Dokter pertama layanan outbound-to-layanan klien. Posts to * * * * * * * * * * * * * * * (asal MANUAL, tidak pernah bertemu) dengan penekanan = true - HR mengirimkan satu pemberitahuan, tidak satu per dokumen per anggota. Tenggat waktu eksplisit: EsignEmailClient membangun sebuah RestTemplate kosong dengan kosong, dan tak berbatas waktu dibaca pada sebuah pin pod wedged sebuah thread pekerja sampai restart. Tidak ada yang melempar pada upstream error, karena masalah fan-out satu panggilan per dokumen yang dapat ditandatangani per anggota dan tidak boleh membatalkan batch lebih dari satu template buruk. Peta Void 409 ke suatu reportable skipped- signed daripada sebuah error. Catatan response mengabaikan daerah yang tidak diketahui - context ObjectMapper masih memiliki FAIL _ ON _ UNKNOWN _ PROPERTIES on.

  16. · kamo-internal

    Paket Templat sub- tab untuk Komplain Hukum & Hukum

    Mengganti tubuh HrTabPlaceholder saja - rute, entri tab dan gerbang sudah ada di hrTabs. ts. Daftar Komunitas GG Grid ditambah dialog pembuatan / edit dengan diperintahkan binder picker scoped ke HR _ RESOURCE (ordinal 13, bukan id 15), up / down reorder, dan Departemen / Job Tipe Multi- select bahwa All-Team- Anggota toggle menonaktifkan. The label toggle 's adalah istilah tim jamak org sendiri-anggota, tidak pernah string hardcode. Tidak ada kunci i18n baru: setiap label memakai kembali kunci yang telah ditentukan oleh kamus, dan dihitung render dari data.

  17. · kamo-internal

    Rute proksi paket legal, api klien dan pembantu murni

    Thin 1: 1 forwardToApi rute bawah / api / docs / legal - satu permintaan hulu masing-masing, karena OTKAbsolution melakukan getAndDelete dan loop fan- out dalam rute berikutnya akan perlu satu OTK per anggota. Ids tetap string end to end (unique _ rowid). Reorder adalah dijepit daripada dibungkus, dan daftar penonton dikirim kosong ketika Semua Tim Anggota pada sehingga pengagum basi sempit tidak bisa kembali.

  18. · DocsService

    Pratinjau resolusi penonton

    Menyelesaikan audiens disimpan atau draft melalui TeamAnggota Repo.findaudience, yang merupakan hanya pembaca yang membawa wajib ACTIVE + perekam predikat eligibilitas - Anggota-anggota-kontraktor titik akhir mengembalikan PROSPECT, CANDIDATE, TERMINATED dan RESIGNED. Anggota flags tanpa surel (EsignEnAmpelopeService hard--400s tanpa satu) dan anggota dibawah keamanan TEAM _ MEMBER (ImaginingController diam-diam melewati salinan file). An penonton menargetkan apa-apa menyelesaikan untuk tidak ada, dan daftar id kosong menjadi penjaga sehingga OR 'd IN clauses tetap valid SQL.

  19. · DocsService

    Publikasikan sebuah versi dengan dokumen yang disematkan

    Pins img _ dat _ id ditambah hash isi, bukan img _ id: saveImgContent repoint sama Img at new bytes on every Docs save, and resolveSource walks to the dat live di sesi membangun dan meratakan. Snapshots desain beku daripada membiarkan resolveDesignJson kembali ke yang terbaru, menolak sebuah dokumen tanpa dikonversi PDF, dan menolak menerbitkan sidik jari yang belum dipindahkan.

  20. · DocsService

    Paket legal CRUD di / api / docs / legal / packages

    Daftar, buat, ambil, perbarui dan hapus, dengan baris binder dan audiens yang diurut diganti sebagai satu set. Org berasal dari sesi pada setiap jalan - DocsService adalah permitAll dan OTKPreOtorisasi melanjutkan rantai tanpa token, sehingga controller 's extratKToken IS otentikasi. Departemen Cross-org, jabatan, anggota dan binder ids 400 eksplisit daripada diam-diam menulis apa-apa.

  21. · DocsService

    Kontrak kawat paket legal dan permintaan normalisasi

    Ids lintas sebagai string (unique _ rowid melebihi MAX _ SAFE _ INTEGER). Perintah binder adalah urutan daftar, de- duplikasi, dan masukan bukan numerik 400s daripada dilewatkan - diam melewatkan adalah bagaimana reorder kehilangan binder. Daftar penonton kosong runtuh ke Sentinel sehingga OR 'd IN clauses dalam findTrust tetap valid SQL.

  22. · DocsService

    Sidik jari isi untuk paket hukum

    Binder.dateUpdated tidak pernah bergerak setelah INSERT, sehingga isi paket tidak memiliki perubahan sinyal untuk dibandingkan. Tambahkan SHA- 256 atas canonical memerintahkan binder / item tuple - termasuk imgDatId, karena save ImgContent repoints Img sama pada bytes baru pada setiap dokumen menyimpan - ditambah hash teks attestation. Pengkodean panjang - prefixed sehingga konfigurasi buatan Json tidak dapat menempa tata letak yang berbeda. Juga menambahkan com.kamo.z.shared.hr.legal untuk pemindaian repositori.

  23. · SecurityService

    Push platform-admin perubahan keadaan daripada yang dipolling untuk mereka

    Setiap layar platform didukung oleh layanan ini disegarkan pada timer, karena ini layanan tidak memiliki WebSocket dan karena itu tidak ada cara untuk memberitahu siapa pun: closed- loan trainer tab re-read setiap 4 detik ketika menjalankan adalah live, DNS Menyediakan setiap 15, log sinkronisasi perdagangan dan statistik rekaman VOIP setiap 30, dan halaman set domain menanyakan verify- dns sekali per menit per tab terbuka. PlatformEventPublisher mengirim ini ke inti NATS dan MediaService yang baru Platro StompRelayController menempatkan mereka di StoMP. Inti NATS daripada JetStream, pencocokan Theme ProvisionPublisher: stream layanan ini adalah CHAT _ MESSAGES / chat. >, sehingga JetStream mempublikasikan ke keamanan. * Akan gagal diperkirakan - aliran validasi dan menjadi Jatuh. Kebanyakan - sekali adalah perdagangan yang tepat - setiap konsumen juga memuat lebih REST ketika naik, sehingga peristiwa hilang biaya segar, tidak pernah benar. Tersambung pada titik di mana negara benar-benar bergerak: - Penutupan LoanTrainerService pada setiap proses menulis, klaim, dan pada setiap terminal state, sehingga monitor kemajuan persis ketika berjalan tidak. - DnsProvisioning Layanan sebagai setiap catatan mengendap, daripada panel membaca kembali Seluruh log berharap sesuatu mendarat. - RetailSyncLogBroadcaster pada baris sync-log, melalui pendengar baru-lib seam, dikuatkan oleh operator config sehingga org menyelaraskan beberapa penyedia tidak menggambar ulang mereka semua karena satu bergerak. Dua counter tidak memiliki saat seperti itu, dan ditangani jujur daripada berpura-pura ke dalam peristiwa: - Rekaman VOIP backlog ditulis oleh layanan lain sama sekali, jadi PlatformStatsWatcher sampel itu - tetapi di server, sekali, dan diterbitkan hanya ketika angka benar-benar berubah, sehingga backlog tenang menghasilkan tidak ada lalu lintas dimana pengaturan lama kembali mengirim muatan identik ke setiap pemirsa dua kali menit selamanya. pemicu - sync mempublikasikan segera, karena tahu backlog akan segera bergerak. - Diagnostik aktif dalam pembacaan basis data / JVM / host dimana pada dasarnya setiap field berbeda kedua untuk kedua, sehingga tidak ada diskrit untuk mendorong. Ia mendapat telanjang tick: satu timer server memutuskan ketika "now" layak dibaca ulang, bukan satu setiap tab terbuka masing-masing menarik snapshot penuh. DomainVerifikasi Watcher menggantikan hasil polling. Progreasi DNS dan penerbit sertifikat benar-benar luar negara tanpa event untuk berlangganan ke, jadi pengecekan harus terjadi di suatu tempat - tapi tidak di setiap browser. Satu menyapu mencakup setiap domain tunggu, mengambil 25 least--recently diperiksa sehingga backlog dari domain salah konfigurasi diputar daripada menjadi re- queried dalam penuh, hanya probe HTTPS sekali DNS memecahkan, dan menerbitkan hanya ketika domain benar-benar maju. Dua tes yang ada membangun kelas-kelas ini langsung dan diperbarui untuk baru parameter konstruktor. Catatan: * * * * * * * * * * * * * gagal pada main sudah (unset EntityManager dalam layanan uji buatan tangan) dan tidak tersentuh oleh perubahan ini - diverifikasi terhadap worktree HEAD bersih.

  24. · EmailService

    Publikasikan kotak surat-perubahan peristiwa sehingga tilikan surat berhenti polling

    Pohon folder, daftar percakapan dan daftar pesan masing-masing berjalan 30 detik mereka sendiri timer, reloading pada kesempatan bahwa sesuatu telah pindah. WebSocket sudah memberitahu mereka ketika surat tiba, tapi itu hanya salah satu cara kotak surat berubah - membaca pesan di Roundcube atau di telepon, memindahkannya, menghapusnya, atau menghapus semuanya meninggalkan UI salah sampai kutu berikutnya. EmailMailbox Diganti mengatakan folder tidak lagi apa yang Anda tunjukkan, dan membawa alasan sehingga konsumen dapat mengabaikan jenis itu tidak peduli. Diterbitkan pada e-mail.changed. < addr > dan diteruskan ke * * * * * * * * * * * * * * dari pendengar IDLE (kedatangan, penghapusan, perubahan bendera) dan dari tanda-baca, bendera, pindahkan, hapus, spam, kirim dan rancangan titik akhir. Secara sengaja tidak dilipat ke Email UnreadreadPublisher: yang satu memiliki menghitung, sehingga harus mencapai semburan penyedia dan koalesce untuk tetap terjangkau. Ini membawa tidak ada hitungan dan tidak membaca apa-apa, sehingga cukup murah untuk mengirim pada setiap perubahan dan tidak harus menunggu di belakang jendela hitungan kebutuhan. Sebuah laporan pindah tidak ada folder karena menyentuh dua dan sumber tidak selalu dikenal dengan penelepon - konsumen menganggap itu sebagai "Isi ulang apapun yang Anda tunjukkan".

  25. · MediaService

    Relay SecurityService platform event into StoMP

    SecurityService memiliki platform -admin permukaan - konfigurasi sistem, DNS provisioning, commerce sync - tetapi tidak memiliki titik akhir WebSocket, jadi setiap layar Didukung oleh itu tidak punya cara untuk diberitahu apa pun dan disegarkan pada timer sebagai gantinya: tab pelatih pinjaman penutupan setiap 4 detik, DNS provisioning setiap 15, perdagangan sync log dan VOIP rekaman statistik setiap 30. Ini menerbitkan ke inti NATS, ini menempatkan pesan-pesan pada StoMP, sama Support StompRelayController and * * * * * * * * * * * * * sudah digunakan. Subjek ke tujuan adalah mekanis - drop yang terkemuka "keamanan". dan swap titik untuk garis miring, sehingga security.dns.log.42 tiba pada / topik / dns / log / 42 - yang berarti tipe acara baru membutuhkan penerbit dan pelanggan dan apa-apa di sini. Prefiks secara eksplisit terikat bukan sebagai keamanan. >: catch-all akan Kirimlah security.theme.provision. *, which me ProvisionStompRelay sudah menyampaikan ke bentuk topik yang sama.

  26. · kamo-shared-library

    Let sync progress and domain state be announced instead of polled

    Dua kait untuk konversi push di SecurityService, di mana beberapa platform layar segar pada timer karena tidak ada cara untuk memberitahu mereka apa-apa. RetailSyncLogListener adalah sebuah sesi pemberitahuan opsional pada RetailSyncOrchestrator, dipanggil ketika sebuah run sinkronisasi menulis nya IN _ PROGRESS baris dan lagi ketika menulis terminal satu. Para dalang tetap tidak menyadari bagaimana perjalanan pemberitahuan, dan tanpa implementasi terdaftar itu berperilaku persis seperti sebelumnya. Sinkronisasi penyedia dashboard dimuat ulang seluruh daftar log setiap 30 detik untuk menonton menjalankan itu hanya mulai sendiri. * * * * * * * * * * * * * * * daftar domain tingkat atas yang belum selesai datang - DNS belum diverifikasi, atau diverifikasi tanpa sertifikat dikonfirmasi. Ini ada untuk seorang pengamat verifikasi sisi server: halaman pengaturan domain dipoles verify- dns sekali per menit tab terbuka ketika menunggu pada penyebaran DNS publik dan Terbitan cert. Memerintahkanleast-recently-diperiksa pertama dan diambil dengan Pageable batas sehingga satu menyapu tidak dapat tumbuh dengan jumlah domain permanen-belum diverifikasi.

  27. · ESigService

    Ijinkan pengirim untuk menekan amplop per- mengundang email

    Membuat sebuah amplop tanpa syarat mengirim undangan, sehingga penelepon sering memukul amplop di balik satu pemberitahuan tidak punya cara untuk tetap tenang. Nulll menjaga perilaku yang ada; token akses masih dikeluarkan baik cara.

  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

    Daratkan skema paket legal

    Tambahkan com.kamo.z.shared.hr.legal ke daftar pemindaian repositori dan pastikan keunikan dan pencarian indeks pemetaan entitas tidak dapat mengekspresikan aman.

  30. · kamo-shared-library

    Rekam penanggalan paket sebagai tambahan-hanya bukti

    Tingkat paket - 'Saya telah membaca dan setuju' adalah instrumen hukum yang berbeda dari persetujuan E-SIGN untuk mengubah dan dari tanda tangan per- dokumen, dan itu adalah bukti HANYA untuk paket tanpa dokumen yang dapat ditandatangani. Penjaga menolak pembaruan dan hapus seperti yang dilakukan PhiAccessLog.

Alam semestamu menunggu.

Mulai gratis dalam beberapa menit. Tambahkan produk kapanpun Anda siap — tidak ada migrasi, tidak ada login baru.

Gratis selamanya — tidak diperlukan kartu kredit