Aller au contenu
KAMOUniverse

Changelog

Ce qui est nouveau.

Chaque amélioration apportée à la plateforme, à mesure qu'elle est livrée.

  1. · 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.

  2. · kamo-shared-library

    Gel du contenu du paquet en versions immuables

    Pincer l'id ImgDat blob et son SHA-256, pas seulement imgId et un Docs repointe le même Img sur les nouveaux octets, de sorte que imgId seule laisserait deux membres signer des documents différents dans des documents identiques. Inscrire aussi la conception, donc l'exécution ne dépend jamais du repli de résolueDesignJson sur la dernière mise en page.

  3. · kamo-shared-library

    Cibler un paquet dans les départements, les types d'emplois ou les membres désignés

    Formable sur SystemUserAccess. Ajout du résolveur d'audience à TeamMemberRepo, qui était une interface vide; le prédicat d'état d'enregistrement ACces est ce qui tient Le personnel licencié et les candidats non engagés ont été licenciés.

  4. · kamo-shared-library

    Ajouter les entités du modèle de paquet juridique

    Un paquet est un ensemble ordonné de classeurs plus un public. Les références de liant sont ides doux parce que les liants sont déseuvables par l'utilisateur et en cassent leurs articles. Le La formulation de l'attestation est stockée intégralement avec son hachage - un pointeur ne peut pas prouver ce qu'un membre a accepté.

  5. · kamo-internal

    Faire en sorte que le magasin de classeur soit informé de sa collection

    Le magasin est un module singleton, de sorte qu'il suit maintenant la portée active, s'éclaircit sur un changement de champ d'application, et laisse tomber les réponses en vol.

  6. · DocsService

    Énumérer et créer des classeurs au sein d'une collection

    Égère la requête visible-lien vers la DocManager (assocType, assocObjectId), estampe la portée sur la création, l'héritifie sur dupliqué, et coche le dernier - modifié à partir des mutations de l'élément qui n'écrivent jamais les classeurs.

  7. · DocsService

    Porter le champ d'application de la collecte sur le contrat de fil de liant

  8. · InitializerService

    Recouvrement de la collection de chaque liant existant auquel appartient

    Derne le champ d'application de l'Img du premier élément DOC; les liants vides retombent vers Le propriétaire est Mes Docs. N'applique PAS NULL uniquement après le remblai.

  9. · kamo-shared-library

    Visibilité du liant étroit pour une collection de documents

    Remplace findVisibleToMember par une variante portée et laisse tomber les deux des finders non référencés qui triés par la colonne Date-updated.

  10. · kamo-shared-library

    Donner à un liant la collection de documents auquel il appartient

    Les Binders n'avaient pas de cadrage assoc, donc chaque DocManager a rendu le même global par groupe de membres et un liant construit sous Marketing pourraient être remplis de ressources humaines documents. Maître l'ordinal ImageAssocType pour correspondre à Img.assocId. Ajout également d'une dernière modification modifiée par l'application: BaseEntity.dateUpdated is - donc le tri par le type de la liste a toujours été modifié était en train de trier par le temps de création.

  11. · kamo-internal

    Regrouper les domaines d'invitation de la réunion en signifiant lorsqu'ils sont maximisés

    Le fractionnement de la forme en deux fractions égales a utilisé la mauvaise unité. Il a étiré une date entrée sur la moitié de la fenêtre et a refoulé sa boîte toute la journée à l'extrémité, gauche deux entrées à court temps remontant plusieurs centaines de pixels de rien, et poussées Ajouter une largeur de fenêtre complète à partir des Rappels auxquels il appartient, tandis que les champs Lire comme une pensée assis des rangs séparés. La réclamation permet de suivre une grille de 12 colonnes à la place, dimensionnée à ce que chaque champ est: Titre pleine largeur, champ-culotte Date : Toute la journée : T : l'ensemble du groupe "quand" sur une ligne Emplacement et URL de réunion où il se trouve et comment s'y joindre Étiquette de rappels, rubriques et addition de flux en ligne Les rappels seuls reviennent: deux sélections courtes ne coûtent plus une ligne chacune. Le fuseau horaire s'élargit pour absorber les pistes du champ du temps lors d'une réunion d'une journée. cette ligne couvre encore la largeur. L'ordre de champ n'est pas modifié - le groupement arrive à partir des travées, donc ce que vous suivez reste ce que vous voyez, dans les deux mises en page.

  12. · kamo-internal

    Tenir l'original cité hors du corps éditable

    En réponse, le message cité a été distribué dans l'éditeur Quill sous forme de texte de corps. Quill ne peut modéliser qu'une grille simple, donc chaque tableau de mise en page dans la citation était aplatis en un seul - et des tableaux de mise en page sont la façon dont les signatures et la quasi-totalité le courrier de marketing est construit, c'est pourquoi une signature citée est revenue à la nja. une grille de cellules sans aucun moyen de récupérer l'original. La citation se déplace maintenant à côté du corps plutôt qu'à l'intérieur. Répondre, répondez-nous et en avant, la main en tant que "quotedHtml"; le compositeur le montre en dessous du signature, exactement où elle atterrit dans le courrier envoyé, rendue par la même iframe bac à bacs de sable utilise le panneau de lecture - donc il semble qu'il l'a fait quand il est arrivé, et son CSS ne peut pas fuir dans le compositeur qui l'entoure. À l'envoi, il est joint en annexe. après la signature. Il s'est effondré pour commencer, parce que sur un long fil, la citation éclipse la réponse. Deux actions sont assises à côté d'elle: le retirer de la réponse, ou le déplacer dans le corps en tant que texte ordinaire. La seconde existe parce que retirer la citation de l'éditeur a retiré la capacité de couper un fil jusqu'à la ligne à laquelle il a été répondu - faire qui coûte encore la présentation, mais c'est maintenant un choix explicite plutôt que le défaut inévitable. S'est infecté en dehors. Routage de la citation autour de l'éditeur l'a également acheminé autour de l'épurage implicite de l'éditeur, ainsi sanitizeEmailHtml maintenant Il court dessus avant qu'il ne soit réenvoyé. Délibératoirement PAS faire par makeHtmlLegible: qui protège la couleur contre la toile blanche du compositeur, qui est juste pour le texte écrit là et mal pour une citation qui conserve son propre « style » et qui rend compte de ses propres antécédents. Inversation Un texte blanc sur le thème sombre aurait rendu sombre-on-obscurité. La citation roule dans l'instantané de la fenêtre d'outil donc un rechargement ne le perd pas, et est concaténé sur le corps lors de la sauvegarde d'un brouillon - le point d'extrémité des brouillons en stocke un un organe et un projet rouvert contenant la citation sous forme de texte bat la perte du fil.

  13. · kamo-internal

    Associer les champs d'invitation à la réunion en deux colonnes lorsqu'ils sont maximisés

    Le formulaire d'invitation empile huit lignes de pleine largeur, qui dans un composition maximale une fenêtre a poussé l'éditeur du corps la plupart du chemin hors de l'écran tout en laissant la moitié du la largeur de la fenêtre vide de part et d'autre des entrées. Maximisé, les champs s'écoulent maintenant dans deux pistes dans leur ordre DOM existant Titre-Date, Time-Timezone, Location-URL - réduire de moitié la taille du formulaire sans réorganiser quoi que ce soit ou toucher la disposition étroite. Les rappels gardent toute la largeur dans les deux: la liste croît une ligne par rappel, et une demi- colonne ferait la forme entière saute en hauteur à chaque fois que l'on ajoute un. Les pistes sont minmax(0, 1fr) au lieu de 1fr, ou une piste de grille par défaut min-width:auto refuserait de réduire au-dessous de son contenu et de laisser la ligne URL Entrée et Générer le bouton enfoncé au-delà de la moitié de la largeur.

  14. · ESigService

    Appliquer les opérations de page et les modificateurs au document signé

    Le concepteur a toujours proposé la rotation de la page, la suppression, la réorganisation et l'ajout blanc, plus filigrane, numéro de page et modificateurs d'étiquettes, et l'aplaté ne lisait aucun de ses articles: il des valeurs de champ estampillées sur les pages sources et les certificats annexés. Une page vous supprimé encore expédié, un filigrane que vous avez configuré n'est jamais apparu. Tout cela est maintenant appliqué. Le pipeline compose dans l'ordre aux attentes d'un lecteur exigent des pages blanches insérée afin que l'espace index de la conception corresponde au document, chaque page tournée, Défauts de rétromodificateurs, valeurs de champ estampillées, dessinées au-dessus des caractères, supprimées pages sont tombées et le reste a été réaménagé, les certificats en annexe en dernier. Certificats ne contiennent pas de numéro de page ou de filigrane: ils sont le compte rendu de l'audit du document, pas de cela. La numérotation des pages est résolue par rapport à la séquence finale, de sorte qu'un document qui Donne un nombre de pages ses survivants 1...n plutôt que de laisser un écart. Le concepteur Résout maintenant cette séquence de manière identique (kamo-internal pageSequence.ts mirrors EsignPageLayout, cas pour cas) de sorte que l'aperçu ne peut pas promettre un nombre le document livré ne sera pas soumis. les modifications sont placées contre la page comme le lecteur la voit, qui sur un tour page signifie recoder les coordonnées d'affichage dans l'espace utilisateur et pré-tourner le contenu donc il ne sort pas latéralement - EsignPageFrame fait cela, et son quatre rotations sont épinglées par des essais en coin. Les filigranes utilisent le logo de l'ordre du seau à thème. La plupart des orgs détiennent SVG uniquement et PDFBox dessine des trames, donc SVG est transcodé via Batik avec l'extérieur. le chargement des ressources refusé - un logo téléchargé est un contenu fourni par les locataires et la rastraque n'est pas assainie. Une barre sans logo ne reçoit pas de filigrane; La marque par défaut de la plate-forme n'est jamais remplacée par un contrat de locataire. Durcissement tout au long: la conception JSON est totalement analysée, donc quelque chose de malformé, ou d'un nouveau designer est abandonné au lieu de jeter et le les signatures atterrissent encore. La suppression de chaque page est refusée - PDF n'a pas de validité Un formulaire de page zéro et un accord sans page ne sont pas un document. Page héréditaire les attributs sont épinglés avant la restructuration de l'arborescence des pages. Un champ sur un texte supprimé La page n'est pas estampillée sur une autre page. Le texte garde ses accents au lieu de être aplatible en ASCII, par caractère, par rapport à ce que la police peut encoder. 59 tests, dont 17 ramènent la vraie PDFBox bout à bout et la lecture du résultat.

  15. · kamo-internal

    Donner plus de place à chaque fenêtre d'outil pop-up 40px plus de place dans les deux axes

    Par défautSize et minSize dans le registre, la taille et la taille de chaque outil se développent de 40x40, et géométrie qui était codée en dur à côté de lui se déplace avec lui plutôt que de dériver par accord: - Table de calculTaille par mode, qui reflète la traducteur de la calculatrice par défaut du registre. - La restoration d'AiChatWindow est à partir de la taille maximisée. À 420x520, c'était déjà un cheveux sous l'ancien minimum; contre le nouveau 360x540 il aurait été restauré on laisse la fenêtre plus petite qu'une respiration de la drague. - restoreWindows() rejoue maintenant une taille persistante seulement pour un outil le lecteur peut réellement redimensionner. Pour un outil de taille fixe, l'instantané ne fait qu'échoir le registre par défaut de la version de savoir laquelle l'a écrit, donc un rechargement d'onglet à travers ce changement aurait rétabli l'ancien 320x650 et l'aurait conservé pour le reste de sa vie. Le même garde fixe un cas qui est antérieur à ce changement: une fenêtre le relais avait serré pour s'adapter à une courte prise de vue a persisté au La taille s'est serrée et n'a jamais recouru par la suite. Le dock lui-même emplacement et findDockX, relayoutWindows, la makeRoom rect et l'évitement du moteur hexagonal - tout mesure la géométrie en direct, de sorte qu'ils suivent le de nouvelles tailles sans rien à mettre à jour. Corrige également le bouton de maximisation de la discussion d'AI, qui choisit son action parmi «hauteur 800» en dessinant son icône à partir de "isMaximized". Sur n'importe quelle fenêtre d'affichage moins de 800px maximisation ne pourrait jamais satisfaire ce seuil, donc le un bouton offert pour restaurer puis maximisé à nouveau - la fenêtre ne pouvait pas être Ramenez-vous du tout. Tous deux lisent maintenant la même valeur.

  16. · kamo-internal

    Puces de destinataire de glisser, couper, copier et coller entre To, Cc et Bcc

    Déplacer quelqu'un de To à Bcc signifie supprimer la puce et taper l'adresse à nouveau de mémoire. Les puces sont maintenant sélectionnables et peuvent être traînées ou transportées le presse-papier de l'un des trois champs dans n'importe quel autre. - cliquer sélectionne une puce; ctrl/cmd-click toggles et shift-click prend une plage. La carte d'information passe d'un clic à un double-clic, de sorte qu'un seul clic peut faire quoi Il le fait dans tous les autres clients de courrier - prenez la puce. - faire glisser une puce ou une sélection entière vers un autre champ. Ctrl ou Alt détenu le fabrique une copie; un caret d'insertion indique où il atterrira, et tombant à l'intérieur du les mêmes réordonnées de champ. Une traînée multipuce porte un compte plutôt que de montrer - Ctrl-X / Ctrl-C / Ctrl-V des puces mobiles entre les champs. écrit, donc une puce traînée ou copiée dans le corps - ou dans un autre courrier le client est entièrement arrivé sous la forme d'une liste d'adresses ordinaire; un arôme privé à côté, il garde le nom, la photo et le lien de contact pour une pâte à dos à Kamo. - clavier: les flèches marchent sur les puces (allonge le déplacement), Ctrl-A prend le champ, Supprimer supprime la sélection et atterrit sur la puce suivante, Escape return à l'entrée. Backspace dans une entrée vide maintenant marche sur la dernière puce à la place de le supprimer purement et simplement, donc ce qui est sur le point de partir est visible en premier. - collage dans les puces d'entrée chaque adresse complète qu'elle trouve, y compris une Un seul. Un fragment à demi-type tombe toujours à l'entrée du texte. La moitié de l'interchisme a besoin des trois champs pour agir les uns sur les autres, ce qui est un champ la possession de seulement sa propre liste ne peut pas faire; et effectue le mouvement. Un champ rendu sans lui - le rédacteur en chef de campagne en utilise un de manière à ce qu'elle soit, elle maintient la sélection, la réordonnée et le presse-papiers, et a simplement où il n'y a pas de transfert. parseRetaincitainList nécessite maintenant un domaine plutôt qu'un simple ''. parseAdresseAdresse est délibérément laxiste parce qu'il tape un cache d'avatar sur n'importe quel en-tête Porté, une puce est quelque chose que nous allons essayer de livrer, et de coller "bob" a produit un qui n'a jamais pu être envoyé.

  17. · kamo-internal

    Faire tourner la superposition du champ avec la page, signaler les importations non lues, champs de commande à lire

    Trois choses qui ne commencent à avoir de l'importance qu'une fois qu'un document arrive en portant quarante les champs détectés au lieu de deux corps placés à la main. rotation de la page: rotation d'une page tournée vers la toile mais gauche des champs et annotations derrière, donc ils ont glissé du contenu auquel ils étaient ancrés. Les deux couches maintenant tourner avec la page, en gardant leurs coordonnées dans l'espace libre de la page Parce que c'est contre quoi le backend positionne. Chaque interaction de pointeur est mappés à partir de l'espace d'écran à travers la nouvelle page Aides à la géométrie - traînage, le redimensionnement, le dessin d'annotation et la chute d'un nouveau champ de la boîte à outils non rotées: celles-ci sont placées contre le cadre de page, et non son contenu. Marqueur non revu: les champs placés automatiquement portent un anneau en pointillés jusqu'à ce que l'utilisateur clique l'une, donc une grande quantité d'importation se lit comme une liste de contrôle. Session uniquement, jamais sauvée. Ordre de lecture: les champs détectés sont triés sur la page et sur chaque ligne, avec une tolérance, donc une rangée légèrement désalignée trie encore gauche à droite. Widget L'ordre dans le dossier est un artefact de fabrication d'outils et souvent n'est pas lue dans l'ordre. Correction également d'une collision option-valeur de ma propre création: deux boutons radio dont la correspondance imprimée (deux "oui" sur une question) a reçu la même valeur, et le signataire allume un bouton en comparant la valeur du groupe au bouton, Les deux se seraient allumés immédiatement.

  18. · kamo-internal

    Lire les actions du format Acrobat lors de la détection des champs remplissables

    Acrobat stocke le format prévu d'un champ sous le nom de JavaScript dans /AA, qui pdf.js les surfaces en tant qu'actions. C'est la déclaration de l'auteur plutôt qu'une supposition hors du nom du champ, donc il surpasse maintenant le nom/titonction heuristique: - AFNumber-Format -------------------------------------------------- - AFDate-Format/AFDate-FormatEx ------------------------------------------- - AFPercent - Numéro de format - AFSpecial-Format(n) - zip / zip 4 / téléphone / SSN - un action de calcul signifie que le champ est calculé, de sorte qu'il importe en lecture seule; Aussi: une signature ou un widget initial plus mince que les besoins de contrôle augmentent maintenant vers le haut à partir de son bord inférieur, puisqu'un champ de signature PDF n'est souvent que très grand en tant que règle imprimée, il est assis et l'encre appartient au-dessus de la ligne; et un XFA pur Un document est signalé comme tel au lieu de lire comme "pas de champs remplissables", parce que ses champs vivent en XML que la détection d'AcroForm ne peut pas voir. Vérifié contre real pdf.js 4.10.38 à côté de la suite de l'unité.

  19. · kamo-internal

    Insérer un nouveau lien de réunion chez le codeur du compositeur

    Ajoute une action en pied de page à la fenêtre de compose qui crée une réunion avec le Le fournisseur configuré de l'organisation et écrit son lien de jointure dans l'organisme Où que se trouve le caret. Distinct de la réunion-instanger à côté de celle-ci: qui joint un calendrier invitation avec un temps, les participants et les rappels, alors qu'il s'agit du one-click "Voici une pièce, venez chaque fois" qui n'a besoin que d'une URL en prose. L'attention est suivi à travers le flou le cliché provoquerait autrement, donc le les terres de liaison où le membre typait plutôt qu'en haut du message. L'étape de création et de linkify que le compositeur d'invitation avait déjà est maintenant partagée, donc il y a une définition de la façon dont une réunion devient un lien - Kamo's own /meet/join/zid- redirect, qui est sensible au fournisseur et signe les membres de Kamo à l'adresse suivante: Cliquez sur le temps.

  20. · kamo-internal

    Reconstruire les champs AcroForm du PDF à remplissage en tant que champs de Kamo natifs

    L'ouverture d'un PDF modifiable dans l'éditeur de documents lit désormais son widget AcroForm annotifie le document pdf.js et recrée chacun sous la forme d'un DesignField sur la même page, à la même position et à la même taille, avec le Kamo le plus proche correspondant type de champ. Sur une conception intacte, les champs sont placés automatiquement (un seul une étape d'annulation, avec une action d'annulation sur l'avis); sinon la boîte à outils offre un revoir le dialogue qui saute tout ce qui est déjà couvert par un champ placé. - app/lib/esign/acroform.ts: détection pure. Les copies par Widget sont converties par la fenêtre d'affichage de page donc page /Rotate est honorée. Cartographie structurelle Sig/Btn/Ch/Tx (boutons de poussée et widgets cachés tombés); les widgets de texte ont un Passage sémantique sur l'infobullition, le nom du champ et la légende imprimée à côté d'eux sur la page, donc "Borrower Signature" devient une boîte de signature et "Date de signature" une date. Les boutons radio gardent leurs cases individuelles et sont liés entre eux par l'intermédiaire d'un groupe partagé. - DesignField acquiert des options facultatives, en concordant le contrat d'option de terrain l'application signataire accepte déjà; le panneau des propriétés les édite maintenant, et peut également réaffecter un champ à un autre signataire. Vérifié par rapport à real pdf.js 4.10.38 analysant une véritable forme pdf-lib-construite, en ajouter à la suite de l'unité.

  21. · InitializerService

    Créer la colonne de recherche d'e-mail et son index inversé

    - Il n'a jamais existé. EmailService est propre V1-email-metadata-schema.sql le déclare, mais cette migration n'a jamais fonctionné -- le le tableau provient de l'entité de ce service scan, et SearchIndexEntity omet le champ parce qu'Hibernate ne peut pas cartographier TSVECTOR, donc ddl-auto ne pouvait pas l'ajouter. - a donc échoué avec SQLSTATE 42703 le chaque message, et parce que ce MISE À JOUR partage une transaction avec l'insert de rangée, l'insert est également enroulé. La table a toujours été vide et la recherche par courriel a n'a jamais donné de résultat.

  22. · kamo-internal

    Une carte de contact derrière chaque nom sur un message

    Chaque personne montrée dans une vue dise était une impasse. À To et Cc rendus en tant que displayNameFor(a).join(, ') - un mur de virgule de noms d'affichage sans adresse, non survol, pas d'actions. Trois choses n'allaient pas dans ce domaine. L'adresse était incupérable, et les noms d'affichage sont un texte d'en-tête contrôlé par l'attaquant, donc deux Les gens appelés Chris étaient indiscernables et copiant l'adresse de quelqu'un qui était CC'd signifiait ouvrir une réponse et inspecter la puce. Tout le l'organisation connaît déjà ce cas et les dossiers de collègue, les carnets d'adresses, avatars, présence en direct - se résout par adresse et aucun d'entre eux n'est arrivé à l'écran. Et un fil de quatorze fois qu'il était rendu unidirectionnel. Le survol d'un nom ouvre maintenant une carte. La plaque d'adresse est sa pièce maîtresse plutôt qu'un sous-titre gris, parce que l'adresse est ce que la carte existe à remettre: pleine largeur, mono, partie locale en encre et domaine plus léger, la plaque entière une copie contrôle qui balaye les messages s'accentue sur lui-même sur le succès, et toujours Sélectionnable pour tous ceux qui préféreraient traîner. Autour de lui, seules les rangées qui ont quelque chose en eux: titre du poste, employeur, département, numéros qui composent le softphone, l'extension d'un collègue, et leur heure locale avant de les appeler. Les collègues portent un point de présence vivante à partir de la présence et de la disponibilité existantes contextes. Les expéditeurs automatisés le disent, et une adresse sans réponse n'offre pas répondre la boîte aux lettres refuserait. Les récipiendaires réceptrices ont été répertoriées sur l'effondrement d'un compte. Les mécaniciens vivent dans l'utilisation de la carte, loin de la carte, car rien de tout cela n'est à propos des personnes: intention de vol stationnaire donc un point de passage d'un en-tête ne fait pas de Fire card, un délai de grâce proche afin que le chemin diagonal jusqu'à la carte ne la rejette pas, un carte ouverte à la fois, ré-mesure lorsque la vitre défile ou le record atterrit, et de vrais boutons pour que le clavier et le toucher le touchent le atteigne. Uniquement sur le clavier s'ouvre - agir sur la mise au clic ouvrirait la carte dans la même coche le clic le serrer, et la puce semble inerte à une souris. Les dossiers proviennent de correspondantsStore, mis à la clé par adresse et n'ont jamais fusionné objets de message: les deux énumèrent les sondages de vues toutes les trente secondes et remplacent leur un réseau de messages en gros, qui essuyer n'importe quoi s'y serait transporté deux fois par minute. Contrairement aux avatars, ils se résolvent laxiste - un en-tête entier est pré-comblé quand un message s'ouvre, et le vol stationnaire couvre tout ce qui a manqué - donc la carte est normalement déjà remplis quand il anime. FormatAgo se déplace hors de MemberItem donc la liste et la carte décrivent la même chose l'absence de la même manière.

  23. · EmailService

    Résoudre les personnes derrière les adresses sur un message

    Un en-tête de message connaît une adresse et quel que soit le nom d'affichage que l'expéditeur a choisi de mis à côté. L'organisation en sait déjà beaucoup plus - collègues, adresse livres, extensions, fuseaux horaires - et aucun d'entre eux n'est arrivé dans la boîte aux lettres. POST - répond à un lot d'adresses avec le Personne derrière chacun d'eux: collègue (titre du poste, département, prolongation, fuseau horaire et un membre qui déverrouille la présence et le chat), sauvant le contact (avec l'employeur, le titre et les nombres), ou un EXTERNAL explicite afin que l'appelant puisse mettre en cache la réponse au lieu de réutiliser chaque vol stationnaire. Séparer délibérément du critère d'évaluation de l'avatar plutôt que d'y être replié. Que l'une est en deux phases par nécessité - un échec complet peut signifier DNS plus quatre appels HTTP à tiers - et il s'agit d'une poignée de léguées locales, indexées, libellées comme suit : peut répondre complètement au premier appel. Le partage d'un point d'extrémité forcerait le la moitié synchrone pour hériter d'un contrat "demander à nouveau plus tard" qu'il n'a pas besoin. Cint-clé sur l'adresse nue et jamais sur le nom de l'affichage, qui est texte contrôlé par l'attaquant: un étranger peut mettre le leur au nom réel d'un collègue, Et ce bilan porte l'extension directe de ce collègue. Le normalisateur qui impose qui est maintenant partagé avec le critère d'évaluation de l'avatar (MailboxAddress), de sorte les deux ne peuvent pas dériver et manquer les entrées de cache de l'autre. L'organisation vient de la session, jamais la demande et le critère d'évaluation. répond "ce locataire détient-il un record pour cette adresse", qui est membre oracle si l'appelant choisit le locataire. Les Ids serialisent sous forme de chaînes: CockroachDB row ids passent MAX-SAFE-INTEGER, et EmailService n'a pas de planteur à longue corde mondiale parce que les messages uids sont longs la boîte aux lettres traite réellement comme des chiffres.

  24. · kamo-internal

    L'onglet Ressources est la bibliothèque de documents sur les droits de l'homme de l'orge.

    Remplace l'espace réservé aux ressources par DocManager lors de la collecte de documents de sa propre image-sypne.HR, imagerie-sources org-arg-ar-la-toi la manière dont le matériel de commercialisation est, et délibérément séparé de celui-ci: une commercialisation Les dépliants et un manuel de l'employé n'ont pas leur place dans une bibliothèque. Le type assoc est envoyé comme ORDINAL (13) de l'enum, et non son id (15). L'imagerie les backends le résolvent avec des valeurs()[assocType) et les deux divergent parce que le enum saute id 6; envoyer l'id écrirait dans le seau d'une autre collection, C'est ainsi que la surface de My Docs a autrefois expédié des documents qu'elle n'a pas pu lire en retour. HR-RESOURCE-ASSOC-TYPE porte ce raisonnement à côté de la constante. DocsService et ConversionService ont été reconstruits pour la nouvelle constante d'abord. Le frontend est la seule chose qui envoie 13, donc il atterrit en dernier.

  25. · kamo-shared-library

    Type d'estsoc HR pour la bibliothèque de ressources humaines

    L'onglet "Ressources" publie des manuels, des politiques, des formulaires et des références matériel pour l'ensemble de l'équipe, et aucun type d'assisoc n'existe: La propre zone de la personne, le seau de SYSTEM-WIDE est des modèles de signe électronique, et MATERIALS est la bibliothèque de commercialisation - un dépliant et un manuel à l'intention des employés n'ont pas leur place. Org-scoped comme MATERIALS, avec delete/overwrite/folders on parce que HR curate ceci à la main. Les types de doc sont autorisés mais facultatifs (isAllowDocType-faufs, isAllowDocTypeOpt-vérite), donc un organisme qui veut Handbook / Policy / Form les catégories peuvent les activer sans que tous les autres orgg soient forcés d'en déposer un. Appliqué en dernier, donc pas de changements ordinaux existants. Son ORDINAL a 13 ans alors que son id est 15 - l'enum saute l'id 6, et les appelants envoient l'ordininal, de sorte que les picotements d'essai 13 et MATÉRIAUX/CATALOG-SOURCE, de part et d'autre de celui-ci. Service de conversion et DocsService indexe l'enum par ordinal et doit être reconstruit avant que quoi que ce soit envoie 13, ou values()[13) lance sur leur tableau plus court.

  26. · kamo-internal

    Coque du module Ressources humaines à cinq onglets soutenus par l'itinéraire

    Ajout/h avec la comptabilité-page chrome dans sa forme soutenue par voie (le même /commercialisation déjà utilisée): une présentation possédant le héros du gradient et une onglet souligné bar, un index qui atterrit sur le premier onglet, et une page pour chacune Vue d'ensemble, présence, juridique et conformité, formation et ressources. Deux portes, les deux nécessaires. /settings/account?tab-apps rebondit la route à domicile lorsque l'application est éteinte, puisque Avec elle off /hr n'est pas un endroit qui existe pour l'orgge. Avec l'application allumée, le Les droits de serviceType.HRS sont à l'origine de 11: un nouveau composé hasAnyHrRight jointe la porte et chaque languette porte un Prédicat de groupe OU (la RH n'a pas une vision unique de la manière dont le marketing est le cas). Tablures le membre échoue est caché à la barre et refusé à l'entrée directe de l'URL. Enregistre «hr» dans le registre de la navigation au-dessus des paramètres, par défaut du primaire rail; la carte de lancement et la saisie de la palette de commande suivent du registre la qualité de membre. L'ordre du Greffe ne régit à lui seul que les membres en première gestion, ordre - un ids annexé jamais arrangés, de sorte que quiconque a jamais touché sa navigation aurait obtenu HR « sub-par. » fusiongeCanonicalOrder insérer maintenant ces ids à la position que le registre demande et l'utilisationHomeLayout utilise la même règle, donc Les engagements déclarés sont également prévus pour les membres existants et toutes les options futures. Les organes de l'onglet sont des espaces réservés: il n'y a pas de modèle de données RH nulle part dans le backend yet (pas d'employé, d'entité de traitement des états de paie, de formation ou de conformité SecurityService, APIService ou la bibliothèque partagée), donc chaque onglet se nomme lui-même et ce qu'il tiendra. Spéces dans les docs/superpuissances/spoirs.

  27. · kamo-internal

    Compléter l'onglet Communications

    Chaque sous-tablet conserve maintenant ses propres données, et Tous les liens entrelacent chaque canal par date. Notes maintient MediaStream, parce que les notes sont écrites ici - mais readOnlyChrome Charge les affordances sociales qu'un dossier client n'a pas d'utilité pour: le PUBLIC / Accesseur PRIVATE dans le compositeur et sur chaque billet, le menu d'édition/delete de l'auteur, et la ligne similaire / comment / partage ligne avec son thread de commentaires. Chat garde la vie Social ConversationView. Tous, appels, SMS et courriels rendent les nouveaux EmailEntry fait échouer un message à une ligne - expéditeur, sujet, mots d'ouverture et s'élargit en place. La correspondance d'un chef de file peut être diffusée à des centaines de messages. et les rendre à pleine hauteur rend l'onglet inutilisable. Le corps n'est pas fraisché jusqu'à l'ouverture de la rangée, parce que chaque lecture est un fournisseur en direct le voyage; il rend ensuite par les mêmes utilisations de SanitizedEmailRenderer/messages, Il n'y a donc pas de voie de seconde, moins vérifiée, pour le HTML non fiable. Fixé le long du chemin: l'élément de menu d'édition de PostCard appelé mancheMenuClose, donc il avait n'a jamais ouvert l'éditeur; et MediaStream a abandonné PostCard's onPostDeleted / sur Mise à jour entièrement, donc un poste supprimé ou édité est resté à l'écran dans son ancien Formulaire jusqu'à un rechargement complet. Code dur "Public"/"Private"/"Post" dans le compositeur utilisent maintenant les clés du dictionnaire qui existaient déjà.

  28. · SecurityService

    Calendrier de communication unifié API

    GET - retourne une page ordonnée par date les notes, les appels, les messages vocaux, les textes, les e-mails et les discussions; Trois sources sont fusionnées. Les appels, les messages vocaux, les textes et les courriels proviennent du Associations LEAD-COMMUNICATIONS; les notes et le chat sont lus directement à partir du Le flux médiatique et la session sociale de lead, parce que les deux sont déjà à clé de lance. les refléter aurait ajouté un problème de cohérence à double écriture et, sans back-fill, perte de chaque note et message de discussion qui existe déjà. La radiomessagerie est un jeu de clés, et non compensé. La compensation entre les sources fusionnées est une mauvaise page passée un: combien de lignes chaque source contribue varie, de sorte que "skip 25" ne débarque pas sur strictement plus vieux, donc chaque page coûte la même chose et rien n'est sauté ou répété même lorsque plusieurs entrées partagent un horodatage. L'autorisation reflète exactement le hayon en plomb et doit être une rubrique: en grande partie, la valeur de contact de l'adressage, plus le contenu échangé, donc un appelant sans VEW-LEAD-CONTACT-INFO-OTHERS sur le plomb de quelqu'un d'autre ne doit pas pouvoir lire ce critère d'évaluation ce que la vue de son plomb masquée retient. Les dessais sont vérifiés, pas seulement des succès. Le critère d'évaluation du corps du courrier électronique résout la boîte aux lettres de l'association plutôt que de l'appelant: le courrier principal est à l'échelle de l'ordre, de sorte que le message vit souvent dans un La boîte aux lettres de son collègue, et les UID ne sont uniques qu'à l'intérieur d'un dossier - un navigateur piloté par un navigateur Fetch retournerait silencieusement un message sans rapport de la boîte aux lettres du spectateur. MediaAssetUrls extrait les constructeurs d'avaristes/images d'URL qui étaient privés pour MediaStreamContrôleur, de sorte qu'un auteur de poste rend identique dans l'onglet Notes et l'onglet All.

  29. · DaemonService

    Conduire le balayage de l'association mail-to-lead

    Cocher de cinq minutes contre le point de terminaison d'appel interne d'EmailService, en miroir VoipGlobalSyncJob. L'horaire vit ici parce qu'EmailService gère plusieurs gousses et un haricot «Scheduled behe il y aurait toutes les répliques qui balayent toutes les boîte aux lettres à la fois. "DisallowConcurrentExecution plus temporisations HTTP finite: un balayage sur chaque la boîte aux lettres peut dépasser la coche, et sans le garde Quartz empilérait jusqu'à ce que chaque fil de travail assis à l'intérieur d'EmailService. Les temporisations sont importantes pour la même raison - avec le garde de la simultanéité en place, un appel suspendu indéfiniment empêcher le balayage de courir à nouveau jusqu'à ce que la nacelle redémarre.

  30. · EmailService

    Associer la correspondance de chef de file et fixer l'indexateur de poussée mort

    Ajoute la moitié du courrier de l'onglet T-AMM, plus l'ingestion dont il a besoin d'exister du tout. La plate-forme n'a pas de pression de courrier de travail: IMAP IDLE est codée en dur pour Dovecot, il y a n'est pas une notification de changement de graphique ou une surveillance Gmail, et MessageIndexer rejeté chaque notification qu'il a jamais reçue parce que l'éditeur IDLE a omis l'UID son garde uid-0 rejette - il a également résolu le membre de l'expéditeur plutôt par rapport au propriétaire de la boîte aux lettres. Les deux sont fixés ici, mais un crochet sur ce chemin seul serait n'a rien fait pour la plupart des locataires, donc l'association est motivée par un balayage sur chaque boîte aux lettres par l'intermédiaire de MailReader, qui est accosté par le fournisseur et l'agnostique par construction. Les pages de balayage sur un horodatage, pas un UID. Les UID ne sont monotones qu'à l'intérieur d'un IMAP UIDVALIDITY a une place en flèche; une marque à forte eau à encliquetage risque de faire taire une boîte aux lettres le retournement est libre car la liaison est idémpotente. CompanyAddressResolver met en œuvre la règle du propriétaire: ne jamais associer un message où l'adresse appariée du chef de file et tous les autres participants sont tous , autrement, ajouter l'adresse professionnelle d'un collègue à un chef de file exposent leur courrier interne. Il échoue FERMÉ: un inventaire qu'il ne pouvait pas charger répond "inconnus" et l'association est sautée, plutôt que de répondre "externe" et désactivant silencieusement le garde. - attrape un organisme au nom de la boîte aux lettres qui le tient. Le critère d'évaluation ordinaire résout le fournisseur pour l'appelant, et les UID sont uniques uniquement dans un dossier, donc l'objectif de l'UID d'un autre membre retourne un message non apparenté au lieu d'une erreur. L'autorisation vit dans SecurityService, qui résout la boîte aux lettres de l'association plutôt qu'à partir du navigateur. L'établissement de liens à l'heure de l'envoi a été essayé et supprimé: SMTP ne renvoie ni un message-ID. ni un UID envoyé, donc chaque courrier sortant à une avance s'est effondré sur une association sans localisateur à dilamer. Le balayage en est propriétaire.

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