Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· kamo-internal
I membri scelgono di scorrere l'elenco dei messaggi o sfogliarlo per pagine
La seconda colonna caricava sempre più posta come è stata scorretta. Un membro può ora scegliere Scroll o Pagine sotto Filtri ("Sfoglia l'elenco"). La scelta è tenuto per membro in ui-preferences (emailListBrowse) quindi li segue tra dispositivi; Scroll rimane il default, quindi nessuno vede un cambiamento fino ne fanno uno. Pagine mostra cinquanta messaggi alla volta con Primo / Precedente / Pagina X di Y / Successivo / Ultimo ai piedi della lista, e "51-100 di 1.240" dove la cartella albero ha un conteggio (l'intervallo da solo per un'etichetta o una cartella intelligente). Girare un pagina sostituisce le righe piuttosto che appending, cancella la selezione e la Aggiornamenti dal vivo mantengono il posto del membro: un cambio mailbox ricarica la pagina su schermo invece di tornare a pagina 1, e una pagina che ha passi svuotati indietro uno. Risultati di ricerca mantengono il proprio pager; solo la prima pagina di una cartella è in cache. Le modalità di commutazione ricominciano dall'alto quando più la prima pagina è stata caricata. Strings: Kamo-translation-dictionary 135c6cc5 ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
· kamo-internal
Chess e Hold'em loop musicali di sottofondo mentre la loro finestra è in uso
Tre nuovi eventi sonori di giochi — sfondo scacchi, sfondo Holdem e Holdem Lobby — giocato su ripetizione con startLoopingEventSound. Cicli di scacchi ogni volta che una finestra di scacchi è aperta; Hold'em gioca lo sfondo a un tavolo e la lobby nella hall. Ognuno si sente solo mentre la sua finestra è la finestra in uso e la scheda del browser ha fuoco, e disattivato (non altrimenti. Il loop segue le impostazioni sonore del membro dal vivo.
· kamo-internal
Chess e Hold'em loop musicali di sottofondo mentre la loro finestra è in uso
Tre nuovi eventi sonori di giochi — sfondo scacchi, sfondo Holdem e Holdem Lobby — giocato su ripetizione con startLoopingEventSound. Cicli di scacchi ogni volta che una finestra di scacchi è aperta; Hold'em gioca lo sfondo a un tavolo e la lobby nella hall. Ognuno si sente solo mentre la sua finestra è la finestra in uso e la scheda del browser ha fuoco, e disattivato (non altrimenti. Il loop segue le impostazioni sonore del membro dal vivo.
· kamo-internal
Picture frame dice quando un upload atterra, riproduce video una volta o su ripetizione, e apre lo schermo intero
- I carichi mostrano il file, il suo posto nel lotto e il progresso byte, poi un brindisi quando è dentro. - I video di una cornice giocano su ripetizione (loop durante la visualizzazione, tenuto per interi giochi) o una volta (passi successivi mostra l'ultima cornice come ancora). - Il suono gioca solo mentre il puntatore è sopra la cornice; "Mute video" diventa "Sound on hover". - Fare clic sul frame lo ferma e si apre ciò che mostra lo schermo completo con un download, e un video giocatore con gioco/pausa, riavviare, cercare, trascorso/totale, muto, volume e schermo intero. Chiusura riprende la diapositiva con il tempo che aveva lasciato.
· kamo-internal
Picture frame dice quando un upload atterra, riproduce video una volta o su ripetizione, e apre lo schermo intero
- I carichi mostrano il file, il suo posto nel lotto e il progresso byte, poi un brindisi quando è dentro. - I video di una cornice giocano su ripetizione (loop durante la visualizzazione, tenuto per interi giochi) o una volta (passi successivi mostra l'ultima cornice come ancora). - Il suono gioca solo mentre il puntatore è sopra la cornice; "Mute video" diventa "Sound on hover". - Fare clic sul frame lo ferma e si apre ciò che mostra lo schermo completo con un download, e un video giocatore con gioco/pausa, riavviare, cercare, trascorso/totale, muto, volume e schermo intero. Chiusura riprende la diapositiva con il tempo che aveva lasciato.
· kamo-internal
Pannello di bordo per un mercato senza fornitori
Un mercato senza prodotti di fornitori non può mai mostrare un piombo (un piombo ha bisogno di un prodotto), quindi /leads ora sostituisce la griglia per quel mercato con lo stesso pannello di bordo utilizzato quando non esistono mercati, puntatori manager a Vendita e prodotti. "Tutti i mercati" lo mostra solo quando nessun mercato ha. Il CTA apre le impostazioni del venditore su quel mercato tramite ?marketId=, e la cache dei mercati/vendori viene re-fetched una volta per il montaggio mentre detiene mercato senza prodotto, così tornando dopo l'aggiunta di un venditore mostra la griglia.
· kamo-internal
Pannello di bordo per un mercato senza fornitori
Un mercato senza prodotti di fornitori non può mai mostrare un piombo (un piombo ha bisogno di un prodotto), quindi /leads ora sostituisce la griglia per quel mercato con lo stesso pannello di bordo utilizzato quando non esistono mercati, puntatori manager a Vendita e prodotti. "Tutti i mercati" lo mostra solo quando nessun mercato ha. Il CTA apre le impostazioni del venditore su quel mercato tramite ?marketId=, e la cache dei mercati/vendori viene re-fetched una volta per il montaggio mentre detiene mercato senza prodotto, così tornando dopo l'aggiunta di un venditore mostra la griglia.
· kamo-internal
Iniziare Org Configura guidata pulsante ottiene un bordo di attenzione rossa
· kamo-internal
Iniziare Org Configura guidata pulsante ottiene un bordo di attenzione rossa
· EmailService
Un messaggio composto porta il suo incontro, e le modifiche del calendario chiedere prima di dire agli ospiti
- /api/email/send prende meetingInvite: l'evento è archiviato sul mittente calendario nella stessa transazione, i suoi giri ics sul messaggio composto con un intestazione X-Kamo-Calendar-Event e i destinatari sono registrati come invitati. No. seconda email di invito. - Un invito al calendario tiene gli allegati del membro. - PUT /api/calendar/events prende notificaGuests: true rilancia il SEQUENCE e e-mail ogni ospite invitato; falsi salva senza scrivere a nessuno. Gli inviti e gli aggiornamenti degli ospiti escono come le lettere di marca dell'org. - E' una cosa da fare. link all'invito di un messaggio evento del membro; gli eventi pubblicano gli ospitiInvitati e i partecipanti invitati.
· kamo-internal
Composer meeting cavalcare l'e-mail, modifiche chiedere prima di inviare e-mail agli ospiti, mail link al suo evento
- Il compositore invia il suo incontro con il messaggio invece di un secondo invito. - Salvare una modifica a un evento con ospiti invitati chiede se inviare loro un aggiornamento (GuestNoticeDialog); sì invia notificheGuests e mantiene gli inviti email. - Un incontro che il compositore ha inviato prima che il pubblico venisse riaperto con i suoi ospiti. - /messages mostra l'incontro di un messaggio con un link che lo apre su /calendar.
· kamo-shared-library
Invito di riunione di marca e lettere di aggiornamento per gli ospiti del calendario
Aggiunge calendar.meeting invite e calendar.meeting updated modelli canonici e MeetingInviteEmail, il costruttore variabile EmailService li riempie da.
· kamo-internal
Assegnazione dei membri del team in mappature di piombo; importazioni automatizzate sulla tela di mappatura
Assegnazione. Importazioni manuali e automatizzate ottengono un "Assigned Team Member" target (rimorchio "Assigned User", che nessun importatore ha mai onorato). La finestra di dialogo imposta un membro del team specifico, non firmato, o corrispondente da campi: un elenco ordinato provato a sua volta (un valore vuoto o ineguagliato si muove), con un fallback di nessuno o di un membro scelto. Il server corrisponde in formato tollerante e mai indovina tra due persone; i valori che non hanno risolto sono elencati dopo un'importazione manuale e annotato sulla voce di coda di importazione automatica. Le importazioni automatizzate si spostano da un tavolo con trasformazioni di testo libero (che server mai letto) sulla stessa tela drag-and-drop delle importazioni manuali, con valori del campione dalle recenti presentazioni del punto finale. Un adattatore (leadMappingAdapters.ts) traduce la tela per tutti e quattro gli schermi. Tela: le trasformazioni sono modificabili da ogni mappatura (la finestra di dialogo non è mai stata raggiungibile), con ogni tipo di server, configurare ingressi, riordinare e un live anteprima che utilizza le regole del server; diverse fonti possono alimentare un campo, ordinato per priorità; la parte di una colonna divisa viene salvata come splitPart trasformazione in modo che le importazioni effettivamente prendere quella parte; le linee disegnano su carico; Elimina/Backspace non spara più durante la digitazione; le carte funzionano dalla tastiera. Editor dei modelli: mappature la cui colonna aveva capitelli è stata abbandonata su carico e cancellato su salvare, perché le intestazioni del modello ritornano in minuscolo.
· DaemonService
Mappe di lavoro di assunzione attraverso il motore condiviso, con l'assegnazione del membro del team
LeadIntakeProcessingJob costruisce ogni vantaggio con il kamo-shared-library LeadRequestMapper invece del proprio interruttore di campo e trasformare copia, quindi le importazioni automatizzate applicano ogni trasformazione della tela (i default sono ora in fiamme su una campo mancante), raggiungere ogni campo di piombo, e onorare l'obiettivo di assegnazione: un membro fisso, non firmato, o una catena ordinata di campi abbinati a team (e-mail di età, poi nome dell'agente, poi nome del chiamante per JustCall) di Harmony. I candidati sono i titolari attivi VIEW LEADS (IntakeAssignableMembers, caricato una volta per lotto endpoint). Un valore che non corrisponde a nessuno, o fisso o membro fallback che non può più prendere i lead, è scritto come una nota sul voce di coda, così l'amministratore può vedere perché un piombo è arrivato senza firma. IntakeAssigneeResolver è sostituito dal matcher condiviso.
· SecurityService
Importazioni manuali e backlog di aspirazione attraverso il motore di mappatura condiviso
LeadImportController mappa ogni riga con kamo-shared-library LeadRequestMapper invece del proprio interruttore, quindi le importazioni manuali e modello ottenere il set completo campo, ogni trasformazione, e l'assegnazione del team-membro Obiettivo. Il risultato dell'importazione ora trasporta il totale Assegnato e i valori dell'assegno che non ha risolto a un membro della squadra (assegnamentoIssues). Le mappe e i modelli sono convalidati su salvataggio: un tipo di trasformazione il il server non può applicarsi è un 400, non una stringa silenziosamente ignorata. LeadIntakeController perde il suo motore di aspirazione duplicato. Processo Backlog ora i pagamenti FAILED e riporta ciò che è in coda; l'assunzione di DaemonService il lavoro li importa entro un minuto, lo stesso percorso che una presentazione dal vivo prende. Salvare le mappature di un punto finale richiede MANAGE CRM SETTINGS; riproporre le backlog mantiene CREATE LEADS. GrantAllRoleResolver e RightHolderResolver delegato al condiviso-lib GrantAllRoles/RightHolders, quindi l'elenco dei membri assegnabili è lo stesso DaemonService usa.
· kamo-shared-library
Un motore di mappatura per le importazioni di piombo, con l'assegnazione di squadra
Importazioni manuali, importazioni automatizzate (aspirazione) e il backlog ciascuno portato loro propria copia del codice di mappatura, e non sono d'accordo: data, regex e split le trasformazioni mancavano ovunque, le copie di aspirazione saltavano vuoto valori prima di trasformare (così "valore predefinito" mai licenziato), diversi percorsi le offerte di tela sono state ritirate, e "Assigned User" è stato ignorato su tutti e tre. lead.mapping è ora il singolo motore: - LeadRequestMapper: elenco regole -> CreateLeadRequest. Le mappe funzionano in ordine e vince il primo valore non vuoto per campo; ogni percorso leadFields.ts, ogni campo mutuo e campi di forma personalizzati terra (LeadRequestMapper Perni di prova). - LeadFieldTransforms + TransformationsJson: ogni trasformazione di tela, una implementazione; i tipi sconosciuti sono rifiutati in tempo di salvataggio. - Obiettivo di assegnazione "assignedTeamMember" (legacy "assignedUser" ancora letto): un membro fisso, non firmato, o abbinato a campi. Campi di corrispondenza formano un catena ordinata - un valore vuoto o ineguagliato passa al successivo, il in primo luogo che nomina una persona decide, altrimenti la mappatura fallback (nessuno o un membro scelto) si applica. L'endpoint JustCall di Harmony si basa su quella catena. - TeamMemberMatcher: formato-tollerante, tipo-safe matching on email, username e nome ("Last, First", iniziali, soprannomi, accenti, un piccolo typo); un valore che si adatta a due persone non è mai indovinato. - LeadAssignableMembers: i candidati sono i titolari attivi VIEW LEADS, le stesse persone che l'agenteSelettore offre (RightHolders e GrantAllRoles trasferirsi qui da SecurityService in modo da DaemonService può usarli). Inoltre: LeadImportResponse report totalAssegnato e assegnazioneI dati; LeadIntakeService convalida le trasformazioni prima di sostituire le mappe e può richiedere i carichi di pagamento FAILED per il lavoro di assunzione.
· kamo-internal
Opzioni di chiamata e riunione su una scheda vocale di un membro AI (chiamate SP92)
Sotto la voce del membro AI nella stanza Identity del profilo: "Trasferisci i chiamanti a una persona quando chiedono un agente o un umano" (on), "Mantenere le trascrizioni complete di chiamata e di riunione nelle note" (off) e "In riunioni": "Prendi note; parlare quando indirizzato per nome" / "Parla con tutti, come una telefonata". Ogni salva subito attraverso il relè BFF ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** Perche'? I default sono come ogni AI ha lavorato prima.
· VOIPService
V7 — che il collega chiama da un'estensione interna (SP92 chiama)
E' il momento giusto. (KAMOAI INTERNAL SECRET) risponde membro attivo dell'org del server del telefono che l'estensione è assegnata a ACTIVE, o 404 NO MEMBER. kamoai-service chiede quando una chiamata raggiunge un membro AI da un'estensione, quindi il AI sa quale collega ha chiamato. Un numero di telefono, un estensione non firmata o disabilitata, un altro membro di org o uno che ha lasciato non è nessuno.
· AIService
Le opzioni di chiamata e di incontro di un membro AI, accanto alle sue voci (chiamate SP92)
keywordTransfer (default on), keepFullTranscript (default off) e meetingMode COMPANION | CONVERSATION (default COMPANION), in ai member call options (hand-applied, re-runnable DDL; nessuna riga = i default = il comportamento prima SP92). GET/PUT ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** SUPERVISE AI MEMBERS, modifiche; il AI stesso non lo fa; un AI in pensione è letto solo), e il gemello interno Il servizio kamoai legge ogni chiamata e riunione.
· kamo-shared-library
MEETING COMPLETED run trigger, per il follow-up di una riunione di conversazione (SP92 chiamate)
Una riunione in cui un membro AI ha partecipato come partner di conversazione lo sveglia una volta che finisce, con la sua nota di trascrizione, Come fa una telefonata a CALL COMPLETED. STRING-persisted in ai runs.trigger kind (no CHECK); un test di protezione mantiene ogni nome del trigger all'interno della colonna.
· kamo-shared-library
Il risolutore TRAIT e PersonalityProfile — i limiti, le serrature, lo strato virtuale archetipo, la scrittura di tendenza, gli adattamenti, i gruppi ordinati, la vista e il timbro della personalità (KamoCollab CP03 T9)
· kamo-internal
La scheda Org Chart su Essential Setup, nel menu delle impostazioni, sulla pagina di atterraggio Impostazioni e sulla barra di amministrazione domestica (KamoCollab CP02 T24)
♪ monta OrgChartPanel dopo Teams: chi riferisce ♪ a chi attraverso l'organizzazione, in sola lettura, da GET /api/security/org-chart (nuovo relè BFF, avantiToApi + relayUpstream). orgChartApi analizza il grafico con zod e tiene ogni id una stringa; un numero id viene rifiutato, mai arrotondato. orgChartTree (pure) mette ogni persona sotto il loro manager quando mostrato, altrimenti un AI sotto il suo supervisore quando mostrato, altro alla radice; i proprietari prima, poi per nome; un loop di segnalazione tagliato al suo più piccolo id ("Reporting loop"); un nascosto manager flagged ("Manager inactive"); il filtro di reparto mantiene il sottotitoli del dipartimento e la ricerca mantiene il nome o le partite di lavoro, entrambi con gli antenati che li collocano. Il pannello disegna una carta per persona (iniziale, nome legato al profilo attraverso il prossimo / link, titolo di lavoro, dipartimento e fino a tre chip di squadra allora +n, badge AI, Proprietario, Inattivo, Capo di, Piombo e Superviso da quando il supervisore non è la scheda sopra, il conteggio diretto del rapporto), guide del connettore in --cent-persone, tre livelli aperti, EmptyState, ErrorState con riprovazione, e un rinfresco vivo come i suoi fratelli. ErrorState ottiene un optional RetryLabel. Esposta anche per master R1-37: {chiave: 'orgChart' } dopo le squadre menu impostazioni, una voce orgChart dopo Teams sulla barra dell'amministratore, e una carta di atterraggio dopo le squadre. essenzialeSetupExposure, impostazioniCarte e teamTab seguire la nuova scheda.
· kamo-shared-library
I sette archetipi incorporati — 56 valori base, i gruppi ANY e quattro adattamenti ciascuno, la prosa verbatim, il riempimento e la ricerca incorporata (KamoCollab CP03 T8)
· kamo-internal
Squadre sulla scheda membro e nella directory (KamoCollab CP01 T25)
La carta dei membri mostra le squadre di un membro del team sotto il loro titolo e reparto: fino a tre chip nell'ordine del server, poi "+n", il cui tooltip nomina il resto. Una carta senza squadre, o la cui squadra ha letto fallito (i team lasciati, CP01-T16-1), non disegna la squadra. Remi di directory portano team attraverso normalzeDirectoryPerson, filterPeople corrisponde a un team titolo, e il membro picker mette fino a due titoli di squadra e "+n" su un linea di dettaglio della persona, accanto al dipartimento, con l'intera linea nella sua tooltip. Un parser (app/lib/teams/teamRefs.ts) legge [{id, title}] per Entrambi.
· kamo-shared-library
Il modello di noleggio per lo strato ORG, PERSONALITÀ e DocsTION — il vocabolario, le dodici colonne di articoli, l'oggetto charter di org, gli archetipi di org e i loro repository; la validazione rifiuta ancora le nuove sezioni (KamoCollab CP03 T7)
CharterLevel aggiunge ORG dopo il TEAM di CP01; CharterRule aggiunge TRAIT e COLLAB; CharterSection aggiunge PERSONALITÀ (TRAIT, 160) e DocsTION (COLLAB, 60), sia aiOnly che non soppresso; CharterValidationReason aggiunge AUTHORITY LANGUAGE e GROUP INCONSISTENT. CharterItem, CharterItemData e CharterItemDTO portare i dodici campi di spec sezione 5.2, e scrivere, toData, toDto, rifiutareFields e CharterView. elemento portarli (scrittura rifiuta un numero un SMALLINT non può contenere). MAX ITEMS PER OWNER è 500 (D4). Fino al compito 12, convalidare rifiuta una voce PERSONALITÀ o DocsTION con UNKNOWN SECTION, e I marcatori sono rifiutati a ORG come a ROLE (D2). Nuovo ArticoloMark per la sezione risolutori. Nuove entità OrgCharterItem (org charter items), OrgPersonalità Archetipo e OrgPersonalità ArchetypeItem con i loro repository e conteByArchetypeRef sul ruolo, il dipartimento, il titolo di lavoro e i repository di articoli membri. Il controllo del titolo confronta inferiore() come l'indice unico. Le colonne e le tabelle esistono produzione (CP03 Task 3).
· kamo-internal
Lo specchio conosce PERSONALITÀ e DocsTION (nascosto fino al CP09), il livello ORG e i tipi di personalità e Docstion risolti (KamoCollab CP03 T21)
- sezioni.ts: SectionSpec.editor; le due sezioni allegate al falso editore; regole TRAIT e COLLAB; sezioniInBand elenca solo sezioni modificate; MAX ITEMS PER OWNER 500 (D4). - item.ts: nascondere i marcatori rifiutati a ORG invece di ROLE (D2); le sezioni che l'editor non modifica sono contato verso il tappo e altrimenti lasciato al server, come quelli sconosciuti (D21, D22). - type.ts: livello ORG, OUT OF BOUNDS, i dodici campi dell'oggetto, risolto. personalità e risolto. Docstion per spec 5.6.4. - I conti del pannello di anteprima e i chip della galleria del modello saltano le sezioni nascoste. - Nuovo test charterSectionParity legge CharterSection.java e CharterItems.java.
· kamo-internal
Testa di un dipartimento — la colonna di testa (nome, Vacant, Inactive), il campo di dialogo Head e picker (personale attivo; membri AI elencati ma non selezionabili), impostato attraverso PUT .../head dopo il salvataggio del dipartimento; e il manager di un membro diventa un amministratore per cambiare sulla scheda di posizione (KamoCollab CP02 T23)
· kamo-shared-library
PersonalityTextLint — i sette modelli di autorità-lingua di spec §5.9, il look-forward e {orgShortName} eccezioni, apostrofe tipografiche e spaziatura Unicode (KamoCollab CP03 T6)
· kamo-internal
Squadre sul modulo creato-membro, per una persona e per un noleggio AI (KamoCollab CP01 T24A)
/settings/team-member/nuovi guadagni Teams sulla sua scheda Role: una scelta multipla le squadre dell'organizzazione (il cliente delle squadre), offerte a chiunque potrebbe cambiare team di un membro sul profilo (teamsEditAtCreate, campo Teams posizioneVista: MANAGE MEMBER SECURITY), e nascosto altrimenti. Le scelte uscire come teamIds, per una persona e per un noleggio AI (aiHirePayload mantiene loro); nessuna scelta, nessuna chiave. Un rifiuto delle squadre (400/403/409 con campo teamIds) mostra sul campo e nel banner, nel dizionario parole in cui ha loro, NON ALLOWED incluso. Anteprima noleggio di un AI ora include le squadre scelte, lo strato TEAM che inizierà con. Il vivo i nomi delle squadre.
· kamo-shared-library
Link di tendenza — integer derivano, il minimo movimento inverso con il trasporto a due tempi, e le due porte (KamoCollab CP03 T5)
Le tendenze di debolezza sono "controlli propri, collegati e opzione per essere pienamente indipendente» (decisione 6). TendencyLinks.LINKS detiene i sette link di CP03 spec §5.4; derivare è 2.5 x (s - pivot) arrotondato metà su in interi; inverse rotonde la somma di destinazione una volta e porta un morsetto Il termine è breve all'altro termine (rulings CP03-T5-1..3).

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