Salta al contenuto
KAMOUniverse

Changelog

Cosa c'è di nuovo.

Ogni miglioramento alla piattaforma, come si spedisce.

  1. · MediaService

    Una conversazione raggiunge il telefono

    Un messaggio su una linea Exec2Exec ora va ai telefoni dei destinatari così come i loro console: il telefono del cliente quando KamoCRM risponde, ogni telefono del membro della scrivania quando un scrive il cliente. Guida l'ex presenza-gated CHAT MESSAGE push, deep-links to > (con il nome del cliente sulla copia della scrivania), e collassa per conversazione quindi una scoppio è una notifica, non dieci. Una spinta fallita è registrata e non ferma mai le cornici della console che sono già uscite.

  2. · kamo-internal

    Il controllo Exec2Exec di NavTop è la scrivania per un esecutivo KamoCRM

    Per un membro con Exec2Exec Access in piedi nell'organizzazione della piattaforma, il controllo conta ora i messaggi dai clienti che non hanno visto (METTA QUESTIONE) Chat > Exec2Exec invece della propria conversazione. I clienti non vedono nessun cambiamento. - interazioneCenterIntent apre il pannello a una scheda e un secchio. Il secchio viaggia come richiesta pendente il riquadro Chats onora quando Exec2Execec scheda appare, poiché tale scheda si unisce alla striscia solo dopo i diritti della piattaforma carico e un riquadro fresco sarebbe altrimenti atterrare sulla sua prima scheda per il bene. - L'Exec2Exec directory righe badge clienteUnreadCount, lo stesso server contare, quindi il distintivo e le righe che si apre su d'accordo; un collega non risponde più i distintivi di fila. - useExec2ExecDeskUnread chiede di nuovo quando l'istantanea non letta della scrivania si muove o la scheda torna, e mantiene l'ultimo numero su una domanda fallita.

  3. · MediaService

    Il numero di messaggi client della scrivania non ancora visto

    E' il momento giusto. restituisce quanti messaggi da clienti questo EXEC2EXEC ACCESS titolare non ha visto, attraverso ogni conversazione, e ogni fila di roster trasporta clienteUnreadCount. E'... la regola non letta della piattaforma si restringe a ciò che il cliente della conversazione ha detto: l'intera scrivania siede su ogni chat, quindi la risposta di un collega non è letta per il altri senza aspettare nessuno di loro. Una domanda alimenta entrambi E' il momento giusto. così il distintivo di NavTop e le righe del Centro Interazione sono d'accordo.

  4. · KlusterServices

    Dial 911 e 933 da ogni estensione, con un messaggio di posta elettronica MLTS

    Le estensioni non possono raggiungere il 911: nessun percorso in uscita corrisponde al 911 o al 933, quindi dall'interno cadde al cattivo numero e giocato "non può essere completato come comporre" senza mai inviare un INVITE. startup.sh ora trasporta la metà del piano di selezione: - 911 e 933 sono estensioni esatte nel contesto il cancello in uscita vive dentro. Un'estensione esatta supera ogni modello in il suo contesto, così il cancello non può catturarli, e saltano il [kamo-outbound-allowed] elenco: ogni estensione può comporre senza Prefisso. Ognuno va direttamente da-internal-addizionale, dove FreePBX's il proprio routing in uscita prende il sopravvento. - [kamo-e911-notify] corre prima che la chiamata sia rotta e cominci kamo e911 notify.py staccato, attraverso TrySystem (System() appende il canale up quando il suo comando non può eseguire), con ogni argomento ridotto a cifre di FILTER. - kamo e911 notify.py invia le caselle di posta dell'amministratore della piattaforma attraverso # Con il tempo, l'estensione e la sua # nome, il numero di chiamata e la posizione comunicata al centro 911. Si'. rifiuta qualsiasi destinatario al di fuori di kamocrm.com, riferisce un relè outage tre e registra ogni esito a... Il baccello il proprio postfix non viene utilizzato: viene relè via smtp.gmail.com e la sua coda è bloccato. Il notificante viene riscritto su ogni boot; il blocco dialplan viene allegato una volta sotto la sua stessa guardia, come il blocco dei partecipanti. La metà del routing è dati FreePBX, al di fuori di questo repo, ed è applicata su k1m1: percorso in uscita Emergency911 (emergency route=YES, modelli 911 e 933, baule 1 (il tronco Telnyx), prima in sequenza, override CID +19492989960) e dispositivi.emergency cid +19492989960 su tutte le 22 estensioni. freepbx/test/test e911.py (stdlib unittest) controlla che startup.sh parses come bash e come YAML, modelli Asterisk's estensione selezione per mostrare 911 e 933 bypassare il cancello mentre 10 cifre, 11 cifre e 011 numeri ancora lo raggiungono, perni il gancio di notifica a NoOp/TrySystem/Ritorno con argomenti filtrati, e guida il notificante contro un relè falso.

  5. · kamo-marketing

    Elenca il numero di telefono delle pagine in inglese solo

    mostraPhone(locale) in app/lib/phone.ts è la regola singola, attualmente Traduzione: PhoneLink non restituisce nulla altrove, che copre il intestazione, menu mobile e piè di pagina, dove il numero è da solo. TelefonoSolo avvolge i posizionamenti che portano più del numero — la scheda di contatto, e il "Dacci una chiamata:" i lead-in sulla striscia CTA casa, l'Enterprise carta dei prezzi e la pagina demo — così le loro parole e spaziatura andare con esso. L'Organizzazione JSON-LD aggiunge telefono all'org e ai suoi Punti di contatto alla stessa condizione, quindi nessun altro markup locale sostiene il numero.

  6. · kamo-marketing

    Lasciare il logo portare a casa, e elencare il numero di telefono in cui i visitatori decidono

    La voce Home dell'intestazione ha duplicato il logo, che già collega a /. È andato dal menu desktop e mobile; al suo posto il logo porta un hover/focus tooltip dicendo che va a casa (sinistra dalla homepage se stesso, dove non c'è un posto dove tornare). (949) 298-9960 è ora un collegamento tap-to-call: - intestazione, incentrata tra il nav e il selettore di lingua (xl e up; la riga lg non ha spazio per esso), e nel menu mobile con i CTA - piè di pagina, sotto le icone sociali - pagina di contatto, come carta Call Us intestando le opzioni di contatto - home CTA strip, Enterprise pricing card e demo page, accanto chiamate esistenti all'azione - Organizzazione JSON-LD, come telefono sul org e entrambi i ContactPoints Il numero vive una volta in app/lib/phone.ts; PhoneLink lo rende e report clicca attraverso la traccia dei dati come telefono-clicca con la sua posizione.

  7. · kamo-internal

    Una superficie a discesa verniciata a marchio per tutta la barra superiore

    Ogni discesa che si blocca da NavTop — gli otto menu di opzione (Mail, Docs, Chiama / Testo, Calcolatore, Supporto, Impostazioni, Linux Desktop, Giochi), la pillola di disponibilità e il raccoglitore di lingua — ora si apre in una superficie condivisa invece del suo popover bianco MUI. - Verniciato nel colore primario dell'organizzazione con etichette e icone bianche. Il suo bordo superiore siede a filo sul bordo inferiore del bar, nel colore del bar in quel punto (il gradiente si ferma ora a vivere navtop/menu/navTopSeam.ts e NavTop costruisce il suo sfondo da loro), con angoli superiori quadrati e un concavo uniscono entrambi i lati, quindi legge come la barra che raggiunge verso il basso piuttosto che un riquadro posto sopra la pagina. Un marchio troppo leggero per il testo bianco è oscurato nella sua tonalità solo fino a WCAG AA necessità (un soffitto di luminanza in matematica relativa-colore CSS); ogni altro marchio è disegnato come scelto. - Si apre sotto un topo di riposo, segue il puntatore lungo la barra — la superficie scivola e ridimensiona al menu successivo mentre il contenuto scorre nella direzione del viaggio — e si ripiega nel barra poco dopo il puntatore lascia sia il grilletto che il pannello. Un clic o un perno del rubinetto fino a quando una stampa esterna, Escape o una scelta; un rubinetto non concentra mai un campo di testo. - Tastiera: entrare / Spazio / ArrowDown aperto sulla prima fila, frecce camminare le righe, Casa / Fine, tipo-ahead, destra / sinistra aperto e chiudere i gruppi e passo al menu vicino, mani di fuga concentrati sul grilletto. - Uno evidenzia che scivola di fila in fila, gruppi che si aprono sotto la loro fila su un filo di guida, un anello singolo sui distintivi di conteggio, l'equilibrio Cheddar che conta su. Tutto spento sotto movimento ridotto. - Impostazioni ottiene una casella di ricerca che cerca all'interno dei suoi gruppi e segna la partita; Invio apre il Primo colpo. Il raccoglitore di lingua è una griglia a due colonne di tutte le 22 lingue, ricercabile per nome nativo, Nome o codice inglese. Impostazioni pin toggle e il portafoglio Cheddar girare bianco sul marchio e sono invariati nella rotaia. I fly-out ferroviari sono invariati — la rotaia già sbilancia aperta su hover. Quando si apre un menu, si passa e chiudi è una macchina di stato senza effetto (navtop/menu/hoverIntent.ts) con test propri. Verificato in Chrome reale contro i componenti reali (imbracatura di esbuild, fonti di dati accoppiato): 170 controlli misurati su 11 marche — tempistiche di hover, la cucitura a filo e gli angoli, entrambi concave si uniscono, testo bianco a 4.5:1 o meglio su ogni parte del pannello, inchiostro bianco in tutto, lo scivolare tra menu, la grazia di congedo, una diagonale attraverso un vicino non rubare il menu, click-to-pin, toccare, tastiera, entrambe le ricerche e movimento ridotto. 287 test nelle suite nav e navtop, tsc, e immagine-costruire le guardie contro l'attuale en.json del dizionario.

  8. · MediaService

    Sedere l'intera scrivania su ogni chat, mostrare chi c'è, chiudere i feed di chat

    - Affiliazione permanente: ogni esplicita porta EXEC2EXEC ACCESS siede su ogni Exec2Exec conversazione. Exec2ExecDeskReconciler sedili e sedili dal sovvenzioni per l'evento exec2exec.desk.changed del servizio di sicurezza, 5 minuti di esplorazione, avvio, e ogni volta che una chat è aperta o riempita; la scrivania è ri-letto per conversazione così una spazzata non può annullare una sovvenzione un altro pod appena applicato. - GET /chat/{id}/participants elenca i dirigenti KamoCRM su una chat (memberId, userId, nome, jobTitle). - Le linee di credito portano il mittentePhone (il top-level org's Phone (Main)) e senderPhoneExt (l'estensione VOIP abilitata, altrimenti la squadra-membro) per Personale KamoCRM. L'accoglienza è sempre firmata da Dio. - Roster righe in attesaDesk (il cliente ha parlato ultimo) per la console segnaletica. - Sicurezza: /topic/chat/incoming/{memberId} e /topic/chat/unread/{memberId} può ora essere sottoscritto solo da quel membro e mai inviato da un cliente. Entrambi non erano sorvegliati, quindi qualsiasi cliente firmato potrebbe seguire qualsiasi membro arrivi e non letto da id. - Il generico add/remove/leave/rinominare le rotte dei membri rifiuta Exec2Exec sessioni (409 MEMBERSHIP MANAGED): il riconciliatore possiede tale appartenenza. - E-mail offline: un messaggio del cliente invia la scrivania, una risposta del dirigente posta solo il cliente, invece di ogni esecutivo su tutto. - Back Fill saluta e posti nella transazione che apre una chat, quindi una la prima risposta del cliente non è mai marcata per la scrivania.

  9. · kamo-marketing

    Hand Google il segno verde-tile, perché elenca l'icona più grande che dichiariamo

    La ricerca mostra un'icona per sito e prende il più grande dichiarato, apple-touch-icon incluso, quindi le icone touch 180px (nostri e le Il tema è) ha superato tutto il resto. A 192px apple-touch-icon ora supera entrambi. I suoi pixel sono il segno verde-tile 96px raddoppiato esattamente, in modo che il downscale di Google restituisca l'originale. Tabs mantenere favicon.ico, iOS mantiene l'esatta partita 180 per la casa schermo, e nessun logo sulla pagina cambia. Sfogliatrice di nuove tessere che Voglio che l'icona più grande raccoglierà questo.

  10. · kamo-internal

    Mostra chi da KamoCRM è sulla chat, e come raggiungerli

    La finestra del cliente ora elenca i dirigenti KamoCRM sulla loro conversazione, rileggere quando qualcuno viene aggiunto o rimosso. La linea mostra solo NOME, con titoli su hover: "Name - Title" per persona ha eseguito la scrivania in un run-on che clipped dopo il primo esecutivo, quindi un cliente non poteva più vedere chi altro c'era — l'unica cosa che la striscia è per. Caricamento, vuoto e fallito sono disegnati a parte; "nessuno da KamoCRM è su questa chat" è qualcosa su cui un cliente agisce. La linea di attribuzione dell'esecutivo KamoCRM termina ora nella linea principale dell'org e nella loro — (949) 298-9960 x8080" — attraverso firmaPhone, invariato, in modo da stampare esattamente come e-mail La firma si'. Il separatore è " - " ovunque, per abbinare. Cornici di appartenenza arrivano con id: null, quindi sono gestiti prima del la guardia "no id, drop it" di trascrizione; dietro di essa sono stati silenziosamente scartati.

  11. · SecurityService

    Dì quando la scrivania cambia

    Concedere o revocare Exec2Exec Access pubblica ora exec2exec.desk.changed, quindi MediaService può mettere un esecutivo su ogni chat — o toglierli — come il toggle on the platform-admins pagina si muove, piuttosto che ogni volta che il suo spazzare successivo corre. Dopo l'impegno, non in linea: MediaService ridisegna l'intera scrivania dall' database e non si fida mai del payload, quindi una sovvenzione roll-back non può sedersi chiunque — ma un in linea pubblica le razze l'impegno, e una riconciliazione che legge prima si riconcilia con la vecchia scrivania. Il payload è per il log, non la logica. Pubblica quando il diritto è tenuto prima di E anche dopo: salvare un executive è il modo naturale per rimetterli in chat dopo un evento mancato.

  12. · kamo-shared-library

    Portare la linea telefonica dell'esecutivo su un messaggio

    ChatMessageDto guadagna mittentePhone e mittentePhoneExt, impostare solo quando il mittente è il personale KamoCRM: la linea principale della piattaforma org più l'estensione che raggiunge quella persona, come firma e-mail già lo stampa. Le copie relè da un consentlist, quindi un campo questa classe non dichiara raggiunge nessun browser — storia porterebbe il numero mentre ogni messaggio live è arrivato senza di esso. Il commento del ricercatore di borse di studio non dice più ai chiamanti è la risposta sbagliata. Per la scrivania Exec2Exec è ora esattamente quello giusto, deliberatamente: il il richiedente ha fatto il gioco sulla piattaforma-admins pagina il controllo unico sopra che siede sulle chat executive.

  13. · kamo-internal

    Stop a un centro di interazione pinned; tenere le finestre sotto ogni menu

    Due follow-up a 0c5ef994 (massimo accanto al nav). A PINNED Interaction Center ora toglie la sua larghezza dal massimizzato riquadro. Pinned, il pannello è lavorato a fianco dello schermo, quindi un massimizzato finestra e la sua linguetta fermarsi al bordo sinistro del pannello invece di correre sotto. Il pannello pubblica la sua larghezza su una variabile CSS mentre pinned E aperto (usoInteractionCenterReserve) e paneGeometria lo sottrae, il modo la variabile del binario funziona già; il pannello è disegnato alla stessa stringa, quindi i due non possono essere d'accordo. Non piegato, il pannello è ancora modale su un massello e la finestra mantiene la sua larghezza dietro di essa. Smontaggio, chiusura e smontaggio di tutti ritirare la riserva. La larghezza del navigatore misura la stanza anche il bordo del pannello. I menu non si aprono più dietro le finestre degli strumenti. Il banco z del negozio (tool-core, condiviso con mobile) si arrampica su ogni aperto, alzare e concentrarsi e non viene mai resettato; dipinto crudo, una lunga sessione ha portato finestre passato MUI 1300, e ogni menu, popover e dialogo nell'app poi aperto BEHIND loro — nel DOM, posizionato, invisibile. Il molo ora legge il contatore solo per ORDER e dipinge ogni finestra al suo rango in una piccola banda sopra 200 (windowStacking.ts), così l'impilamento del negozio deciso è tenuto e nessuna finestra mai raggiunge un menu' strato. L'ascensore del nav su un pannello massimizzato utilizza lo stesso livello dipinto, quindi rimane anche sotto i menu. Verified in Chrome reale: la finestra e la striscia fine al bordo del pannello pinned (890px del 1440), un pannello non piegato sovrapposizioni senza riflusso, e dopo 2000 click di messa a fuoco (il contatore passato 1300) un menu a livello predefinito di MUI dipinge la finestra.

  14. · kamo-internal

    Massimizzare accanto al nav, non sopra di esso

    Una finestra di strumento massimizzata utilizzata per prendere l'intero viewport. Il suo navigatore colonna e la sua striscia di linguetta sono stati tutti pinned a (0,0) al livello di impilamento del bacino, su entrambi i navs — quindi un membro che legge una finestra massimizzata potrebbe raggiungere no navigazione fino a quando non lo mettono via. Il pannello è ora tutto sotto NavTop e destra di NavPri. La finestra, la navigatore e la striscia iniziano al bordo della rotaia e sotto la barra, letto da le stesse due variabili CSS AuthedChrome compensa la casella di contenuto della pagina da (paneGeometry.ts), quindi una rotaia espansa sposta la pagina e il pannello insieme. Il navigatore e la striscia scivolano all'interno clipping slot, in modo che escono da dietro la ferrovia e la barra piuttosto che attraverso di loro, e tutti e tre seguono un slittamento ferroviario con il proprio lead-and-trail della finestra. Mentre una finestra è massimizzata, il nav deve anche agire su di esso: - Un'opzione che va a un PAGE annuncia nav:pagina prima, e ogni finestra ancora sullo schermo è messo via come hexhead — altrimenti la pagina si carica sotto il pannello. Fare clic sulla pagina che si è già in conteggi troppo: è chiedendo di vedere quella pagina. - Un'opzione che apre un TOOL WINDOW segna il suo strumento: aperto con l'origine: 'nav', e l'unico imbuto ogni passaggio aperto attraverso trasforma che in massimizzato: Vero. La nuova finestra prende il riquadro, il vecchio va a un hexhead attraverso lo scambio del negozio, e il navigatore e le schede seguono la nuova finestra — a il suo secchio, alla lista terminale, o lontano per uno strumento senza navigatore. Entrambi si applicano solo mentre una finestra contiene il pannello (la chiamata del membro). Con niente massimizzato un clic nav si comporta esattamente come prima. Le regole sono puri (navPaneRule.ts) e il nav annuncia solo (app/lib/navIntent.ts); ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** spinta scritto in una superficie di nav. Rivestito: opzioni e menu di navs, Impostazioni, la tavolozza di comando, il logo, KamoMobile, la pillola di piano, i collegamenti di NavTop e campana, il pulsante Exec2Exec, e le righe del Centro Interazione. Fallout fissato nello stesso cambiamento: - L'hover-peek della ferrovia e l'Interaction Center (panel e sfondo) sedevano z 26-30 sotto un riquadro a 201 e arrampicata, quindi una volta che il nav era raggiungibile essi ha aperto BEHIND. Gli strati del nav sono sollevati sopra il pannello da solo livello mentre uno è tenuto, mantenendo il loro ordine (navLayerZ, utilizzareMaximizedPaneZ). - La cucitura del navigatore ha calcolato la sua larghezza come x del puntatore, vero solo mentre il navigatore ha iniziato a 0. Misura dal bordo sinistro del navigatore ora, e cattura la larghezza a una parte del pannello piuttosto che lo schermo. - Chess e Hold'em hanno scelto il loro layout dalla finestra. larghezza interiore quando massimizzato — troppo largo dalla rotaia, e stallo su una rotaia. Si misurano i propri root (useMeasuredBox, spostato fino a strumenti/ da condividere); E' il momento giusto. La mantiene così.

  15. · kamo-shared-library

    Elenca i membri che detengono un diritto di piattaforma

    countHoldersOf ha risposto a quanti; la scrivania Exec2Exec ha bisogno di chi. Remi di sovvenzione da solo sono la risposta sbagliata a "chi lavora la scrivania" — il proprietario di alto livello detiene ogni piattaforma destra senza fila affatto — quindi questo è un braccio di quella risposta, e il chiamante aggiunge il proprietario e il controllo del lavoro.

  16. · kamo-internal

    Il canale esecutivo nella console

    Una linea diretta tra un dirigente del cliente e i dirigenti KamoCRM: la chat metà della finestra di supporto senza biglietto, nessun stato, nessuna valutazione e nessuna coda. L'inferno. La sua directory, perché la bozza di guardia risolve uno strumento file dalla propria cartella — e passa VACUOUSLY per uno strumento di sola chat, dal momento che area di testo del compositore vive in app/components/chat. La stretta guardia è quindi scritto a mano, non dedotto da una zecca verde. LINE ATTRIBUTION. Nome, organizzazione e titolo di lavoro ufficiale su una linea che ha usato per tenere un nome, e sui lati BOTH — il punto del canale è che lettera qualcuno stava scrivendo sotto, che si applica al membro di propria età messaggi da un'organizzazione diversa anche. Il lato di un messaggio è calcolato dall'USER del mittente al render e mai memorizzato; un lato memorizzato è quello che una volta fatto bolle atterrare sul lato sbagliato irreproducibilmente. La maggior parte dei dirigenti non ha lavoro titolo registrato, quindi due campi è la vista normale e non c'è dangling separatore. NAVTOP. Sinistra della campana, nel cromato fisso e deliberatamente fuori NAV REGISTRY — non c'è una bandiera "non mobile" in questo codebase, e stare fuori del Registro di sistema È come un'icona è reso incrollabile. Essa invia la propria conversazione esplicitamente: lo strumento è bloccato a un'istanza, e un propless aperto di uno strumento tappato è un raise, non una navigazione, quindi il pulsante altrimenti re-raise qualsiasi esecutivo il Centro Interazione era stato aperto per l'ultima volta. Il distintivo conta la conversazione dello spettatore, mai la scrivania totale — un operatore è un partito ad ogni conversazione che rispondono, e fare clic su un controllo personale non può liberare qualcun altro e' illeggibile. CENTER. Un settimo secchio, a destra dei membri del team, visibile solo ad un titolare di EXEC2EXEC ACCESS all'interno della piattaforma org. Elenca USERS, non sessioni — la maggior parte dei quali non ha mai scritto nulla — con le loro organizzazioni di proprietà abbreviato in "Acme +3", l'elenco completo in un tooltip, nell'attributo del titolo e in aria-label di fila, quindi è raggiungibile senza un hover. ALL BUCKETS è entrambi la striscia e la lista dei permessi salvati-preference, quindi un elenco visibile derivato si alimenta tutti e tre i lettori e un membro restaurato su una scheda che non possono più vedere è rimbalzato piuttosto che infilato su un valore Tabs senza scheda. Benvenuto. Il primo controllo scrivibile mai posto sulla piattaforma Generale scheda. Back Fill siede dietro una conferma e riporta ciò che ha fatto; è recintato EXEC2EXEC ACCESS piuttosto che il diritto della scheda, perché premendo scrive messaggio nelle conversazioni della gente.

  17. · SecurityService

    Conservare il messaggio di benvenuto

    Il saluto che la piattaforma invia prima su Exec2Exec, sulla piattaforma config singleton dove ogni altra impostazione a livello di piattaforma già vive. Due nuovi endpoint piuttosto che due chiavi in più su /system-config, e questo è il tutto il punto del cambiamento: il GET del singleton non ha nessun filtro per campo affatto — rifiutoNon autorizzato I campi governano solo la scrittura — così ammettendo PLATFORM GENERAL alla sua qualsiasi porta porterebbe ogni operatore generale l'URL di base KamoPBX, master account id, nome account, utente amministratore, endpoint WSS e realm, più il modello di estrazione id. Un campo di testo che hanno diritto, in cambio per le altre due schede. Risparmi di vuoto come null: non configurato e configurato-to-nothing sono gli stessi istruzione, e Back Fill è un no-op in quello stato. Il diritto stesso è applicato in MediaService, dove le conversazioni sono, quindi PlatformRightCoverageTest lo registra sotto ENFORCED ELSEWHERE con il file che tiene il cancello.

  18. · MediaService

    Servire il canale esecutivo

    Una conversazione con la sua regola di pubblico e senza macchine per biglietti, seguendo La forma di SystemBug: il proprio pacchetto, il proprio controller, la propria visibilità e MediaSession/MediaObj riutilizzato per tutto il sotto. Niente doveva essere soppresso dalla coda di supporto perché una chat con nessuna riga di biglietti mai entra. L'ammissibilità (Exec2ExecEligibility) è un semplice membro dell'orgine di alto livello O del proprietario di qualsiasi org sono firmati in — e "proprietario" è due fatti, non uno: il TeamMember bandiera e orgs.user id owner, perché la piattaforma è propria di proprietà senza il suo proprietario necessariamente portare la bandiera. La piattaforma destra cancelli solo il lato KamoCRM, e canOperate passa attraverso SessionPlatformFacts, mai AuthHelper.hasRight, che una bandiera GD nuda bypassa. Ogni messaggio porta nome, org e titolo di lavoro ufficiale, risolto dal vivo membro dell'autore — i membri sono UNIQUE(ORG ID, USER ID), in modo che id già nomi, permanentemente, da quale organizzazione qualcuno stava scrivendo. Niente istantanee sulla riga. Un semplice membro non ha alcun titolo di lavoro, che è il caso normale per esattamente la popolazione che questo serve, quindi la linea si degrada a due campi piuttosto che seguire un separatore. Una conversazione, due indirizzi (chat id e session guid), perché il browser detiene la guida — è il progetto di chiave del compositore, la chiave non letta e il STOMP argomento — mentre la riga è keyed da id. Entrambi si risolvono alla stessa riga; né è per essere legato via. Annunciando un messaggio fan su tutti e tre i frame, non solo l'argomento di sessione: un argomento solo una finestra montata abbona a è come un distintivo non riesce a muoversi fino a quando un Ricarica pagina. L'autore di benvenuto non è deliberatamente unito alla sessione — il membro della piattaforma SYSTEM è una persona firmata reale, e unirsi a loro messo ogni conversazione sull'implementazione nell'istantanea di quell'uomo. Una seconda riga di appartenenza per lo stesso utente porta il loro puntatore di lettura esistente Passo. La regola non letta è per MEMBER e questa caratteristica è l'unico posto uno USER tiene diversi, quindi un puntatore fresco ha contato tutto quello che avevano scritto dal loro prima organizzazione non letta contro se stessi. L'ammissibilità è più ampia del saluto di proposito: un org proprietario ottiene canale, ma il messaggio di benvenuto è indirizzato, come specificato, a kamocrm membri normali. DDL è a mano (ddl-auto: nessuno, InitializerService non sfruttato) e già E' il record.

  19. · kamo-shared-library

    Fondazione del canale esecutivo

    Una conversazione in piedi tra un dirigente del cliente e il KamoCRM Presidente. — La discussione è chiusa. seguire qualcuno che possiede quattro organizzazioni da cui sono firmati in, mentre ogni partito è ancora memorizzato come membro id così ogni messaggio registra da cui l'autore l'ha scritto. - MediaSessionType.EXEC2EXEC(5) — allegato, mai inserito; la colonna è @Enumerated (ORDINAL). Non sagomato come SUPPORT TICKET: nessun stato, nessuna coda, no incarico, niente che chiude. - **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** restituisce ordinale(). Porta chi ANSWERS la scrivania, mai chi ha diritto a uno; conflating i due avrebbe consegnato ogni esecutivo la scrivania. - Exec2ExecChat, un satellite sulla spina dorsale MediaSession il modo in cui SystemBug è, con UNIQUE su USER ID: "c'è solo una chat Exec2Exec" è un database fatto piuttosto che una convenzione, che è ciò che regola la corsa tra Pulsante NavTop e l'auto-aprire la stessa chat su un accesso. - ChatMessageDto guadagna Non e' vero. La staffa copie da una lista dei permessi, quindi un campo che non dichiara non raggiunge nessun browser tutti — la storia avrebbe letto correttamente mentre i messaggi dal vivo mostravano un nome nudo. - No, no. il saluto che la piattaforma invia prima. - trovareChatMembershipsByMemberId nomi EXEC2EXEC. Quella domanda è un ALLOWLIST, e lasciare il tipo fuori di esso è l'intero motivo per cui una conversazione sociale potrebbe una volta mai mostrare un conteggio non letto ovunque.

  20. · kamo-signer-monorepo

    La carta da parati di org dietro ogni pagina, e copia bianca su di esso

    kamo-sign era l'unica superficie bianca-labelled ancora dipingere un grigio piatto. Ora suona il invitare la fotografia di sfondo dell'organizzazione il modo kamo-login, kamo-register, la console E KamoMeet lo fa già. `backgroundImageCount` → « <themeBase>/img/bg/{n}.webp`, `backgroundOrder` onorato, una dimora di 8 s con un crossfade di 1.2 s che si ferma sotto la preferenza-ridotta-mozione, 404s caduto, e l'org è primario sopra di esso al 6%. `OrgBackground` vive in @kamo/theme, accanto al resto della convenzione a tema-asset, così il signer ha una copia piuttosto che la quinta mano-rolled uno. Risolve la slitta sul passaggio OGNI e re-probes su KAMO THEME REAPPLY: il layout monta prima che qualsiasi token sia stato convalidato, quindi il mittente è sconosciuto a prima vernice e conosciuto solo una volta che la sessione atterra. **Non rende affatto nulla quando l'org non ha sfondi**, e tutto ciò che risponde ad esso è gated su quello stesso fatto tramite `useOrgWallpaper()`. Copia bianca su `--background` — che su un l'inquilino a tema è #ffffffffff — sarebbe invisibile, quindi questo non deve mai essere un colore incondizionato. Montate a quattro radici, mai dentro uno schermo: le fasi sono avvolte in un `motion.div` che anima `y`, e un antenato trasformato è un blocco contenente, quindi un `posizione: strato fisso` dentro uno scivola con la transizione invece di stare ancora dietro di esso. - **Una tinta del 6% è una tinta, non uno scrim. Copia del corpo bianco sulla carta da parati di `crm` — una giungla illuminata dal sole — misure 1,6:1 con il lavaggio da solo, e la pagina di kamo-login `rgba(2,0,36,0.2)→0.05` solo raggiunge ~2:1; si allontana con questo perché ogni parola che mostra siede all'interno di una carta ghiacciata. Lo schermo di completamento non ha carta, quindi l'oscuramento è un radiale centrale sotto il lineare gradiente, sintonizzato dal campionamento dei pixel resi. Misurato contro entrambi i veri inquilini, ogni linea Ora sgombera AA: 8.5:1 per la voce, 5.5:1 per il piè di pagina, peggiore caso 5.5:1. - **La schermata di completamento va bianca** — la voce e l'indicazione di download con le tre linee riferito, dal momento che condividono una superficie e mezzo fix legge come un bug. - **Il logo è qualsiasi colore che l'inquilino ha scelto.** `crm` è verde quasi nero, invisibile su un fotografare sotto uno scrim. ThemeLogo prende un `overlayColor` e maschera l'opera d'arte ad un silhouette, lo stesso meccanismo kamo-login e KamoMeet usano per il logo-overlay dell'org impostazione; il signer passa #ffffff esattamente quando una carta da parati è su. - **La scheda "message from" della schermata di benvenuto è stata un lavaggio del 4% su "trasparente"** — sul piatto sfondo la tinta quasi bianca, sopra una fotografia 96% fotografia, con una citazione scura dentro. Si mescola in #fff su una carta da parati invece. - **La pagina citazione pubblica** lo ottiene anche, stagnato dal proprio `-quote-primario` e nascosto in `@media print` — ciò che i file del cliente rimangono carta bianca. Il suo alias è letto fuori dal `/pubblico/ilias>/` segmento dell'URL della lettera che `QuoteMapper.themeAsset` già costruisce, piuttosto che aggiungere un campo a `PublicBranding` e riscattare due servizi Java per un foglio di stile. La regola di stampa ripete il selettore `html[data-kamo-wallpaper]` a pieno specificità: una query mediatica non aggiunge nessuno dei propri, quindi un bare `.quote-page` ci perderebbe a la regola dello schermo e stampare una pagina trasparente. Verificato in un browser contro `crm` e `sign-pink` fuori del secchio tema dal vivo — benvenuto, consenso, spazio di lavoro documento e completamento — con contrasto misurato da pixel resi piuttosto che guardata.

  21. · kamo-internal

    Finire la pagina di categoria — larghezza, una freccia posteriore, parole reali

    I tre dirigenti sono stati scritti per sedersi all'interno di una scheda nidificata di una scheda. Come pagina di avevano bisogno dello spazio che ora hanno. - La configurazione si è tappata a 560px, quindi due interruttori si sono seduti in una colonna con la maggior parte di un ampio schermo vuoto accanto a loro. Sono una griglia che riempie la larghezza e ripiega ad una colonna sotto 360px ciascuno. - Due frecce posteriori puntate allo stesso posto — una nel pangrattato, una accanto il titolo. Il sentiero si legge ora come un sentiero; la freccia è l'unico "back". - Doc Types è la scheda che la maggior parte delle organizzazioni atterra con nulla in esso, e la sua stato vuoto, il suo toggle tooltips e i suoi cinque messaggi di errore non sono stati traslati Inglese. Lo stato vuoto ha anche detto al lettore di fare clic su un pulsante già su schermo; dice quello che un tipo di documento è per invece. - Due pulsanti urlavano nella maiuscola predefinita di MUI. Caricamento delle categorie non imposta più stato sincronizzato all'interno dell'effetto — l'effetto React Compiler regole rifiutano che come un rendering a cascata, e il retry ora urta un token dal click invece. La fetch si annulla quando è lì.

  22. · kamo-internal

    Le categorie sono un tavolo, e ognuno si apre come una propria pagina

    /settings/features/docs ha portato otto schede: Generale, poi sette che ogni montato gli stessi tre manager contro un ordinale diverso. Sette copie di uno schermo, e quattro di loro stavano modificando la cosa sbagliata. Gli ordinali sono stati scritti quando ImageAssocType era lunga sei costanti. Finanziamenti costanti e dando loro ids espliciti spostato CALL RECORDING da 3 a 7, e pagina non aveva modo di notare: la scheda etichettata "Call Recordings" era stata la modifica MY DOCS, "I miei documenti" MEET RECORDING, "Meet Recordings" SYSTEM WIDE, VM RECORDING "System-Wide" e CALL RECORDING non era raggiungibile. Niente è fallito, perché un ordinale è sempre una categoria valida. Nel frattempo le categorie che erano mai dato una scheda ha tenuto il lavoro effettivo — questa organizzazione trentasei tipi doc tutti siedono su LOAN, che la pagina non poteva aprire affatto. Quindi la pagina è due schede ora. Generale dice che cosa è la gestione dei documenti; Categorie è una tabella di ogni categoria che l'ORGANIZZAZIONE può configurare, servita da DocsService dall'enum stesso, con cartelle, tipi doc, tipi definiti, ordini impilanti e documenti memorizzati accanto a ciascuno. Una riga si apre come propria pagina sotto Non e' vero. il modo in cui un fornitore di telefonia fa — pancrumb torna alla tabella, la stessa intestazione gradiente, e Configurazione / Tipi Doc / Stacking Ordini come schede reali piuttosto che quelle grigie nidificate all'interno di un pannello. L'URL porta il nome enum, mai l'ordinale, quindi un link salvato oggi sopravvive la prossima costante qualcuno aggiunge. Piccole cose che questo risolve sul percorso passato: - La scheda Generale aveva reso "Descrizione", "Categories Heading" e "Categories Body" — segnaposto nessuno riempito. - Le impostazioni launchpad e il menu impostazioni elencati tutte e sette le schede morte. - Una categoria i cui tipi doc non possono più applicarsi (Materiale di Marzo) offre una scheda Doc Types; uno i cui tipi doc sono semplicemente spenti dice così, accanto all'interruttore, piuttosto che lasciare che qualcuno definisca i tipi che non fanno nulla. - AssocTypeSettings ha tenuto la vecchia barra di linguetta nidificata e non ha ancora chiamanti.

  23. · DocsService

    Servire le categorie del documento dall'enum che le definisce

    La pagina delle impostazioni dei documenti ha nominato le proprie categorie e ha inviato l'ordinazione che credeva ciascuno aveva. Questi ordinali sono stati scritti quando ImageAssocType era sei costanti a lungo; a seconda delle costanti e dando loro id espliciti spostati CALL RECORDING da ordinale da 3 a 7, e la pagina non ha mai notato. La scheda etichettata "Call Recordings" aveva modificato MY DOCS, "I miei documenti" stava modificando MEET RECORDING, "Meet Recordings" stava modificando SYSTEM WIDE, "System-Wide" stava modificando VM RECORDING, e CALL RECORDING non era raggiungibile. Niente è fallito, perché un ordinale è sempre una categoria valida — solo non quella che intendevi. E' il momento giusto. risposte con la lista l'enum stesso definisce, quindi l'ordinale e il nome lasciano sempre qui insieme e un chiamante non deve nemmeno indovinare. Una categoria si qualifica quando le cartelle o i tipi doc sono su o organizzativo - precisamente "c'è qualcosa qui da impostare", che cade le associazioni che esistono solo come idraulico (uno screenshot del bug, un'immagine foto frame, un curriculum su un'applicazione di lavoro). Ogni riga porta anche i conti della tabella delle impostazioni mostra: tipi doc definiti e ordini attivi, impilanti e documenti memorizzati. Tre letture su scala org raggruppate in memoria piuttosto che una query per categoria, quindi una richiesta riempie l'intera tabella dove la pagina precedentemente aveva bisogno di trentanove.

  24. · kamo-signer-monorepo

    Un trigger compatto per il menu di copia firmata

    L'elenco delle buste del mittente e qualsiasi tabella dei pacchetti assegnati hanno una riga, non una slot eroe, e la etichettato pillola non si adatta. `iconOnly` dà al menu SAME un'icona di download nuda da aprire. L'alternativa era un bespoke download a singolo file in ogni spazio stretto, che è come "scaricare copia firmata" è venuto a significare tre cose diverse su tre schermi in primo luogo.

  25. · kamo-signer-monorepo

    Il § 7001(c) la divulgazione delle navi con il codice, in ventidue lingue

    `@kamo/esign-core` ora trasporta la divulgazione del consumatore stesso — sei clausole, ogni lingua segnaletica di prodotto in, e `consentDisclosure(locale, marca)` per riempire il nome del mittente in. Era dentro dizionario kamo-signer; appartiene qui per due ragioni. Viene visualizzato su superfici TWO e un firmatario che segue un link e-mail deve essere d'accordo con le stesse parole di un membro firmando lo stesso documento dall'interno della piattaforma. Ed è VERSIONE: `CONSENT DISCLOSURE VERSION` è scritto sulla riga del destinatario al momento del consenso e stampata sul certificato di completamento, così «hanno accettato la divulgazione» nomina un testo specifico — che non può fare se un canale di traduzione può rivedere le parole senza che nessuno urti la versione. Cambiare la formulazione è quindi una versione urto qui E in ESigService EsignCertificateService. I vecchi certificati continuano a nominare la vecchia versione, che è il punto di avere uno. La fase di pubblicazione ora accetta sia le credenziali che il registro prende. NPM PUBLISH TOKEN esce come token del portatore, che è ciò che usa kamo-js e che cosa eseguire 12016 fallito per la voglia — che il segreto esiste su kamo-js e non su questo repo. GIT CLONE TOKEN, che questo repo ha, è un utente Forgejo token; il registro dei pacchetti accetta quelli solo come auth BASIC, e risponde a un nudo 401 quando uno è inviato come portatore, con nulla dire che lo schema era il problema. Prima prova il portatore, cade torna alla base, e dimostra le credenziali con `npm whoami` prima di costruire nulla — quindi un le credenziali che non possono pubblicare dice così invece di fallire tre passi dopo all'interno `pnpm pubblicare`.

  26. · ESigService

    Un vero Certificato di Complezione, e le tre copie di un record firmato

    Quello che la pipeline appiattita era una pagina per firma che portava sette linee: nome, e-mail, id membro, timestamp, metodo di cattura, IP, agente utente. Nessun routing, nessun record di consenso, nessun consegna o visualizzare la timeline, nessun hash firmato-documento, nessun numero di pagina — quindi un lettore non poteva dire se lo tenevano tutti — ed esisteva solo INSIDE il PDF eseguito, dove un partito che voleva che le prove da solo non potessero arrivarci. `EsignCertificateRenderer` estrae il certificato: la busta e entrambe le impronte, le parti in ordine di routing, e poi per partito l'intera storia — il ruolo, l'ordine di firma, lo stato, HOW erano autenticato, la linea temporale da invito alla firma, IP, dispositivo, metodo di cattura, e che consenso divulgativo accettato in quale lingua. Viene utilizzato in luoghi BOTH: la pipeline flatten aggiunge queste pagine al documento eseguito, e `EsignCertificateService` serve le stesse pagine come PDF indipendente. Un rendering di proposito — una seconda implementazione è un secondo insieme di audit dichiarazioni che possono non essere d'accordo con la prima, e l'unica cosa che un record di audit potrebbe mai fare è contraddice se stesso. Il certificato è REGENERATO, mai memorizzato. Ogni fatto su di esso è già durevole nel destinatario e righe di firma, quindi una copia memorizzata sarebbe solo una seconda cosa che può andare stallo; significa anche una busta firmata prima di oggi ottiene un certificato completo la prima volta che qualcuno chiede. ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** copia, il cruscotto del mittente e l'API interna — con `entrambi` come zip. `/signed-document ` soggiorni accanto a esso perché è già collegato da posta consegnata e serializzato in altri servizi. Due cose che i test catturati che sarebbero stati difetti dal vivo: - `Map.of` lancia NullPointerException su un VALUE nullo, e l'unica richiesta con un valore nullo è quello che branca esiste per: una busta che non è completa non ha eseguito PDF, quindi `?che=entrambi` su una busta in volo sarebbe stato un 500 invece di una zip che tiene la certificato. Si degrada a qualsiasi metà esiste ora — qualcuno inseguendo una firma stallata è esattamente chi ha bisogno del record di audit. - La zip è STORED piuttosto che deflato (entrambi i membri sono già compressi PDF) con le voci ordinati, così gli stessi input producono gli stessi byte e chi lo riceve può controllare. The test parses entrambi i membri come PDF piuttosto che contarli: una voce STORED con un CRC sbagliato che sembra ancora un file. (non ha spazi in esso, quindi un wrapper di sola parola lo esegue dal bordo), afferma un timestamp assente come un esplicite em dash piuttosto che omettere la linea — "Signed: —" e nessuna linea a tutti sono diversi dichiarazioni, e solo uno di loro è la prova — e francobolli "Page n di m" dopo il corpo, perché fino a quando il corpo non è finito nessuno sa che cosa m è. Consent ora porta il locale in cui è stato reso, quindi il record dice quale dei ventidue traduzioni del § 7001(c) divulgazione del firmatario effettivamente letto.

  27. · kamo-shared-library

    Registrare WHICH consenso divulgare un firmatario accettato, e in quale lingua

    `consentedAt` registra che qualcuno ha spuntato una scatola. 15 U.S.C. § 7001(c) è un elenco di cose specifiche un consumatore deve essere detto BEFORE consenso — il diritto di carta e qualsiasi tassa, come ritirare e che cosa costi loro, che cosa copre il consenso, come mantenere i loro dati di contatto attuali, e hardware e software necessari per leggere E RETAIN i record. Quella parola è tradotta in ventidue lingue e sarà rivisto, quindi un certificato prodotto dopo una revisione sarebbe altrimenti descrivere la divulgazione CURRENT mentre il firmatario aveva accettato una precedente, in un lingua il record non nomina. `consent disclosure version` e `consent locale` sono scritti da ESigService al momento del prima accettazione e mai sovrascritta — riapertura di un link di firma consenso re-posts, e ri-dating una vecchia accettazione a qualsiasi formulazione è corrente è l'unica cosa che queste colonne esistono per prevenire. DDL applicato a mano sul cluster live (ddl-auto è `none` ovunque): ALTER TABLE esign envelope recipients ADD COLUMN IF NOT EXISTS consent disclosure version varchar(32); ALTER TABLE esign envelope recipients ADD COLUMN IF NON ESISTI consenso locale varchar(16); Entrambi sono nullable, e le righe che hanno acconsentito prima che esistessero lette come "non registrate" sul certificato piuttosto che essere dato una versione che non hanno mai visto.

  28. · kamo-signer-monorepo

    Una superficie di firma per entrambe le applicazioni, e l'etichetta bianca finalmente vernici

    La firma dell'UI esisteva due volte — qui, e accoppiato a mano nella procedura di esecuzione legale del kamo-internal — e i due si erano allontanati in entrambe le direzioni. `@kamo/esign-core`, `@kamo/esign-ui` e `@kamo/doc-render` sono i pacchetti pubblicati ora, costruiti e spinti al registro Forgejo da questo Il repo's CI, e il kamo-internal li consuma invece della sua forchetta. La fusione ha preso la metà migliore ciascuno: negozio di kamo-internal (valida del formato, stoccaggio custodito su `localStorage` piuttosto che su le ragioni DELEGATE e NOT YET). I componenti prendono le loro stringhe come PROPS — le due applicazioni traducono su due dizionari diversi, e un componente che sceglie le proprie chiavi può solo vivere in uno. FOUR difetti, e uno di loro ha causato due degli altri: - **Tutti i pulsanti MUI contenuti in questa app erano trasparenti.** `AppProviders` superato `enableCsssLayer: true`, così tutto il CSS MUI è atterrato in `@layer mui` — e il preflight di Tailwind, caricato unlayered da `@tailwind base`, batte stratificato CSS outright qualunque la specificità. Misura: `.MuiButton-containedPrimary` calcolato `background-color: rgba(0,0,0,0)` con `color: rgba(0,0,0,0,0.87)`. Quindi "Agree & continuare" reso come testo semplice, e "Cancel" e "Adopt & sign" seduto accanto all'altro come due rune di testo grigio lettura come una frase — che è esattamente come è stato segnalato. Preflight's `p { margin: 0 }` stava battendo il `mb` della carta di consenso per la stessa ragione, ed è per questo che tutto in quella pagina è andato insieme. kamo-internal ha sempre montato la sua cache di emozione non stratificato; abbinandolo risolve tutto in una volta. - **Il logo era un'immagine rotta.** `ThemeLogo` cadde indietro a `/img/logo-full.svg`, che questa applicazione fa non servire, e dipinto il glifo di pagina strappato del browser nel posto del mittente. Ora cammina lista di estensione per varianti BOTH (un org il cui segno è un .png aveva `.svg` richiesto, 404ed, and fermo lì — `sign-pink` è esattamente quello org), e quando nulla risolve disegna l'org's nome breve come un wordmark, o niente affatto prima che un token ha nominato un'organizzazione. - **Il favicon e il titolo della scheda non sono mai stati impostati - né il marchio di org CSS.** "DynamicMetaLoader" computed `const slug = orgSlug || getThemeSlug()` ONCE, nel corpo di effetto, prima che qualsiasi token avesse è stato convalidato: `'`. L'ascoltatore `KAMO THEME REAPPLY` ha sollevato il momento in cui l'org invitante era conosciuto, re-ran una chiusura su quella stessa `''` e tornato alla guardia. config.json era quindi Non si e' mai preso la via della firma. Risolto per applicare ora, faviconi REPLACE piuttosto che Append, e il titolo è "Sign - {Org Short Name}" come richiesto. Verificato contro un vero inquilino: `Sign - Sign Pink`, quattro favicons org, il segno .png, e `--color-primary: #452d4e` raggiungendo il schede, caselle di controllo e pulsanti — la tavolozza MUI non può contenere un `var()`, quindi ogni marca-portante il componente lo indica esplicitamente. - **Il raccoglitore di lingua era un globo su una lista di endoni**, quindi un firmatario che non legge nessuno dei Gli script latini non avevano nulla a cui puntare. Bandiere e nomi nativi ora, la stessa tabella e la stessa emoji font stack come NavTop di kamo-internal. Appare anche sulle schermate di benvenuto e consenso: utilizzato per arrivare solo con il TopBar, dopo che il firmatario aveva già letto una divulgazione inglese. I download offrono tutte e tre le copie ovunque sia stata offerta: il documento eseguito, il certificato di completamento, o entrambi zippati (`/api/sign/download?what=`). Il certificato è la metà della registrare che attribuisce una firma a una persona; consegna solo le mani PDF sopra la metà che non prova nulla. Il cancello di consenso ora trasporta le sei clausole 15 U.S.C. § 7001(c) richiede che un consumatore venga mostrato PRIMA di acconsentire, e il locale è stato reso in uscite con il consenso in modo che il certificato può indicare quale delle ventidue traduzioni è stato effettivamente letto.

  29. · kamo-signer-monorepo

    Render il campo Data di firma, e fare leggereSolo significa qualcosa

    Tre cambiamenti, di cui solo il primo è nuovo lavoro. **`signature date`** è un campo ESigService riempie all'istante i segni del firmatario — mai il browser, il cui orologio è impostatotable e che è l'unico valore che un partito ha incentivo a perdere uno strumento legale. Quindi non c'è controllo per esso: signer vede la data in cui WILL trasporta, bloccato, formattato dal locale della sessione e fuso orario, che sono gli stessi due valori con cui il server formatta la data timbrata. L'anteprima e il documento eseguito non possono essere in disaccordo. Era solo decorativo qui. È nella forma del design, è un interruttore in Il pannello delle proprietà di kamo-internal e il FieldCompletion di ESigService lo onora — e InteractiveField non l'ha mai guardato. Un campo contrassegnato in sola lettura reso come un normale inserire il firmatario potrebbe digitare liberamente, e dal momento che la necessità-ness non è applicata su un campo di sola lettura, quel valore di tipo gratuito era l'unico valore sulla pagina niente controllato prima che fosse stampato sul documento. **signStore ha contato campi di sola lettura come richiesto**, quindi una busta che trasportava uno potrebbe su una scatola senza controllo in esso, mentre il SERVER considerato la stessa presentazione completo e avrebbe accettato. il porto di kamo-internal di questo file aveva già diverged per risolvere esattamente questo; i due concordano di nuovo, ed entrambi ora corrispondono FieldCompletion.

  30. · kamo-internal

    Un campo Data di firma, e un invio che ammette quando nulla è stato e-mail

    **"Sent" non era la stessa cosa di "delivered", e la finestra di dialogo non lo disse mai.** ESigService ha scartato il risultato di ogni e-mail di invito, quindi un invio la cui posta era ha rifiutato ancora mostrato "Documento inviato per la firma" — l'esatto fallimento riportato oggi, dove un destinatario non è mai stato detto che un documento stava aspettando. La finestra di dialogo ora legge cosa inviare effettivamente segnalato e, quando un invito non è partito, mette un avviso su che STAYS up, nomina l'indirizzo, e porta il pulsante di risentimento stesso piuttosto che inviare il mittente fuori per trovare la riga su un'altra scheda. Signature Date. Un nuovo strumento in Strumenti di firma. Il firmatario non è mostrato alcun controllo per esso: il server scrive la data all'istante che firmano, nel loro fuso orario e il locale dell'organizzazione, quindi quello che il PDF eseguito dice non può essere la firma orologio del browser. Il progettista lo mostra bloccato, non offre richiesto / solo lettura /validazione impostazioni per esso (sono domande su un input che non esiste), e signer vede la data in cui porta WILL — formattato dal locale e dalla zona della sessione così l'anteprima e il documento concordano. Tre cose si sono rivelate che erano già rotte: Era solo decorativo in entrambi gli UI firmatari. La bandiera è nella forma del design, è un interruttore nel pannello delle proprietà e ESigService lo onora — e né InteractiveField lo ha mai guardato, quindi un campo "solo lettura" reso come un normale inserire il firmatario potrebbe digitare liberamente. Perché niente fa rispettare la necessità-ness su un campo di sola lettura, quel valore di tipo gratuito era l'unico valore sulla pagina niente controllato prima che fosse stampato sul documento. - **Kamo-signer's signStore ha contato i campi di sola lettura come richiesto**, quindi un pacchetto portare uno non potrebbe mai essere finito — Finitura rimasta disabilitata e il "campo necessario" presentazione completa. il porto di kamo-internal aveva già fissato questo; i due ora concordano con l'altro e con FieldCompletion. **Niente ha tenuto insieme le tre copie del vocabolario di campo.** Due di loro dicono " VERBATIM PORTATO, non divergere" nelle loro intestazioni e nulla lo ha imposto; un tipo aggiunto a uno solo rende come input di testo nudo ovunque altro, silenziosamente, perché ogni renderer ha un ramo predefinito. Ora c'e' una busta. La finestra di dialogo di invio etichetta anche ogni riga del destinatario con lo slot del firmatario a cui si lega, e preriempisce una slot il modello già pin a qualcuno. Il legame è di POSIZIONE, e il personale non ha mai visto le slot affatto — così su un modello di due parti l'unica cosa che decide che ha ottenuto i blocchi del datore di lavoro e che ha ottenuto il dipendente era il nome che è accaduto digitato prima, con nulla sullo schermo dicendo così.

Il tuo universo ti sta aspettando.

Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.

Gratis per sempre — nessuna carta di credito richiesta