Changelog
Ce qui est nouveau.
Chaque amélioration apportée à la plateforme, à mesure qu'elle est livrée.
· kamo-internal
Porter le noyau du kamo-signer en komo-interne
Chaque paquet 'kamo/'est privé: vrai avec les exportations:"./src/index.ts" et pas de construction étape, donc il n'y a pas d'artefact publiable - les fichiers sont copiés et recâblés sur importations relatives. Le comportement n'a pas changé; seules les importations et i18n se déplacent. pdfjs-dist 4.10.38 avec un travailleur SELF-HOSTED copié par une étape de prébuild. Non qui charge pdf.js 4.4.168 à partir de cdnjs, qui est un moteur différent et inacceptable pour une surface juridiquement contraignante, et les deux Les objets GlobalWorkerOptions restent non corrompus uniquement parce que les instances du module Ne jamais se rencontrer. Not FieldElement.tsx soit : son contrôle de champ rend pointerEvents:'non' prévisualisations sans valeur de liaison - un aperçu de concepteur, pas un input. useTranslations out des quatre composants de signature: ils appellent kamo-signer les clés de message propre, le dictionnaire kamo-internal ne les a pas, et les nouvelles clés ne peut pas être inventé. Les cordes arrivent comme supports. SIGNATURE-FONTS est un accessoire trop assez plus de quatre charges suivantes/font/google pour un modal; les marches en caractères dactylographiés toujours par CapturedSignature.tyléTrava si plaqué et le certificat ne sont pas affectés. Deux écarts marqués par rapport à une copie in extenso, tous deux en signeStore: - l'exigence de l'état de la fonctionnalité maintenant saute maintenant lireSeules des champs. FieldCompletion - l'application de la loi sur le serveur livrée - n'est pas ("f. null 'f''f't'f'l'hontOnly()''''''required()'''''''''''''''''''''''''''''' Maintenir le une copie de signataire plus stricte que le serveur garerait un membre sur une lacune qu'il n'a pas contrôler pour fermer pendant que le serveur considère que l'enveloppe est complète. - brouillon de la persistance des gardes localStorage au lieu de la fenêtre. question: localStorage peut être absent (recart de serveur) ou jeter sur l'accès (mode privé, stockage partitionné), et un brouillon ne doivent jamais prendre l'assistant vers le bas.
· DocsService
Monter la surface de l'élément à /api/docs/juridique/associé/en dollars É.------------
Un contrôleur séparé avec un entonnoir séparé, parce que l'autorisation ici est l'identité et non le droit des droits de l'homme. Rouver ce qui les suit par l'intermédiaire de gardeed() signifierait soit verrouiller chaque employé de sa propre paperasserie ou élargir LegalPackageAccess jusqu'à ce que la grille de modèles et la liste de prévisualisation de l'audience soient ouvertes à l'ensemble org; la classe n'a pas de référence à LegalPackageAccess donc le raccourci n'est pas disponible. Aucune cartographie ne prend un membre id ou un org id - tous deux provenant de la session. Service ResponseStatusExceptions garde leur statut: 404 ne sont pas à ceux-ci, 409 déjà finis, 422 non-accusés et 503 esign-non-disponibles sont quatre instructions différentes, Et l'un d'eux signifie que le membre a déjà réussi. Une exception imprévue est une cordon fixe 500: l'écho e.getMessage() est tolérable sur la surface HR, mais ceci Un seul employé peut atteindre. L'extraction de KToken s'est déplacée vers Security/SessionKToken donc ce n'est pas son troisième copie in extenso.
· DocsService
Étacte d'emballage à la fin, et la division EXÉCUTION/AVAITURE-OTRES
Écrit WORM LegalPackageAttes: attestationTextSha256 de la FROzen version (le projet de formulation du paquet est mutable et peut-être déjà reformulé), manifesteSha256 sur le document commandé, contenuSha256, orderIndex effectivement présenté, attesteAt application-set, sourceIp à partir d'un droite-à-gauche X-Forwarded-Forwarded-pour marche, proofBlob mot pour que le condensé puisse être Recalculé plus tard. Le client n'est pas fiable pour être achevé. Avant que tout soit écrit, chaque l'enveloppe du document signable est relue à partir d'ESigService; mon destinataire doit être SIGNÉ, et PARTIALLEMENT-SIGNED N'est PAS effondrée comme DisclosureEnvelopeSyncService s'effondre, donc une contre-signature en attente donne AATTING-OTHERS plutôt qu'un un paquet qui prétend être exécuté. Une lecture ratée refuse l'arrivée - a l'appel à temporisation n'est pas une preuve que quelqu'un a signé. Un paquet avec des documents sans signe zéro crée aucune enveloppe, appelle ESigService le cas, et l'attestation est sa seule preuve d'exécution. Une deuxième fin retourne la ligne existante: les lancers de pré-mise à jour de l'entité par conception et L'indice UNIQUE de migration sur l'affectation est le véritable sérialisateur.
· DocsService
Saisie de lecture d'un membre autorisé par l'identité pour les affectations
LegalAssignmentOwnership est un garde SEPARATE de LegalPackageAccess à titre d'objet: un membre exécutant son propre accord n'a aucun droit en matière de droits de l'homme et élargi le HR lecture set pour les admettre remettrait à chaque membre la grille de gabarits et la liste complète de l'audience avec des courriels. Tout ce qui n'est pas l'appelant leur affectation répond à un 404 identique - a 403 confirmerait que l'uid est réel. détail() fait la comptabilité de premier plan sur la ligne HR (premier ordre d'observation, PENDING - IN-PROGRESS) plutôt que dans ESigService, donc le statut-récipient machine n'est pas touchée et le badge reste honnête. La formulation de l'attestation vient de la version FROzen, jamais à partir du brouillon mutable du paquet. documentPdf sert des documents ACKINWLEDGE-ONLY et vérifie l'IMGDat servi. digest de contenu contre le contenu congeléSha256 avant qu'il serve un octet; saveImgContent repointe img.setDat sur chaque Docs sauf, donc la dérive est en direct. Les documents signifiables sont refusés avec un 409 nommant l'itinéraire de l'essign - ces octets doivent venir du service qui les aplatit. L'orgID/memberID de KToken est primitif long, donc l'identité "- null" du plan vérifier est 0 à la place; extractKToken laisse 0 derrière pour un champ de session absent.
· DocsService
Forme canonique manifeste et client résistant à l'usurpation d'usurpation d'eau
manifestSha256 hachure le document commandé, contentSha256, ordre un membre a été en fait représenté, préfixé en longueur, de sorte qu'un uid fabriqué ne peut pas imiter un la limite de champ et faire en sorte que deux documents différents fixent le même hachage. proofJson est stocké motièmes et aller-retour à la même digeste - un blob de preuve que ne peut régénérer son propre hachage ne prouve rien. LegalClientIp marche X-Forwarded-Forward-Forr-to-LFT et prend le premier saut public. DocumentAccessAuditor le lit de gauche à droite, qui est contrôlé par le client; un défaut préexistant n'est pas fixé ici, mais il ne doit pas être la source d'un Source de la preuveIp.
· ESigService
Haut-saisine du personnel et ténaphyle à /api/esig/member/
OTKAuth Filtre ne contourne que / actionneur, /api/esig/public et /api/esig/interne, Donc ce préfixe est derrière le personnel OTK auth avec orgId/memberId déjà sur le demande. Le destinataire n'est jamais une variable de chemin: il est résolu par l'appariement EsignEnvelopeRecipient.memberId à l'organe OTK id, donc il n'y a pas de paramètre a Un membre peut changer pour atteindre la ligne d'un collègue. Non-fondé, pas à votre or et Ne pas faire face à cette enveloppe répond toutes à un 404 identique. Non /delegate - il rame un document de conformité à un e-mail externe arbitraire sans agrément et sans drapeau neutralisé; exclu par omission, et non par un drapeau. Non /décodeur et pas/stepup non non plus: le décodeur à un criblage à un criblage de l'arête de traitement appartient au vide de HR chemin, et l'étape est inclinée sur une session Redis signataires que cette surface n'a pas. signerIpAddress provient d'une marche DROIT-LEFT X-Forwarded-For. EsignPublicController.clientIp lit de gauche à droite, qui est contrôlé par le client et donc par usurpable, et cela valorise les atterrit sur un domaine de preuve.
· kamo-internal
Sous-onglet et livraison/réunie des paquets attribués
AG Grid Community sur une interface entre les partenaires et la communauté n'a pas de modèle de ligne côté serveur, donc les pages de serveur et la grille rendent exactement ce qu'elle a été donnée. L'exécution la colonne est dérivée côté serveur à partir du même statut que la puce rend, de sorte que les deux ne peuvent pas en désaccord, et un document signable sans enveloppe soulève un avertissement plutôt que d'être assis comme "en attente" pour toujours. La colonne de filtre de droite est dirigée par le terme de l'équipe-membre de l'org, à partir de des données, avec une ligne "All" autonome - délibérément pas une seule fois interpolée "Tout l'Équipe" Membres, la corde, parce que le seul message de ce type dans le dictionnaire a un cassant cassé placeholder dans 12 des 22 localités et les nouvelles clés ne peuvent pas être inventées ici. Le fichier réutilise le point d'extrémité de l'examen de l'audience existant plutôt que d'écrire un treizième exemplaire des membres-abonnés - membres d'une équipe-contractants doublef, qui retourne les membres PROSPECT, CANDIDAT, TERMINÉS et RESIGNÉS. Le paginator "1-25 / 100" est construit à partir de données plutôt que de common.table.of, dont valeur est une STRING EMPTY en pl.json - la garde-clé ne prouve qu'une clé existe en. Void utilise un mot de défi VOID fixe: il annule les instruments juridiques en direct dans l'ensemble de l'ordre.
· kamo-internal
Livré/remise à livre/proxies et client d'affectation
Trajets ToApi jusqu'à 1:1 vers l'avant et une demande en amont chacun, parce que OTKAuthFilter le fait getAndSlete et une boucle par membre dans un itinéraire Prochain aurait besoin d'un OTK par membre. Le liste passe un PATH ONLY; forwardToApi fusionne la chaîne de requête du navigateur elle-même. Le mappage status-i18n est le vrai garde, pas check-i18n-keys.mjs: ce script uniquement s'avère qu'une clé existe en, et les messages/ sont gitignored, de sorte qu'une clé ajoutée localement passe et échoue ensuite à la construction Docker. Chaque clé ici a été vérifiée dans les 22 lieux pour la présence et l'égalité d'ensemble de places, et une broche d'essai qu'aucun des quatre les clés endommagées sont jamais restituées. Une sélection vide de vide n'envoie aucune clé de teamMemberIds - cette absence est ce qui sélectionne la branche à l'échelle de l'orgo, un tableau vide ne viderait rien et ne rapporterait rien. RedeliverResult ne s'étend PAS à DeliverResult: RedeliverResultDto n'a pas de versionNumber - Hériter qu'il déclarerait un la propriété que le backend n'envoie jamais, donc deliverSummaryParts lit newVersionNumber pour un remise en état au lieu de signaler v0.
· DocsService
Liste des affectations juridiques de paquets filtrables, filtrées
Construit sur l'EntityManager plutôt que sur une méthode de stockage partagé-lib: l'ensemble de filtrage est dynamique et l'ajouter à la bibliothèque kamo-shared forcerait une reconstruction d'artefacts partagés pour chaque consommateur pour qu'une requête ne se pose que sur les questions de DocsService. Le prédicat d'organisation est inconditionnel et d'abord, et un test prouve qu'il survit chaque combinaison de filtres - le point d'extrémité ne prend pas de paramètre org, donc une clause supprimée dresseraient des cessions d'un autre locataire. La pommêle porte un uid-ice-brise parce qu'un La livraison de 200 membres est livrée À l'intérieur d'une milliseconde. Le nombre de documents est de deux GROUPE PAR interroge, pas 25 recherches par ligne. Un statut inconnu est un 400, jamais un silencieusement un filtre ignoré sur une grille de conformité.
· DocsService
Ensembles juridiques de vide, à l'échelle de l'ordre ou du nom des membres désignés
Résultats de la commission d'affectation - annulés, exécutés, non établis - parce qu'un administrateur annuler un paquet pour six personnes nommées doit savoir lesquels avaient déjà été exécutés (leur les éléments de preuve) et qui n'ont jamais été attribués (une liste identitaire). Un 200 n'est pas possible Dites-le. Les transitions d'affectation sont synchrones: la ligne d'assignation, et non l'état de la signature électronique, est Qu'est-ce qui porte le membre et qui conduit le badge. Les vides d'enveloppe sont déversés et sont pré-filtré sur SIGNÉ/VOIDED, car voidEnveveloppe 409s une enveloppe complète et un Le document de reconnaissance uniquement n'a aucune enveloppe. Un membre peut contenir plusieurs rangées après une reliure, donc chaque ligne obtient sa propre décision.
· DocsService
Redeliver un paquet modifié, remplaçant les affectations ouvertes
Refusé à moins que l'empreinte en direct ne diffère de celle publiée. Binder.dateMise à jour est mort et Img n'a pas de compteur de révision, de sorte que l'empreinte digitale est le seul signal de changement Il n'y a pas de porte, Redeliver est un bouton qui vide silencieusement tout le monde Travaux en cours et rééditer un instrument identique. Publie par le biais du chemin de publication existant (le seul écrivain des lignes de version), marques chaque affectation OUVERTE SUPÉRÉE, fait la queue leurs enveloppes non-terminaux pour annulation, et des rééditions à l'ensemble de membres remplacés plus toute personne nouvellement appariée - re-remsoluble findAudience donc un membre licencié a pris fin depuis que la première livraison n'a pas été remplacé. Les affectations exécutées sont intactes; elles sont les preuves.
· DocsService
Délivrez un paquet juridique à son public, en dehors du fil de demande
Planifier le fil de demande (deux requêtes bon marché, donc la réponse est exacte sur qui est inclus et qui a été sauté et pourquoi), rayez-le par profits et pertes: 200 membres x 8 documents est 1 600 lignes plus autant d'appels ESigService, et DocsService sert WOPI. Le pool n'est PAS un haricot d'exécution de printemps. applicationTaskExecuteur est DocsService a déjà n'est pas d'accord sur le lien entre les KSessionService et DocumentService - publier un équipage d'exécution se déplacerait silencieusement la session WOPI touche cette petite piscine délimitée. Les enveloppes sont créées en dehors de toute transaction; un délai de lecture des années 20 lors de la détention d'un La connexion de Hikari est la façon dont un groupe de dix étoiles. Document signable dont l'enveloppe l'échec maintient une enveloppe nulle, qui est le seul signal que la grille a. Les cartographies redeliver/mouve/poste-réseau atterrissent ici aussi, de sorte que le contrôleur a UN l'entonnoir d'autorisation écrit et prouvé une fois plutôt qu'un second embouteillage ultérieur; leurs services répondent à 501 jusqu'à ce que les tâches 4 à 6 remplissent les organes.
· DocsService
Planificateur de livraison - ciblage progressif, pré-filtre par courrier électronique, dates d'échéance
Le lieu est la voie de la nouvelle embauche et est censé être re-run, de sorte que les membres qui ont déjà un l'affectation est soustraite plutôt qu'une deuxième copie du même instrument. Les membres sans e-mail sont comptés et sautés à l'avance, parce qu'EsignEnvelopeService 400s a signé sans un de l'intérieur de la boucle, après les anciens membres ont déjà enveloppes vivantes. La requête d'audience OU est à trois prédicats, donc les doublons sont effondrés. Un document de reconnaissance uniquement ne reçoit délibérément aucune enveloppe.
· DocsService
Client interne de l'entreprise ESigService pour la livraison de colis juridiques
Le premier client sortant de DocsService à service à service. Postes à (Augmentation MANUEL, jamais mesurée) avec suppressInvite-true et HR envoie une notification, et non une par document par membre. Les temporisations sont explicites: EsignEmailClient construit un paquet nue avec aucun, et un lire intemporelle sur une pod cosses coincées un fil de travail jusqu'à redémarrage. Rien ne jette sur un erreur en amont, parce que le ventilateur émet un appel par document de notification par membre et ne doit pas avorter le lot sur un mauvais modèle. Cartes de Void 409 à un compte rendu signé plutôt qu'une erreur. Les relevés de réponse ignorent les champs inconnus - le Contexte ObjectMapper a toujours FAIL-ONUNKNOWN-PROPERTIES on.
· kamo-internal
Sous-onglet pour les modèles d'emballage juridique et de conformité
Remplace le corps HrTabPlaceholder uniquement - la route, l'entrée de la languette et la porte existent déjà dans hrTabs.ts. AG Grid Community list plus un dialogue de création/modification avec un un cueilleur ordonné à RHR-RESOURCE (ordinal 13, non id 15), en réordonnant le haut/délai, et le Département/Job Type de groupe de sélection que les membres de l'équipe sont disposés. Le L'étiquette de toggle est le terme d'équipe au pluriel de l'orge, jamais une chaîne codée en dur. Pas de nouvelles clés i18n: chaque label réutilise une clé que le dictionnaire définit déjà, et compte rendre à partir de données.
· kamo-internal
Trains légaux de procuration, clients api et aides pures
Mince 1:1 forwardToApi routes sous /api/docs/juridique - une demande en amont chacune, Parce qu'OTKAuthFilter getAndDelete et une boucle de ventilateur dans un itinéraire Prochaine serait besoin d'un OTK par membre. Les Ids restent des cordes bout à bout (uniquementrowid). Réordonner est Les listes d'audience sont envoyées vides lorsque l'équipe est classée. Les membres sont donc plus étroits qu'un public plus étroit ne peut pas revenir.
· DocsService
Vue de la résolution du public
Résout un public sauvegardé ou conjuge par l'intermédiaire de TeamMemberRepo.findAudience, qui est le uniquement le lecteur titulaire de l'inscription obligatoire AC AC: état de l'admissibilité de l'État Le point d'entrée de l'équipe-membres-contractants retourne PROSPECT, CANDIDATE, TERMINÉS et RESIGNED. Drapeaux membres sans e-mail (EsignEnvelopeService hard-400s sans un) et membres sous la rubrique «Sécurité» (ImagingController saute silencieusement la copie déposée). Une le public ciblant rien ne résout à personne, et les listes d'idures vides deviennent des sentinelles donc les clauses OR'd IN restent valides SQL.
· DocsService
Publier une version avec des documents épinglés enoctets
Pins img-dat-id plus un hash à contenu, pas img-id: saveImgContenu repointe la même chose Img à de nouveaux octets sur chaque Docs sauvegarder, et la résolutionSource marche jusqu'au dat live lors de la construction de la session et de l'aplattage. Insigne la conception gelée au lieu de laisser resoute à la nouvelle, refuse un document sans converti PDF et refuse une publication dont l'empreinte digitale n'a pas évolué.
· DocsService
Paquet juridique CRUD à /api/docs/juridiques/packages
Énumérer, créer, obtenir, mettre à jour et supprimer, avec le classeur ordonné refs et les lignes de public remplacé par un ensemble. L'orge vient de la session sur tous les chemins. permitAll et OTKPreAuthFilter poursuit la chaîne sans jeton, de sorte que le l'extrait du contrôleurKToken est l'authentification. Département d'orge, titre d'emploi, membres et classeurs ids 400 explicitement plutôt que d'écrire silencieusement rien.
· DocsService
Contrat de téléchargement légal et normalisation des demandes
Les Ids se croisent sous forme de cordes (unique-rowid dépasse MAX-SAFE-INTEGER). L'ordre de binder est le liste d'ordres, dépliqué, et d'une entrée non numérique des 400 au lieu d'être sautées sautile est la façon dont un réordonneur perd un liant. Les listes d'audience vides s'effondrent à un sentinelle de sorte que les clauses OR'd IN dans findAudience restent valides SQL.
· DocsService
Ic numérique de contenu pour les emballages juridiques
Binder.dateMisementMisement jamais bouge après INSERT, donc le contenu d'un paquet n'a pas de changement signal à comparer. Ajoute un SHA-256 sur le liant/tuple de liant canonique ordonné y compris imgDatId, car saveImgContent repointe le même Img à de nouveaux octets chaque Docs sauvegardez - plus le hachage du texte de l'attestation. Le codage est préfixé en longueur donc un configJson fabriqué ne peut pas forger une disposition différente. Ajoutez également com.kamo.z.shared.hr.legal au stockage scan.
· SecurityService
Push platform-admin change d'état au lieu d'être interrogés pour eux
Chaque écran de plate-forme soutenu par ce service rafraîchi sur une minuterie, parce que ce Le service n'a pas de WebSocket et n'a donc aucun moyen de dire quoi que ce soit à qui que ce soit: onglets d'entraînement à gain fermé re-lire toutes les 4 secondes alors qu'une course était en direct, DNS la provision pour chaque 15, les relevés de synchronisation du commerce et les statistiques d'enregistrement VOIP toutes les 30, et la page de configuration de domaine a demandé des crans de vérification une fois par minute par onglet ouvert. PlatformEventPublisher les envoie à NATS et MediaService de base PlatformStompRelayContrôleller les met sur STOMP. Core NATS plutôt que JetStream, Correspondance ThemeProvisionPublisher: le flux de ce service est CHAT-MESSAGES/chat., Donc un JetStream publierait à la sécurité. lâchées. La plus grande partie est le bon commerce - chaque consommateur charge également au-dessus de REST lorsqu'il monte, donc un événement perdu coûte un rafraîchissement, jamais la correction. Câblé aux points où l'état se déplace réellement: - ClosedLoanTrainerService sur chaque écriture, sur les réclamations et sur chaque rapport état terminal, donc le moniteur avance exactement quand la marche le fait. DnsProvisioningService au fur et à mesure que chaque enregistrement est réglé, plutôt que la relecture du panel toute la bûche en espérant que quelque chose a atterri. RetailSyncLogBroadcaster sur chaque ligne de synchronisation-log, via le nouvel auditeur à partage cam, à clé par le fournisseur config, de sorte qu'une syndicale synchronisation de plusieurs fournisseurs n'est pas les tous redessinés parce que l'on a bougé. Deux contre-avions n'ont pas un tel moment, et sont gérés honnêtement plutôt que prétendument en événements: - L'arriéré d'enregistrement de la VOIP est entièrement écrit par un autre service, de sorte que PlatformStatsWatcher l'échantillonne - mais sur le serveur, une fois, et il publie uniquement lorsque les chiffres changent réellement, donc un arriéré calme ne produit pas de trafic lorsque l'ancien arrangement renvoie une charge utile identique à chaque spectateur deux fois plus minute pour toujours. trigger-sync publie immédiatement, car il connaît l'arriéré est sur le point de bouger. - Les diagnostics sont des lectures JVM/host/database en direct où pratiquement tous les champs diffère de la seconde à la seconde, il n'y a donc rien de discret à pousser. Il devient nu cocher: une minuterie de serveur qui décide quand "maintenant" vaut la peine d'être relu, au lieu d'une minuterie par languette ouverte tirant chacune l'instantané complet. DomainVerificationWatcher remplace le sondage de la page d'installation. Propagation DNS et la délivrance de certificats est un État véritablement extérieur, il n'y a pas lieu de souscrire: Donc la vérification doit avoir lieu quelque part - mais pas dans tous les navigateurs. Un balayage couvre tous les domaines d'attente, prend les 25 moins récemment contrôlés, ce qui représente un arriéré de les domaines mal configurés tournent au lieu d'être re-renchiés en entier, seules sondes HTTPS une fois que DNS résout, et ne publie que lorsqu'un domaine avance réellement. Deux essais existants construisent directement ces classes et ont été mis à jour pour la nouvelle paramètres du constructeur. Note : échouent déjà sur le principal (inaplant EntityManager dans le service de fabrication manuelle du test) et n'est pas affectée par cette modification - vérifiée par rapport à un arbre de travail propre.
· EmailService
Publier des événements de changement de boîte aux lettres pour que les vues postales cessent de s'exprimer
L'arborescence des dossiers, la liste des conversations et la liste de messages ont chacun fonctionné leurs 30-secondes timer, recharger l'occasion que quelque chose ait bougé. Le WebSocket déjà leur a dit quand le courrier est arrivé, mais ce n'est qu'une des façons dont une boîte aux lettres change lire un message en Roundcube ou sur un téléphone, en le déplaçant, en le supprimant, ou l'effacer tout cela a laissé l'UI mal jusqu'à la prochaine coche. EmailMailboxChanged dit qu'un dossier n'est plus ce que vous montrez, et transporte la raison pour laquelle un consommateur peut ignorer les types dont il ne se soucie pas. Publiée le e-mail.changed..addr et relayé à - à partir du Les auditeurs IDLE (arrivée, pin, changement de drapeau) et de la marque-lecture, drapeaux, déplacer, supprimer, spam, envoyer et rédiger des points d'extrémité. Délibérément pas plié dans EmailUnreadPublisher: que l'on possède un compte, donc il doit atteindre le fournisseur et fusionner des rafales pour rester abordable. Il en résulte des transports. pas de compter et rien lire, il est donc assez bon marché pour envoyer à chaque changement et ne doit pas attendre derrière une fenêtre dont le comptage a besoin. Un mouvement ne signale pas de dossier parce qu'il touche deux et la source n'est pas toujours Connaissant cela comme "rechargez ce que vous montrez".
· MediaService
Événements de la plate-forme Relay SecurityService sur STOMP
SecurityService est propriétaire de la configuration de la surface admin et du système de la plate-forme, DNS provisionnement, synchronisation du commerce - mais n'a pas de point d'extrémité WebSocket, donc chaque écran Il n'avait aucun moyen de se dire quoi que ce soit et rafraîchi sur une minuterie à la place: l'onglet trainer-prêt fermé toutes les 4 secondes, Approvisionnement en DNS toutes les 15, commerce des journaux de synchronisation et des stats d'enregistrement VOIP tous les 30. Il publie sur le NATS de base; cela met ces messages sur STOMP, la même Système d'appuiSeptateurRelayContrôleur et déjà utilisé. Sous réserve de destination, il y a la mécanique et la chute de la principale "sécurité" et des swaps. points pour les barres obliques, donc security.dns.log.42 arrive sur /topic/dns/log/42 - qui signifie qu'un nouveau type d'événement a besoin d'un éditeur et d'un abonné et rien ici. Les préfixes sont liés explicitement plutôt qu'en tant que sécurité. double-deliver security.theme.pre., that ThemeProvisionStompRelay se transmet déjà à la même forme de sujet.
· kamo-shared-library
Laissons les progrès de synchronisation et que l'état de l'État soit annoncé au lieu de polled
Deux crochets pour la conversion push dans SecurityService, où plusieurs plates-formes les écrans se sont rafraîchis sur des minuteries parce qu'il n'y avait aucun moyen de leur dire quoi que ce soit. RetailSyncLogListener est une couture de notification facultative sur RetailSyncOrchestrator, appelé lorsqu'une course de synchronisation écrit sa ligne IN-PROGRESS et à nouveau quand il écrit le terminal un. L'orchestre reste inconscient de la façon dont la notification se déroule, et sans mise en œuvre enregistrée, il se comporte exactement comme avant. La synchronisation du fournisseur tableau de bord rechargé toute sa liste de journal toutes les 30 secondes pour regarder une course qu'il avait juste a commencé lui-même. :: Répertorier les domaines de premier niveau qui n'ont pas terminés à l'arrivée et au DNS non vérifiés, ou vérifiés sans certificat confirmé. Il existe pour un observateur de vérification côté serveur: la page de configuration du domaine interrogée vérifier-dns une fois par minute par onglet ouvert en attente de propagation DNS publique et l'émission de certificats. Commandé d'un premier examen et pris avec un Pageable limite de sorte qu'un balayage ne peut pas croître avec le nombre de domaines définitivement non vérifiés.
· ESigService
Autoriser un expéditeur à supprimer l'e-mail d'invitation par enveloppe
Création d'une enveloppe par courriel inconditionnellement une invitation, donc un appel d'offres par lots de beaucoup les enveloppes derrière une notification n'avaient aucun moyen de rester silencieux. Null préserve le le comportement actuel; le jeton d'accès est toujours délivré dans les deux sens.
· EmailService
Poussez INBOX n'a pas lu compte sur NATS/WebSocket au lieu de l'interrogation
L'insigne de nav-top de courrier en kémo-interne s'est rafraîchie en appelant /api/courriers/dossiers toutes les 30 secondes, par onglet du navigateur. Ce point d'extrémité survient au arborescence de dossiers entiers et ouvre chaque dossier en lecture seule pour répondre, donc le coût de Un entier était un résumé complet de la boîte aux lettres, répété indéfiniment. La prise en charge Web qui existaient déjà seulement, il était annoncé que le courrier était arrivé et ne portait aucun décompte, Donc, son travail était de déclencher un autre sondage. Publier le compte lui-même: - EmailUnreadSnapshot sur le site NATS email.unread..addr, relayé à STOMP /topic/email/unread/-memberId. NATS est sur le chemin parce que la gousse qui observe un changement n'est pas systématiquement la gousse qui détient la prise WebSocket du membre. - EmailUnreadPublisher coalesce par boîte aux lettres, donc une livraison IDLE à dix messages ou une page de courrier indiqué est un aller-retour IMAP et une page, en dehors de la fil de l'appelant. - MailReader.getUnreadCount lit un dossier. Le graphique le répond à partir du dossier lister il revient déjà; les fournisseurs soutenus par IMAP l'emportent avec un seul ÉTAT (UNSEEN). - Un instantané est publié sur abonné, sur les messages IDLEAdded/messagesRemoved, sur les changements de drapeau IMAP, et à partir du liseur de marque / drapeaux / de déplacement / supprimer / spam les critères d'évaluation. Trois lacunes se creusent également: - Les changements de drapeaux étaient invisibles. Le courrier en rondcube ou sur un téléphone «Voir sans ajouter ni supprimer un message, donc le badge n'est jamais tombé que lorsque le navigateur suivant a sondé. IDLE porte maintenant un messageChangedListener. - Les boîtes aux lettres en nuage n'ont aucune poussée. EmailWebSocketContrôleur résolu par l'intermédiaire du tableau des utilisateurs virtuels KamoMail, qui n'a pas de ligne pour une membre de Microsoft 365 ou Google Workspace, donc subscribe() a enregistré un avertissement et restitués. Il se résout maintenant via MailProviderResolver, et IDLE se connecte avec le paramétrage (hôte/port/TLS/XOAUTH2) via un partage ImapStoreFactory.connect plutôt que de supposer l'hôte KamoMail et un mot de passe. - Des séances ont fui. Un onglet fermé n'envoie jamais /email/désabonnement, donc mailboxes sont maintenant comptés par session STOMP et publiés SessionDisconnectEvent. Boîtes aux lettres sans écoute IDLE en direct et graphique, au-delà du capuchon à 50 connexions, ou a Fil d'IDLE mort - sont balayés côté serveur toutes les années 60 et publiés dans la même sujet. Qui remplace le vote par onglets plutôt que le push: un balayage sert tous les un membre a ouvert, l'adhésion est à nouveau testée chaque carte de passe donc un auditeur mort est pick-up, et le navigateur reçoit toujours le compte sur le WebSocket. MessageIndexer lie le courrier électronique et désérialisé tout dessus en tant que message, donc Il saute maintenant les sujets en dehors de l'e-mail.inbox. que par le rétrécissement de l'abonnement, parce que l'indexeur de mails-metadata est durable le consommateur et le changement de son sujet de filtrage rejetterait l'abonnement sur chaque gousse jusqu'à ce que la durabilité soit supprimée à la main.
· InitializerService
Débarrquez le plan juridique
Ajout de la liste de scans com.kamo.z.shared.hr.legal et assure la l'unicité et les indices de recherche que la cartographie des entités ne peut pas exprimer en toute sécurité.
· kamo-shared-library
Enregistrer l'attestation de colis en tant que preuve d'appendice uniquement
Le "j'en ai lu et d'accord" au niveau du paquet est un instrument juridique différent de le consentement de l'E-SIGN à effectuer un rapport et à partir de toute signature per-document, et il est la seule preuve d'un colis sans document signable. Les gardes refusent la mise à jour et supprimer la manière dont PhiAccessLog.
· kamo-shared-library
Ajouter des affectations par membre et avances par document
La ligne de documents est la jonction qui fait que N enveloppes de signature électronique sont lues comme un seul colis. Le décompte des badges se dessèche de l'état d'affectation, et non du statut de signe électronique: le destinataire statut n'a pas voix au point ou EXPIRE, le vide ne touche jamais les lignes de destinataire, et un le paquet de reconnaissance uniquement n'a pas d'enveloppes.

Votre univers vous attend.
Commencez gratuitement en quelques minutes. Ajoutez des produits quand vous êtes prêt. Pas de migration, pas de nouvelles connexions.
Gratuit pour toujours — aucune carte de crédit requise