Salta al contenuto
KAMOUniverse

Changelog

Cosa c'è di nuovo.

Ogni miglioramento alla piattaforma, come si spedisce.

  1. · kamo-internal

    La carta sulle citazioni di risposta, storie di mano, eventi di biglietto e autori di bug-thread

    Le ultime quattro superfici che hanno nominato un membro senza nulla da aprire, ora che MediaService invia gli ids (fa25989): - Citazioni di risposta: il nome dell'autore citato apre la loro carta, solo su hover (la citazione è il salto). Preso dal membro del genitore caricato id — @kamo/chat-core citazione non porta id — in collega chat; in un biglietto sulla regola il volto di una bolla segue (il lato dello spettatore, una volta i lati sono conosciuto, mai parole di un visitatore); in una casella sociale solo per i rappresentanti dell'organizzazione. Exec2Exec rimane chiaro: cross-org. - Hold'em storia della mano: il giocatore che ha agito (memberId). - Eventi biglietteria: il nome dell'attore è tagliato fuori dalla frase dell'evento (aroundMemberName) e si apre la loro carta quando il biglietto dice che sono sul lato dello spettatore (actorCard, isOwnSide). Il mondo scheda bug non passa alcuna regola, quindi i suoi eventi rimangono in chiaro. - Autori di Bug-thread: solo il nome di un collega apre la loro carta (memberOrgId === the reader's org); un membro di un'altra organizzazione, o uno privato, rimane un nome.

  2. · kamo-internal

    Mostrare JustCall URL di callback prima che le credenziali esistano

    Genera un server telefonico UUID quando JustCall è selezionato e mostra il URL webhook immediatamente. Lo stesso id viene inviato su creare così l'URL membro incollato a JustCall corrisponde ai registri del server Kamo.

  3. · VOIPService

    Pre-assegnare JustCall server telefonico id per URL di callback

    La nuova forma di telefono genera un UUID prima di creare in modo che il membro può incollare l'URL di callback webhook in JustCall durante la richiesta di credenziali API. Crea accetta che id per JUST CALL; la configurazione restituisce l'URL anche quando riga non esiste ancora.

  4. · VOIPService

    Serve JustCall URL di callback per la configurazione del server del telefono

    Aggiunge GET /api/voip/setup in modo che le impostazioni UI possono mostrare l'esatto per-instance webhook URL senza hardcoding l'host di distribuzione.

  5. · kamo-internal

    Mostrare JustCall webhook URL di callback sulla configurazione del nuovo telefono

    Supera l'URL per-instance callback sul nuovo telefono JustCall e schede di panoramica in modo che i membri sappiano cosa dare JustCall quando si configura API e webhooks. L'URL è recuperato dal server, mostrato con un copiare pulsante dopo creare, e spiegato sul modulo prima del telefono server id esiste.

  6. · kamo-marketing

    Utilizzare il logo PNG completo che galleggia sopra il banner di anteprima.

    Sostituire il marchio di parola SVG con kamocrm-logo-full-v4 così il marchio si estende sopra la striscia rossa e sotto la barra nav.

  7. · kamo-internal

    La carta sulla storia della consegna è "chi"

    EmailService invia ora il membro dietro ogni cambiamento nella cronologia di opt-out di un indirizzo (attoreMemberId, testo). Su Impostazioni → Email → Consegnabilità un nome del collega là apre il loro scheda membro, come già fa sulla storia della scheda Opt Out. Il destinatario, il sistema e un collega il registro non poteva nominare le parole, e una voce senza un id legge esattamente come prima.

  8. · kamo-internal

    La carta sugli alias e-mail e l'accesso alla casella di posta condivisa

    EmailService invia ora gli id membri su alias e accesso alla casella di posta condivisa come testo. Come numeri JSON sono stati arrotondati oltre 2^53, quindi queste schede non corrispondono a nessuno sul roster e stampato il numero, e richiamare l'accesso di qualcuno ha mandato l'id arrotondato, che non ha rimosso nulla. "Assegnato a" di Aliases è ora il nome del membro con la loro carta. I chip di accesso di una casella di posta condivisa portano solo su hover, dal momento che ogni chip è un pulsante (le sue cancella). I chip membri della scheda Mailboxes e un assegnatore della casella di posta personale già letto ids EmailService invia come testo (memberId, assegnatoMember Id), così le loro carte erano già esatte.

  9. · MediaService

    Quotazioni, storie di mano, eventi di biglietti e filetti di bug inviano il id una scheda di membro ha bisogno

    Quattro superfici hanno mostrato un membro per nome senza id accanto a esso, quindi la scheda membro della console non aveva nulla a che fare Apri. Ogni ora invia l'id come TEXT accanto al nome che già invia (un 19-digit id letto come numero JSON è arrotondato in qualcun altro), e solo dove quel nome già raggiunge il chiamante. - Citazioni di risposta: wireFields aggiunge genitoreSenderMemberId accanto al genitoreSenderName. Le parole di un visitatore web-chat sono memorizzati sotto il membro del sistema di org, quindi il genitore di un visitatore non porta nessuno — sul invio dal vivo e su la storia si legge, sia che il visitatore abbia dato un nome. Un filetto di sistema-bug lo tiene con il nome, contro l'organizzazione del genitore. Le righe Exec2Exec lo portano anche; la console le mantiene chiare. - Hold'em: ogni linea della storia della mano (ActionView) porta il membroId, legge la stessa riga della mano come nome, quindi i due non possono nominare persone diverse. - Biglietti di supporto: ogni evento di sistema memorizza l'attoreMemberId accanto all'attoreName. Un evento che nomina il proprio attore (il handoff AI legge "AI Assistant", memorizzato sotto il membro del sistema) scende il id memorizzato. - bug di sistema: ogni riga di filetto porta il membroOrgId accanto al membroId, tenuto con esso. Il consiglio è globale, e l'org è come la console dice a un collega di un altro membro dell'organizzazione. Test: ChatReplyPreviewWireFieldsTest, SupportSystemEventActorTest (nuovo); SystemBugThreadRedactionTest (+4), HoldemTableViewTest (+1). Ognuno fallisce con il suo cambiamento ritornato. Suite completa 1005/1005 verde; pulita origine/principe era 994/994.

  10. · EmailService

    La cronologia di consegna nomina il membro dietro ogni cambiamento

    Impostazioni → Email → La consegna mostra la storia di opt-out di un indirizzo con chi ha fatto ogni cambiamento, ma HistoryView ha inviato solo il nome dell'attore, in modo che la pagina non poteva aprire la loro scheda di membro. Ogni voce ora porta l'attoreMemberId accanto all'attoreName: l'attore del libro principale member id come testo, esatto (un INT8 round come un numero JSON). La visibilità è invariata: gli stessi chiamanti MANAGE EMAIL OPT OUTS vedono già che Il nome del membro qui, e il loro ID sulla storia della scheda Opt Out. DeliveryabilityHistoryActorTest guida GET /indirizza e scrive la risposta con ObjectMapper dell'app: il cambiamento di un membro porta l'id come una stringa JSON, il destinatario non porta nessuno. fallisce senza il cambiamento.

  11. · kamo-internal

    La carta sulla lista di opt-out "ultimo cambiato da"

    EmailService invia ora il membro dietro l'ultima modifica di ogni indirizzo (ultimoActorMemberId, testo). The elenco taglia il loro nome dalla frase "ultimo cambiato da" (aroundMemberName) in modo da aprire il loro scheda membro — solo su hover, in quanto l'intera riga è il pulsante che seleziona l'indirizzo. Senza la linea legge esattamente come prima.

  12. · EmailService

    Una riga di opt-out porta il membro dietro il suo ultimo cambiamento

    L'elenco di opt-out chiamato che ha fatto l'ultimo cambiamento di ogni indirizzo (ultimoActorName) ma non chi sono, quindi la pagina delle impostazioni non poteva aprire la carta dei membri. Ogni riga ora porta l'ultimoAttoreMemberId accanto Il nome — letto da ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** numero). Le voci di storia hanno già portato l'attoreMemberId.

  13. · kamo-internal

    La scheda sulle persone che i server ora nominano — la storia del documento e le azioni, le carriere, il membro principale del conto, il direttore del sedile di gruppo

    Fili ids i servizi ora inviano: - Storia del documento (cambiamenti e download di DocManager, storia del cassetto del materiale di marketing): il membro per nome (memberName) e id esatto, dove le righe hanno stampato un numero arrotondato come "Membro: 1170943544097472500". - Shares (Le azioni esistenti di SHAREDocumentDialog, il cassetto materiale): volto e nome aprire la loro carta (recipientMemberId). Il cassetto legge i campi che il server non ha mai inviato (memberName, isAllowEdit, scadeOn) — le sue righe erano vuote, ogni parte ha letto "può vedere" e no la scadenza mostrata; ImgShareRecord descrive ora ciò che shareToMap realmente scrive. - Carriere: "Last move by" nel cassetto dell'applicazione (statusChangedById), il responsabile dell'assunzione il consiglio dei membri (hiringManagerId). - La riga del membro primario della panoramica dell'account (primaryMember, che il server ora invia). - La linea di copertura di un sedile di gruppo nomina il suo manager (managerMemberId). Ogni campo è facoltativo: assente, il nome rimane chiaro esattamente come prima.

  14. · BillingService

    La copertura di un posto di gruppo porta il membro del suo manager

    GET /api/billing/self/coverage nominato responsabile del gruppo di fatturazione (managerName) ma non chi essi sono, quindi la pagina del piano del membro non poteva aprire la scheda del direttore. Ora porta managerMemberId accanto al nome, come testo — un INT8 id arriva arrotondato come numero JSON.

  15. · kamo-internal

    La scheda su admin, lead e impostazioni — valori di storia, prenotazioni, caselle di posta, registri di audit, l'eroe di profilo

    Ogni membro rimanente che questi schermi mostrano apre la scheda del membro. Ids sono le stringhe i dati porta, ogni controllato sull'origine/principale del server. - Storia (EntityHistoryPanel; storia del lead and account): un cessionario modificato, membro primario o membro aggiunto / rimosso è il loro nome con la carta, sul valore memorizzato, quando il record o il suo elenco attore può nominarli; il titolo nativo raw-id è caduto sopra di esso. I nomi delle note rimangono il testo. - Faccia accanto a nomi cardati, hover solo: membri dell'account, amministratori della piattaforma, il lead-lock scheda di contatto. Gestisci l'intestazione dei diritti: MemberAvatar (46px, ring keep) e il nome. Titolo Dev Machine. - Prenotazioni: "Riassegnato da" / "Credito da" ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** tooltip mantenuto sulle parole; "Richiesta da" nei dialoghi di approvazione, estensione e negazione e didascalia (il sottotitolo della shell di dialogo è un nodo ora); attore di storia (attoreMemberId). - Leads grid Colonna agente: l'elenco invia l'assegno id solo come agenteAssigned (LeadListDTO), quindi la carta non ha mai aperto lì; ora lo usa. - Vista di piombo: il chip di bloccaggio del pannello (proprietario Id); agente di accettazione del riassegnatore caldo (event memberId). - Opt-outs: ambientazioni attore di storia e le linee "By" del pannello di piombo (attoreMemberId). - Mailboxes: chip membro dell'impresa (memberId), assegnatore di posta personale (assignedMemberId). - Profilo: Responsabile del lavoro (manager Id, hover solo: un clic apre ancora il picker); il nome dell'eroe e foto sul record di qualcun altro (il route memberID). - Piani e Fatturazione: licenze, abbonamenti, amministratori account (memberId); sedili acquistati per un'altra organizzazione rimane il testo. - Audit: org access log member (hover only; la riga apre la voce), PHI audit attore (staff righe rimanere ids). Console Mortgage: assegnare un compito steward, firmare i prezzi, steward di governance. Piano sinistro: picker e picker echoes (riassegna a goccia, assegnatore a nuovo carico, divisione commissioni, primario agente, impersonato, ordine mago, assegna-a-licensee, simulatore di policy); nomi all'interno pulsanti portare tooltips (reserve Pulsante); non membri (contenitore, divulgazione e condivisione destinatari, contatti, account utente della piattaforma, agenti dell'IA, nomi di agenti digitati, organizzazioni); lo spettatore record (eroe, carta da parati chip, galleria avatar); conferme e brindisi. Svariati di dati: responsabile della copertura dei posti********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** membro principale della panoramica (getCustomerDetail invia primarioMemberId e membri[], la pagina legge primarioMember e spettacoli ---); storia di consegna (HistoryView, no attore id); elenco opt-out (OptOutRow, nome solo); alias e-mail e accesso alla casella di posta in comune (unità, membro lungoId come JSON numeri); voip ownerMemberId (OrgPhoneNumberController, a raw Long; già cablato su Numbers). Test: membroSentence, withRequester, valori di storia, lead opt-out panel, opt-out attore di storia, Attore di rete PHI.

  16. · kamo-internal

    La scheda sulle schede di casa, HR, KB, documenti e e-sign — faccia e nome come una porta

    I due del proprietario: i widget della Achievement Leaderboard e della filiale Scoreboard avevano la carta sulla Solo faccia 20px. MemberFace (BoardChrome) ora prende il nome della riga come suo figlio, quindi faccia e nome sono un trigger su ogni riga, la linea dello spettatore incluso (memberId, un Java String su entrambe le schede). Il grilletto abbraccia i due, quindi il divario prima che il punteggio non apra nulla. Il nome del Consiglio di Successo tooltip (tier di voto, conteggio dei risultati) ora cavalca sui punti; il "nome" del consiglio di affiliazione titolo" tooltip è andato, perché la carta si dirige con entrambi (lo stesso ufficiale-else-catalogo titolo). Un ex membro rimane inutilizzato. - Arcade HIGH SCORES (AchievementBoardPanel): il tooltip a livello di riga ha coperto la carta; Il punteggio ora. Il tag a tre lettere e il nome sono un trigger, "YOU" incluso. Questo anche gocce il nero punteggiato sottolinea l'ombra di testo dell'armadio dipinto sotto ogni nome a riposo. - PersonCell: il tooltip membro-id seduto all'interno del grilletto e coperto la scheda ogni volta che la scheda aperto sopra la fila. Rimuoveto; l'id è ancora quello che ogni chiamata invia e che cosa corrispondono le ricerche. - HR Panoramica: le code di attenzione (solo hover, le righe sono link) e la matrice di conformità. Training Insights: l'attenzione (hover-only), la posizione, e il feed di attività, tagliato intorno {name} in la frase tradotta. HrSummaryDto e HrAttendanceSummaryD per inviare membroId come String. - Anteprima formativa e legale del pubblico E' il momento giusto. String) e il libro paga auto-match recensioni righe (un timecard-service Long, serializzato come testo, relayed verbatim). - KB console di revisione: "Aggiunto da {name} su {date}" tagliato intorno al nome (submitterMember Id... String.valueOf in kbservice). - Richieste di firma: il mittente nella linea "Sent by" della griglia (solo oratore: la riga apre il cassetto) e nella timeline del cassetto (sentByMemberId, String.valueOf in esigservice). - Condivisione di binder: le righe con accesso... ToStringSerializer). Piano sinistro: raccoglitori e loro selezioni (MemberSearchDialog, AccountSearchDialog, SignerCard's membro scelto, l'iscrizione e formazione chip persone, il membro del codice di tracciamento, il grilletto sommario, la captazione di "editing" di disponibilità); candidati (non membri, per il brief); firmatari, Iscrizioni a goccia, autori sociali e organizzatori di .ics e partecipanti (nessun membro id); brindisi e dialogo linee di argomento. Le lacune dei dati: le liste delle quote del documento (ricevitore Nome solo), storia del documento (memberId un numero JSON, no name), KB cronologia delle versioni (Long editorMemberId, no editorName), le carriere "ultimo spostato da" (statusChangedByName only) e il direttore di assunzione del comitato di carriera (hiringManager Nome solo). Test: entrambe le tavole, il portico, PersonCell, il HR Panoramica, Training Insights, la firma cassetto e la frase di revisione KB. Ciascuno fallisce contro l'origine / componente principale.

  17. · kamo-internal

    La carta in chat, il supporto e le finestre del dock — i nomi accanto ai volti, e le linee che chiamano la gente

    Dove un volto ha già aperto la carta di membro e il nome accanto a esso non lo ha fatto, e sulle linee che chiama la gente. Ogni id è la stringa che i dati già trasportano, controllati al server: MediaService file di storia e cornici dal vivo, ChatListRowDto, ReceiptDto, SupportAgentMetricsDTO, SystemBugDTO, HoldemTableView. SeatView, ChessGameView e l'autore di feed di SecurityService inviano id come testo. - Trascrizione di chat: il nome dell'autore sopra ogni esecuzione di messaggi (msg.memberId), in chat di due persone anche, che non indossano la faccia. Le linee di sistema "X aggiunto / rimosso Y", "X sinistra" (membro Id... transitMemberId) e l'apertura "creata con" linea (membro del galloId) sono tagliati intorno alle loro slot (nuovo app/lib/sentenceSlots.ts, il LeadsHistory split, testato) così ogni nome apre la propria carta; i volti della linea di apertura sono MemberAvatar nelle slot MUI del gruppo, hover solo. - Indicatore visto: in una conversazione di tre o più, le persone che hanno visto l'ultimo messaggio sono faccia accanto all'etichetta (cinque, poi +N), ogni apertura della sua carta. Esistivano solo all'interno tooltip dell'etichetta, che viene disegnato sopra la carta; il tooltip mantiene nomi e tempi. Nessuna faccia tra due persone, la regola delle bolle. - Lista delle Chat: il titolo di una chat non nominata è il nome di ciascun membro (anche di un gruppo, non solo un one-to-one), hover only; l'autore dell'anteprima (lastMessage.memberId) su file CHAT quando sono uno dei membri della fila. Le parole di un contatto sociale sono memorizzate sotto il proprietario, quindi nessun altro tipo. - Biglietto e finestre sociali: il nome del mittente sopra una bolla, sui termini che il volto già usa (solo la parte di TicketChat; SocialChat mai il contatto). - Interazione Centro riga: più tooltip si è seduto sul grilletto della carta, sopra la scheda. Rimossa; "Più" rimane come il nome screen-reader del pulsante. L'avatar disegnato a mano è MemberAvatar (38px, anello e grigia inattiva tenuta). - Softphone CRM autore di attività recente (post.author.id); agente di analisi di supporto (agentId). - Hold'em compact rail: il nome del giocatore (seat.memberId), hover solo all'interno del pulsante del puck; il suo nome-solo tooltip rimosso, la scheda dà il nome completo. - Scacchi: disco e nome dell'avversario (opponentMemberId) a tutte e tre le dimensioni del sedile, mai il lettore Sedile o computer. Il disco mantiene il suo colore laterale, quindi rimane il disegno del sedile. - System Bugs card e cassetto: il nome del reporter (reporterId), solo quando reporterOrgId è il propria organizzazione del lettore (reporterCardId, testato): il consiglio è di ogni organizzazione. Piano sinistro: raccoglitori (dialogo add-members, commutatore casella di posta, trasloco alla cartella, l'elenco del compositore, il pannello di invito di Hold'em, le conferme del menu di giochi); persone che non sono membri (prenotazione degli indirizzi contatti, numeri di SMS, parti di call-history; corrispondenti di posta mantengono la propria carta); altri organizzazioni (Exec2Exec, il lato lontano del biglietto e il richiedente, l'avviso di disponibilità dell'agente); viso dello spettatore (NavTop's profile link, il compositore post); codice morto (clubhouse ChatArea e OpenChatTabs non ha importatori); posti che una carta non può vivere: HexHeadPopover (è se stesso il membro azioni, disegnate sopra la carta), chip di reazione (nomi all'interno della tooltip di una toggle), la finestra degli strumenti barra del titolo (la maniglia del trascinamento), la linea di digitazione e il banner del risultato Hold'em (entrambi smontabili sotto scheda in pochi secondi); le frasi di stato degli scacchi (il sedile accanto a loro ha la carta). No id nei dati: citazioni di risposta (parentSender Solo il nome), eventi di sistema di supporto (solo attoreName), notifiche (MemberNotification non ha attore), Hold'em storia della mano (ActionView non ha membri Id), Sistema Bugs file di thread (un membroId ma nessuna organizzazione, su una scheda globale), citazioni postali.

  18. · kamo-internal

    L'intestazione della carta indossa la carta da parati i loro spettacoli desktop

    La band di intestazione ora mostra la carta da parati desktop del membro — la loro prima fotografia in aria, o la l'organizzazione è quando questo è ciò che il loro desktop gioca — sotto il proprio tono lavaggio, sbiadito sopra banda di colore una volta decodificato. Un semplice desktop mantiene la band; così fa una fotografia che non lo farà carico. SecurityService risolve quale (il nuovo campo "wallpaper" della carta); il set dell'organizzazione viene dall'usoOrgThemeImages, che lo sfondo della console ha già riempito. Dipinta dall'origine tematica (la pagina Img-src di CSP lo permette), mai attraverso il prossimo/immagine o la proxy immagine, che non può raggiungere un host tema in-cluster — la lezione ha imparato ProfileHero.

  19. · SecurityService

    La carta dei membri porta la carta da parati i loro spettacoli desktop

    GET /members/{id}/card guadagna "wallpaper" per l'intestazione della carta, risolto il modo in cui la console sfondo e l'eroe profilo risolvere il desktop di un membro: nessuno quando la loro console è impostata sulla pianura gradiente; {url, tono} per la loro prima carta da parati in aria, nel loro ordine; {org: true, tono} quando giocano l'organizzazione (il cliente già ha quelli — il tema che dipinge). Il tono è il loro proprio sfondoTone, così la fotografia è lavata come sul loro desktop. MemberWallpaperResolver legge backgroundMode/backgroundTone dal negozio ui-preferences e il on-air ThemeBackground righe, e indirizza l'immagine esattamente come ThemeBackgroundController fa (generateFileHash è ora condivisa piuttosto che copiata). Una lettura fallita, o un host il dominio tema non può essere derivato, costa la carta da parati e mai la carta.

  20. · kamo-internal

    La carta sulla coda lunga — HR, KB, tavole, webinar, crescita, tracciamento, Hold'em

    Ogni membro di questi schermi il nome ora apre la scheda membro. Ids sono le stringhe i dati già portato, tranne dove indicato. - PersonalCell / PersonalStack (console presenze HR, 7 importatori): faccia e nome sono un trigger su MemberId; l'avatar privato MUI è l'Avatar (stessa dimensione). Un nuovo `clickToggles` prop è fuori dove la cella si siede in qualcosa cliccabile (Compliance trova righe, il roster's carte e file da tavolo). Il tooltip membro-id rimane; il tooltip nome dello stack dà il via alla carta. - Assegnazioni di formazione e griglie di imballaggio assegnate Legale: teamMemberId; le iniziali di status-tinted I dischi sono MemberAvatar (28/30px) — la ferrovia statale porta ancora lo status. - I problemi di funzionamento del Payroll e la guida di attività di panoramica HR: MemberName su memberId. - KbPerson (4 importatori): MembroAvatar all'interno della scheda su **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** il suo "nome — titolo" tooltip è quello che la carta ora dice, e si sarebbe seduto sopra di esso. Solo Hover all'interno del perno cliccabile, l'attenzione, la revisione e le carte in regola. - KB articolo byline: autoreMemberId, che è un JSON NUMBER, quindi un 19-digit id arriva arrotondato e la carta non può trovare l'autore fino a quando kbservice non lo invia come una stringa. Il tradotto "By {name}" è tagliato dove il locale mette il nome, quindi solo il nome è il grilletto. - Boards: MemberFace è MemberAvatar (20px, anello di podio tenuto) all'interno della carta (`seed` diventa `memberId`); la cella di nome arcade HIGH SCORES è un MemberName. Un membro del consiglio non può nominare ("un ex membro") non ottiene alcuna carta; i tooltips nome dei widget sono intatti. - Webinars: il presentatore (assignedPresenterId) in My Webinars e il programma wizard, hover-only nelle loro righe cliccabili; i partecipanti dei membri in My Webinars (i visitatori non hanno id e rimangono in pianura); Il presentatore della pagina principale via **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** la carta con e senza l'id. - Invii di crescita (memberId; recensitoByMemberId su tutta la frase "Reviewed by") e la colonna dei codici di tracciamento (memberId, hover-only: la riga apre il cassetto). - Hold'em: i nomi degli altri giocatori sulla targa e nelle file della lobby (memberId, hover-only all'interno del pulsante del tavolo). Piano sinistro: le azioni esistenti della finestra di dialogo e le azioni di MaterialDetailDrawer (docsservice's elenco di immagini invia destinatari Nome e nessun membro id), i rapporti ScheduleDialog (proprietario Solo nome, che nessun caller passa), Hold'em HandHistory (azioni portano un numero di sede, non un id membro). I raccoglitori sono partiti da soli: l'e-sign MemberSearchDialog, la ricerca della condivisione e i chip destinatari, chess NewGamePanel selettore avversario, la rotaia del filtro legale. Misurato in Chrome contro l'origine / componenti principali: PersonCell, PersonalStack, KbPerson e il i volti del bordo mantengono le loro dimensioni della scatola, centring e la posizione del punto in orario.

  21. · kamo-internal

    La carta in chat e il clubhouse — righe, roster, messaggi volti, autori posta

    Superfici (ogni id è la stringa che i dati già portano): - ConversationRow: ogni faccia in uno stack di avatar di una riga di chat (membri[].memberId), e il nome un chat unnamed one-to-one è intitolato con, aprire la carta solo su hover; un clic apre ancora conversazione. I volti sono MemberAvatar all'interno della slot MUI Avatar del gruppo, la cui classe la anello, sovrapposizione e "+N" pendono. Una stampa all'interno della scheda non bolle più nella Il ButtonBase di fila e strappa la fila. La faccia del richiedente di supporto è MemberAvatar senza carta: sulla piattaforma sono membri di un'altra organizzazione. - ChatMembersPopover: il volto e il nome di ciascun membro sono una MemberHoverCard (memberId); il volto è MembroAvatar. I controlli di rimozione rimangono fuori di esso. - MessageAvatar prende un membro opzionaleId: dato uno, il volto apre la carta su hover (non scheda stop, nessun titolo nativo sotto la carta). Passato da MessageBubble e MessageList (msg.memberId, chat solo membri), SocialChat (senderId, mai il contatto) e TicketChat (senderId, solo su il lato dello spettatore una volta che i lati sono noti, mai un visitatore web-chat: due lati di un biglietto sono di solito due organizzazioni). - PostCard and CommentThread: il nome dell'autore è MemberName e il volto dell'autore è MemberAvatar con la carta su hover (author.id). Il nome e il volto di PostCard mantengono il loro clic sulla pagina del membro. Piano sinistro: - SeenIndicator: i volti visti esistono solo all'interno di un Tooltip MUI (z 1500, sopra il 1305) della carta, così una carta aperta da uno sarebbe disegnata sotto il tooltip. Ha bisogno dei volti fuori dal tooltip. - Exec2ExecChat: cross-organizzazione, e la carta rifiuta i membri delle altre organizzazioni. - Il titolo di una chat di gruppo (i nomi uniti sono una stringa) e il prefisso del mittente dell'anteprima. Nota: una carta aperta all'interno di una finestra degli strumenti (chat, biglietto e finestre sociali, il commutatore di chat colonna) legge la presenza fuori PresenceProvider, che ToolDock è un fratello di, così dice Offline. Test: ConversationRow (la scheda dal volto e il titolo, il clic apre ancora il conversazione, una stampa nella scheda non strappa la riga), MessageAvatar (la scheda solo con una membro id), TicketChat (solo lato, mai un visitatore).

  22. · kamo-internal

    La carta sui cavi — assegna, autori della linea temporale, storia e agenti dei biglietti

    Ogni luogo che le schermate di piombo nominano un membro (staff) ora apre la carta di quel membro. Ids sono i string member ids i dati già trasportati. - Vista di piombo: l'agente della carta di assegnazione (la pagina è assegnataLeadMemberId). AgenteSelettore e l'UI di piombo-lock sono intatti. - Porta griglia: la colonna agente (assegnataTeamMember.id), hover solo: è una cella di rete. - Softphone CRM: la piastrella "Assegnata a" (assegnataTeamMember.id). - Comunicazione timeline, il membro al nostro fianco di ogni voce (entry.memberId): titolo e avatar (MemberChip sostituisce il MUI Avatar disegnato a mano, stesso 20px), un titolo di chat in uscita, il membro di una chiamata e sottotitolo di un testo in uscita, mittente di un'email in uscita. I titoli sono frasi tradotte, quindi l'intero titolo è il grilletto. Il piombo dall'altra parte rimane chiaro: file di chat in entrata non portare nessun membro id, e su un membro di posta in entrataId è chi ha ricevuto, non il mittente mostrato. La shell commuta gli eventi puntatore fuori attraverso la colonna del titolo in modo che la riga è una click target; i nomi optano indietro, come fa LeadRefChip. Una chiamata o e-mail che si espande mantiene la sua nome hover-only e la shell passa il clic del nome, quindi la riga si espande ancora. - Elenco dei biglietti di supporto: l'agente assegnato (assignedAgentId), hover solo: la cella assegna o apre il biglietto. Il suo Assign/Reassign tooltip si muove accanto al nome in modo da non coprire più la carta. - conduce la storia: ogni membro in una linea (memberId, fromMemberId, byMemberId). Una linea può nominare due membri all'interno di una frase tradotta, quindi è formattato con un marcatore al posto di ciascun membro e diviso sui marcatori: le parole rimangono il locale, nel suo ordine, e nessun messaggio cambiato. - Gestire i crediti: il link del profilo della colonna membro (memberId), hover solo in modo che il link mantiene il suo clicca. - Opportunità riservate: l'agente primario (primaryAgentMemberId). Un membro rimosso (senza nome) rimane Agente sconosciuto. - Scheda storia di piombo: la colonna "Changed by" (attore.memberId). È disegnato dal comune EntityHistoryPanel, così la storia del conto ottiene anche la carta. Piano sinistro: - Richiedente di biglietti: il modulo di contatto pubblico archivia i suoi biglietti sotto il membro SYSTEM dell'org senza èPublicChat, quindi requestorId non è affidabile la persona che chiede. TicketHeader nomina l'agente solo all'interno di MemberPickerDialog. - Opportunità riservate "Riassegnate da" / "Filed by" capzioni e ManageReservationDialog's sottotitolo: nomi all'interno di frasi che portano il proprio tooltip o testano una finestra di dialogo. L'agente primario e commissioni-split righe (ManageReservationDialog, CommissionSplitEditor) sono raccoglitori. - I valori vecchi/nuovi della storia di piombo per il campo di assegnazione: renderValue restituisce il testo. - Assegnare il compito della vista principale: una stringa libera senza id.

  23. · kamo-internal

    La scheda sulle impostazioni e le liste di amministrazione — membri, fatturazione, amministratori della piattaforma, telefono, commissioni

    La scheda di membro sulle impostazioni e gli elenchi di amministrazione che mostrano le persone. Ogni nome apre la carta su hover, focus o tap; un nome che già fa qualcosa su click mantiene quel click. - Membri del team (TeamMemberManager): il nome nelle schede dei membri e dei membri del team Id... il suo avatarUrl dipinto nella carta). La scheda dei client è dati mock, non membri: lasciato normale. - Membri di un account (account/view/[id]/members): ogni nome (memberId), membri del cliente incluso. L'avatar disegnato a mano è ora MemberAvatar a 32px. - Proprietari di fatturazione: il nome di ogni candidato (id, che è il membro id su entrambe le liste legge). - Gruppi di fatturazione: il manager sotto "Paid by" (managerMemberId) e ogni roster name (memberId). La linea "Paid by <manager>" (managerMemberId): il nome si trova all'interno di una traduzione frase senza tag per appenderlo, quindi l'intera frase è il grilletto. - Amministratori di piattaforma (AdministratorCard): il nome (memberId); l'avatar disegnato a mano è ora MembroAvatar a 48px. Un amministratore in un'altra organizzazione legge "Non nella vostra organizzazione" a meno che lo spettatore non sia Dio. - Impostazioni webinar, tabella di disponibilità del tipo: ogni presentatore (teamMemberId, un membro id). - Telefono: proprietario di un numero su Numbers (proprietarioMember Id; "belongs to" è il grilletto, e Fact prende un nodo ora); il membro assegnato su entrambe le tabelle di estensione (assignedMemberId), su hover e focus solo, quindi il link alle impostazioni del telefono mantiene il suo clic; ogni membro sui dispositivi mobili (memberId). - Processore della Commissione: il membro su ogni linea di un lotto inviato (memberId; una linea vuota rimane ha colpito, che la linea di un genitore non raggiunge più) e su ogni prelievo (memberId). Piano sinistro: i raccoglitori (MemberPickerDialog, Autocomplete della linea di composizione, il licenziatario caselle di controllo, il pulsante pick-a-manager); nomi all'interno frasi di conferma, tooltips e toast; Gli utenti di PBX e i chiamanti di segreteria, che non hanno un id membro; e RelationshipManager, che elenca organizzazioni, non persone. PlatformAdminsTab disegna le sue persone solo attraverso la AdministratorCard.

  24. · kamo-internal

    La carta sugli ospiti del calendario, autori di documenti e note di account

    - Calendario: le righe degli ospiti risolte della finestra dell'evento aprono la scheda del membro (l'anteprima del pubblico membroId, portato su GuestRow). Un indirizzo di tipo manuale non ha id e rimane il testo; un indirizzo digitato che appartiene a un membro è stato già promosso a una riga di membro. - Documenti: "Uploaded by" nella griglia del documento (DocsService creatoByMemberId; la scheda condivisa utilizza condivisoBy) e la versione timeline's byline (ogni versione è stata creataByMemberId, l'originale caricare è dalla storia) aprire la carta del caricatore su hover. Entrambi siedono dentro qualcosa cliccabile, quindi la carta non prende mai il clic. - Note account: le note recenti della panoramica e la scheda Note nominano l'autore (SecurityService now invia autoreNome accanto autoreMemberId — prima, ogni nota legge "Sistema") e apri la loro carta. - La carta mantiene gli eventi che iniziano qualcosa (clicca, stampa, messa a fuoco, chiavi) da bubbling attraverso il portale nella riga che detiene il nome, quindi premendo un'azione non increspa più o seleziona Quella fila. Le estremità di una pressa raggiungono ancora la finestra, dove il framer-motion termina mentreTap.

  25. · DocsService

    Il membro del caricatore viaggia con la lista e la storia

    L'elenco dei documenti (/imaging/list) e la storia di un documento portavano solo il nome del caricatore, quindi kamo-internal potrebbe mostrare chi ha caricato un file ma non aprire la loro scheda di membro. Entrambi ora portano creatoByMemberId, come testo — un INT8 non sopravvive a un numero JavaScript. Autore di ogni versione già portato loro.

  26. · kamo-internal

    La carta membro — Hover qualsiasi membro, vedere chi sono e che cosa si può fare

    Una scheda per ogni nome membro in kamo-internal, gated dalla regola server SecurityService ora (MemberInteractionPolicy, securityservice 5063eaa): chat, call, meet now, email up front; testo, programma e un gioco (texas / Texas Hold'em) dietro More; il loro profilo — o, per un membro del cliente, il loro account — nel piè di pagina. Un'azione rifiutata è dimmersa con una serratura e dice perché su hover (la politica di chat nelle parole proprie dell'org); un'azione che lo spettatore non può mai prendere è non disegnato affatto. I pezzi (app/components/members/card, app/lib/memberCard): - MemberName / MemberChip / MemberHoverCard — trigger costruiti sulla carta corrispondente della posta useHoverCard (intent, una carta alla volta, ancoraggio, Escape ritorna messa a fuoco, toccare il tocco), che guadagna `clickToggles` in modo che un nome che già fa qualcosa su clic mantiene che fare clic. - MemberCard — intestazione stagnata con la tonalità del membro mescolato nel marchio, anello di presenza dal vivo, titolo · dipartimento, il loro tempo locale e quanto avanti o dietro di voi, copia-controllare dettagli. - MemberActionBar — i pulsanti etichettati della carta, o la striscia compatta di una riga. - MemberAvatar — l'unico avatar (foto grande, altre iniziali sulla tonalità del membro, presenza opzionale). - action.ts — la serie ONE di esecutori; la lista `initialData.to` del compositore, chat by userId, Hold'em come "play", non "creare", ciascuno pinned da un test. - cache.ts — una lettura per membro, condivisa da ogni trigger, 60s TTL, innescata da righe roster, leggere attraverso l'usoSyncExternalStore quindi nessun stato è impostato all'interno di un effetto. - MemberCardDialogs — montato una volta in AuthedChrome per la finestra di dialogo di incontro, che ottiene `initialMode` così "Schedule" si apre pronto a scegliere un tempo. Layer 1305: over MUI dialoghi, quindi un nome all'interno di una finestra di dialogo ottiene ancora la sua scheda; sotto MUI tooltips. Le tre copie di queste azioni sono scomparse: - Le righe del Centro di Interazione disegnano la striscia condivisa da `interazione` su ogni riga del roster; Carta piena. Il profilo a mano di NavTopPanel e i cancelli di posta vengono rimossi. - La chat hex-head popover segue la decisione della carta per una chat one-to-one. Il suo "Vedi account" è stato offerto a tutti e portato a una pagina la maggior parte dei membri sono rimbalzati da; ora appare solo quando lo spettatore può aprire quel profilo, e va a esso. - MemberContactCard (portabloccaggio / roster) disegna i pezzi condivisi invece del proprio Call e Messaggio. La tabella Webinar presenta la carta su ogni presentatore e un ambra "Nessun tempo prenotabile" avviso accanto a qualsiasi presentatore un visitatore non può prenotare (mediaservice a9f20cc), con un tooltip che dice cosa fare. Spettacolo e piano: E' il momento giusto. E' il momento giusto. Il resto del rollout segue. Test: memberCard lib (parsa, cache, motivi, ora locale, ogni esecutore), MemberCard render (hover, tastiera, nascosto vs dimmed, More, piè di pagina, click conservato, no id, non trovato), presentatore spazi vuoti, cancello profilo esagonale. tsc clean; eslint non aggiunge nulla ai conteggi esistenti dei file toccati; passano le guardie; 632 test attraverso le directory toccate verde.

  27. · MediaService

    La tabella Presenters può vedere quali presentatori nessuno può prenotare

    E' il momento giusto. — MANAGE SUPPORT, il chiamante stesso solo il tipo dell'organizzazione (qualsiasi altro è "non trovato") — risponde ogni presentatore attivo con haBookableTime, per l'avviso accanto al loro nome sulla tabella Presenters. haBookableTime(membro, tipo) è estratto da webinarsAwaitingMyAvailability, che ora lo chiama, quindi la tabella dell'amministratore, il marcatore del calendario del presentatore e la pagina di prenotazione bookableStarts e non può essere d'accordo se qualcuno può essere prenotato. Test: il tavolo segna un presentatore le cui ore sono passate e non una con ore avanti (reali disponibilità aritmetica), altro tipo di org non è trovato, la forma del filo, e il 403 senza MANAGE SUPPORT. Suite completa 994/994.

  28. · SecurityService

    Una regola per ciò che un membro può fare con un altro, servito per membro e per fila di gallo

    Le stesse cinque azioni — chat, chiamata, e-mail, incontro, vista profilo — sono state offerte da tre posti in kamo-internal (la riga Interaction Center, il popover chat hex-head, la carta di contatto lead-lock), ogni decidere nel browser dalla propria lettura dei diritti. Nessuno ha accettato, nessuno poteva vedere la chat politica o qualsiasi cosa circa la persona dall'altra parte, e il risultato è stato pulsanti che non hanno fatto clic. MemberInteractionPolicy (membri/carta) è ora l'unica regola, pura e testata da tavola. Per azione risponde HIDDEN quando lo spettatore non può mai farlo (nessun posto, l'org non ha diritto all'app) o REFUSED con un ragione codice quando è questa persona nel modo (la politica di chat — con la formulazione propria di org — INACTIVE, NO EMAIL, NO NUMBER, NO MOBILE, NOT PLAYER): chat non ristretta; target attivo collega; chat policy consente di avviarlo (overRIDE CHAT POLICY passa) chiamare il sedile canCall; qualsiasi estensione o numero sul file il sedile del testo puòSendTextMessages; un mobile che prende testi email EMAIL intitolato, ACCESS MAIL, sedile canSendEmail; un indirizzo sul file incontro/schedule MEET intitolato, canMeet, START MEETING; un collega attivo profilo dei sei diritti o dio della pagina del membro — per un membro del cliente, VIEW ACCOUNTS ("Vedi account") gioco i giochi entrambi i lati possono giocare: diritto + PLAY CHESS/PLAY HOLDEM su ogni lato (proprietario si trova in) I dati di contatto di un membro del cliente sono solo per uno spettatore che può leggere i conti. Le app sono Proiezione ENTITLED (computeEffectiveFeatures), la stessa l'organizzazione del browser.isEmail legge. MemberInteractionService risolve lo spettatore una volta — capacità di sede da EntitlementService, app, diritti, proprietario — e decide per un membro o un intero roster (i diritti di gioco letti una volta per partita). E' il momento giusto. identità (nome, avatar, titolo, dipartimento, tipo, timezone, disponibilità), i valori di contatto che la politica permette a questo spettatore di vedere (i colleghi sono quelli il roster già serve ogni membro), il conto per un membro del cliente, e la decisione. Un altro membro di org è 404, come uno che non esiste; l'id è una stringa di percorso. La sessione viene tramite CallerSessionResolver, così il ratchet non protetto lo riconosce. /by-department righe ottenere `interazione` dalla stessa politica, quindi una riga di roster e una carta aperta da esso non può mai offrire cose diverse. LeadWebinarEntry guadagna presenterMemberId, così la pagina principale può mettere la carta sul nome del presentatore. Test: MemberInteractionPolicyTest (17), MemberCardEndpointTest (forma del cablaggio, contatto con la rete, 404 tra org, 400/401), MemberRosterInteractionTest. I cinque fallimenti completi E' la stessa cosa. cinque che falliscono sull'origine/mangono senza questo cambiamento.

  29. · kamo-internal

    Un segno rosso sul calendario quando nessuno può prenotare un webinar con voi

    Il presentatore di un webinar le cui ore sono esaurite non è mai stato detto. La pagina di prenotazione non offre volte, e l'unica persona che può risolvere è l'unica persona a cui il prodotto non l'ha mai menzionato. L'icona del calendario ora porta un segno rosso, lampeggiante ogni volta che MediaService dice almeno un webinar questo membro presenta non ha tempo prenotabile (mediaservice ddf8e20). Il calendario è dove un presentatore dichiara quelle ore, quindi è dove il nudge appartiene. Su Hover il nome dell'opzione è sostituito da ciò che è sbagliato, che i webinar sono in attesa, e che fare — lo stesso trattamento i conducenti accetta-gate usa, perché un punto da solo non dice a qualcuno cosa andare e fare. Guida il client STOMP chat esistente piuttosto che aprire una connessione: una cornice senza contenuto su # Il browser chiede al navigatore # endpoint autenticato per la sua risposta. Il seme non è un'ottimizzazione — il soggetto è core NATS con nessun flusso, quindi un frame pubblicato mentre questa scheda era addormentata è andato — e il primo ri-letto è la cosa SOLO che può prendere una finestra che semplicemente è scaduta, dal momento che nulla scrive allora. Sessioni che non c'è nulla che non abbona mai, che è quasi tutti loro. Il membro id è quello STRING: arrotondare un unico rowid() attraverso l'accessor numerico iscriversi a un argomento del collega e essere rifiutato dalla guardia del server, lasciando un segno che non va mai vivere con nulla sullo schermo per spiegarlo. La risposta è tenuta taggata con il membro per cui è stato letto, così un sudo dio-mode o un interruttore di sessione mostra il nuovo membro EMPTY piuttosto che il precedente stato — e non ha bisogno di effetto di reset, che le regole React Compiler rifiutano in nuovo codice. Test: presenterAvailability.test.ts pins la destinazione, il frame predicate (mai getta, qualsiasi cosa arriva), il parser (un corpo che non può fidarsi lascia il segno da solo) e il tooltip contro il reale Traduzione: No. Lo stress e' gia' sul dizionario. (996b07f0), senza plurale in loro. tsc pulito, eslint pulito sui file toccati, le guardie passano, 318 test nav verde.

  30. · MediaService

    Dite a un presentatore, vivete, quando nessuno può prenotare un tempo con loro

    Un presentatore le cui ore dichiarate sono esaurite è l'unico stato in questa caratteristica nulla segnalato: la pagina di prenotazione semplicemente non offre volte, il visitatore parte, e la persona che potrebbe risolvere in un minuto non ne ha mai sentito parlare. La demo di prodotto di KamoCRM è esattamente in quello stato di oggi — il suo unico L'ultima finestra del presentatore era 2026-09-03. E' il momento giusto. risposte, solo per il chiamante: quanti tipi attivi sono presenti, e che di loro non hanno tempo prenotabile lasciato. Per tipo, perché ognuno ha la propria lunghezza, anticipo minimo e orizzonte; per presentatore, perché le proprie finestre meno le proprie prenotazioni e calendario è la cosa che possono andare e cambiare. Esegue la SAME arithmetic la prenotazione pagina fa — getBookableTimes e questo ora condividere bookableStarts() — quindi il marcatore non può rivendicare gap la pagina sarebbe riempire, o rimanere scuro mentre la pagina non ha nulla da offrire. Vivi sopra la presa esistente: E' il momento giusto. pubblica una cornice senza contenuto su ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** finestra di disponibilità aggiunta, modificata o cancellata; aggiunta o rimossa da un tipo di presentatori; sessione prenotata (firmata o dal sito di marketing) o cancellata. E' il momento giusto. lo mette su # Il gemello del relè di addestramento # # e... # StompDestinazione Authz protegge quella destinazione per membro su SUBSCRIBE e rifiuta i client SEND: argomento nomi un membro del presentatore id, e non protetto che avrebbe lasciato chiunque sulla presa guardare un nome Il diario del collega e' vuoto. Il telaio non porta titolo, nessuna ora e nessun conto — il browser rilegge il punto finale sotto la sua sessione. Ciò che nessun frame può annunciare è una finestra semplicemente ESPIRING, perché non accade scrittura. Il browser è rilettura primo piano è l'unica cosa che solleva il marcatore allora, motivo per cui non è facoltativo. Test: PresenterAvailabilityGapTest gestisce la regola su un membro realeDisponibilità Servizio (ore nel passato, ore avanti, ore consumate dalle proprie prenotazioni, una finestra troppo breve per ospitare, un tipo di due, non presenta nulla); E' una cosa che non va. ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** carico utile senza contenuto. Suite completa 991/991.

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