Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· KlusterServices
Richiedere la chiave API e ammettere solo RAGService
· EmailService
Invio di posta ha bisogno di un posto, per persone e membri dell'AI allo stesso modo
Un membro senza un sedile autorizzato viene rifiutato con il corpo condiviso 403 SEAT REQUIRED prima di tutto viene inviato: POST /api/email/send, la casella di posta condivisa invia, e i quattro percorsi meeting-invita (inviare, aggiornare, annullare, rispondere). Un evento di calendario salva chiede per il solo quando invita i suoi ospiti via e-mail (sendInvites true, notificaByEmail non falso): il calendario finestra di dialogo e KamoMobile inviare notificaByEmail true su ogni salvataggio, quindi un voce del calendario normale rimane aperto a tutti. Le vie interne non lo chiedono mai. La distribuzione prende anche il proprio NATS login (nats-user-email), il Redis ACL login (redis-auth) e il segreto interno KamoAI.
· MediaService
Incontri, chat di gruppo, allegati e chiamate hanno bisogno del posto che li include
· kamo-internal
Il raccoglitore di chat elenca solo i modelli che il membro può scegliere
Il raccoglitore ha letto l'elenco dei modelli dell'amministratore (403 senza MANAGE AI MODELS) e i fornitori offerti, che non ha mai selezionato un modello. Ora legge GET /api/ai/modelli/selezionabili attraverso un nuovo percorso BFF, abbassa le opzioni del fornitore, sposta una conversazione fornitrice di nuovo in Auto, e mantiene il fornitore ordine AIService invia (la priorità dell'organizzazione) invece di riscuoterlo per nome.
· InitializerService
Migrazione per org alias domains, vedendo la piattaforma
Crea # E sementi la piattaforma # (is top level) con kamouniverse.com (default, portando avanti il vecchio hardcoded platform.mail.domain) e kontak.kamocrm.com (addizionale, non predefinito). Applicato direttamente alla produzione prima di questo impegno — questo servizio è eseguito manualmente contro il DB, non distribuito — quindi la tabella esiste già; questa è la fonte di record per il prossimo ambiente fresco o ri-run. La biblioteca è stata accolta da 1.6.2 per il fatto che..
· EmailService
Leggi il predefinito alias-domain del compositore da org alias domains
Ho usato un dominio hardcode. (platform.mail.domain, kamouniverse.com) come predefinito send-as, e Solo per la piattaforma. Leggi OrgAliasDomainRepository invece: qualsiasi org può registrare qualsiasi numero di alias domini ora, ciascuno offerto come identità send-as sul primario del membro mailbox, con la riga di default-flagged dell'org ancora prepensa come la di default del compositore esattamente come kamouniverse.com era. La biblioteca è stata accolta da 1.6.2 per il fatto che..
· kamo-shared-library
Aggiungi org alias domains, la forma per-org del dominio della piattaforma mail
Generalizza il singolo hardcoded platform.mail.domain (kamouniverse.com, e solo per la piattaforma org) in una tabella qualsiasi org può contenere qualsiasi numero di righe In. SendableMailboxService di EmailService lo legge per offrire ogni dominio come un send-as identità sulla casella di posta primaria di ogni membro, stesso meccanismo come prima.
· SecurityService
Il kill switch AI può essere letto da chiunque abbia il diritto
· kamo-internal
AI Platform Services e AI Kill Switch diritti della piattaforma
· kamo-internal
L'applicazione AI Workforce e i suoi quattro diritti; l'app-mirror guard legge di nuovo Java
· AIService
Una tabella di percorso decide chi può chiamare ogni percorso AIService
· kamo-shared-library
Un prefisso privato di posta in arrivo per i nuovi servizi, e il LOS webhook lavoratore è opt-in
· kamo-shared-library
I servizi effettuano l'accesso a Redis con un nome utente e una password
· kamo-shared-library
Regola di un sedile per la console e ogni servizio che lo impone
Il risolutore legge il membro con la sua organizzazione presa e non apre transazione propria, quindi un sedile è deciso correttamente su un filo senza contesto di persistenza (l'AI WebSocket) e una lettura fallita fallisce davvero aperto invece di gettare UnexpectedRollbackException oltre la cattura.
· KlusterServices
Accedi a Redis come mail rspamd
rspamd legge la sua password da posta segreta/rspamd-redis-auth, incluso in local.d/redis.conf. Il pod guadagna fsGroup 11333: l'immagine corre come 11333:11333 e una radice:root 0440 Il file segreto è un permesso fatale negato al carico di configurazione.
· kamo-shared-library
Servizi di piattaforma AI e uccidere i diritti di commutazione, e la colonna dell'interruttore
· KlusterServices
Utenti ACL per la piattaforma, rspamd e gli operatori (default still open)
· kamo-shared-library
Visualizzare, supervisionare, approvare e gestire la forza lavoro AI (329-332)
· KlusterServices
Un login per carico di lavoro nell'account KAMO, accanto a kamo svc
· kamo-shared-library
AI Workforce app, al di fuori del confine PHI e mai automatico
· kamo-internal
Scegliere come una domanda pubblicata pone le sue domande
"Pubblichiamo questa applicazione" (Impostazioni → Caratteristiche → CRM → Vendors & Prodotti) ora porta tre scelte accanto alla chat, ogni un paio di carte che dicono quello che significa: - Tipo: Normale (alcune domande relative al passaggio) o Squeeze (una domanda per schermo, ciascuno spiegato in parole semplici). - Informazioni di contatto: Inizio (nome, email e telefono prima, salvato il momento in cui sono entrato, quindi una domanda abbandonata è ancora un vantaggio) o Last (il prestito prima, contattare i dettagli appena prima dell'invio; niente salvato fino ad allora). - Campi: Pieno o Fondamentale (solo quello che serve una prima chiamata). Un'anteprima dal vivo accanto a loro ridisegna la prima schermata, l'ordine della sezione (contatto — quante domande, e quando il piombo viene salvato. La finestra di dialogo è `md` quindi entrambi si adattano fianco a fianco. Le scelte viaggiano sul PUT esistente .../applicazione (securityservice d345869), round-trip attraverso l'elenco dei fornitori e prefill quando la finestra di dialogo viene riaperto. Riaprire una pagina live ora dice "Salva modifiche" / "Impostazioni di applicazione salvate". piuttosto che pubblicarlo di nuovo, e la sua icona di riga è un cursore impostazioni piuttosto che una bolla di chat, dal momento che si apre più della chat.
· kamo-apps
Le scelte di layout del prestatore — premere, contattare prima o ultimo, di base
L'applicazione di ipoteca ora si pone fuori come il prodotto è stato pubblicato (Impostazioni → Caratteristiche → CRM → Pubblica questa applicazione): NORMAL è i cinque passi raggruppati come prima. SQUEEZE fa una domanda per schermo: un sopracciglio che dice dove sei, la domanda nel display faccia, una linea in lingua normale su che cosa significa e perché è chiesto, allora uno Rispondi. I campi condividono uno schermo solo quando sono parti di una risposta (un nome, un indirizzo, un agente e la loro società). Toccare una scelta si muove dopo una beat; la tastiera seleziona con frecce e si muove su con Invio. La rotaia riempie domanda per domanda. - Informazioni di contatto. START chiede chi è il mutuatario prima, e salva il comando momento c'è un nome e un'e-mail — dietro una prova invisibile di lavoro, il stesso il pulsante di invio ha bisogno — quindi aggiunge ogni risposta successiva a quella guida attraverso un token, e l'invio finale lo termina piuttosto che depositare un secondo. La pagina dice così accanto alle domande di contatto. LAST sposta il contatto a poco prima consenso, e nulla viene salvato fino all'invio del modulo. - Campi. BASIC mantiene nome, e-mail, telefono, scopo, come la casa sarà utilizzata, stato e ZIP, prezzo o valore, pagamento o saldo, e credito. Il testo di aiuto assume che il lettore non sappia nulla: pagamento in giù, punteggio di credito, HOA, tasse, assicurazione, i programmi di prestito e i tipi di proprietà sono spiegati dove si chiedono. Senza risposta sì/no domande rimanere null (skipped o non ancora raggiunto) invece di arrivare come "no". Anche fisso, entrambi vivono oggi: il paragrafo del consenso non ha mai nominato il prestatore ("tu dare il vostro espresso consenso scritto per contattarvi" — una funzione passata come L'argomento ICU non ha reso nulla), e la ricevuta "Una copia sta andando a ." ha lasciato l'indirizzo allo stesso modo. Il consenso non inizia più con un minuscolo "qualcuno". Punti positivi: E' il momento giusto. (POST) e /progress/{token} (PUT), condividere la X-Forwarded-Per gestire con la presentazione. Necessità del servizio di sicurezza d345869 per il layout e gli endpoint di progresso; contro un vecchio backend il modulo è il modulo raggruppato, pieno, primo contatto e il primo prima salvare 404s una volta e si ferma.
· kamo-internal
La scheda sessione smette di indossare l'icona di Guacamole
Una scheda di sessione è il documento di Guacamole, quindi il suo <link rel="icon" href="images/logo-64.png"> possiede la scheda, e un membro che apre il computer della loro azienda guarda l'icona trasformarsi in un La terza parte. Mantenere la scheda sull'origine di Kamo e inquadrare la sessione avrebbe mantenuto la icona dell'organizzazione; il gateway risponde a ogni computer.* percorso con X-Frame-Opzioni: DENY, in modo che non sia disponibile. Il gateway risponde per quei due file invece. Ovunque ICON è deceduto dall'OST, e il tempo che l'Assistenza è di nessuno. Una richiesta icona è una semplice immagine GET rilasciato mentre il browser rende di terze parti documento. Non ha sessione e nessun segno, quindi l'host è l'unico segnale che c'è. Su una i propri computer dell'organizzazione. Sulla piattaforma condivisa host non è: risuonare da host ci nomina il PLATFORM, come layout. tsx già dice — «che è l'inquilino di nessuno". Così l'host piattaforma deliberatamente si risolve a nessuna organizzazione e ottiene un glifo non marcato. Ogni organizzazione il cui dominio non è ancora vivo condivide che ospitano, e dipingendo il marchio di KamoCRM sulla scheda di un inquilino è la cosa esatta che un'etichetta bianca esiste per prevenire - mentre cerca, da qui, indistinguibile dal lavoro. È anche indistinguibile dalla risposta corretta per I membri di KamoCRM, motivo per cui non vi è alcuna eccezione scolpita per loro. Nulla deve cambiamento per un'organizzazione per ottenere la propria icona: il momento in cui i suoi computer ospitano è dal vivo, il host lo nomina e il percorso lo risolve. Il glifo è un semplice profilo del monitor in ardesia, nessun marchio affatto, alle due dimensioni Guacamole Dichiara. L'icona di un'organizzazione viene risolta alias -> config.json -> favicon set, la stessa catena DynamicMetaLoader utilizza, e ogni guasto lungo esso ricade sul glifo: un favicon è non vale la pena di perdere una pagina, e un marchio sbagliato è peggio di nessun marchio. Il ROUTE vive in kamo, non BESIDE THE REST of the GATEWAY IN hosting-computer. Traefik corre con consentireCrossNamespace e consentireExternalNameServices sia al loro default di falso, quindi un IngressRoute là non può raggiungere kamowebinternal-service, e accendere o bandiera è un cambiamento a livello di cluster per raggiungere un favicon. Il certificato è già rilasciato in questo namespace, così il percorso si trova accanto al servizio che inoltra e CI applica con il codice. temaPublicBase viene estratto in modo che il layout del secchio è scritto una volta: Theme.tsx è "usare client" e il server aveva bisogno della stessa forma.
· kamo-internal
Avviare nei mercati CRM, sulla pagina principale, e sui profili dei membri
- Mercati: "Arive" si unisce al menu a tendina MLOS, e la finestra di dialogo Configure contiene i quattro ganci Zapier (solo scrittura, mascherato), gli indirizzi Arive → Kamo incollare in Zaps, lo stadio → mappa di stato, la creazione di piombo e interruttori scenici, una guida di configurazione e il registro di attività della connessione. Configure è ora una lista dei permessi: un provider con nulla da configurare più tempo ottiene un pulsante abilitato che non fa nulla. - Pagina principale: LosHeaderActions rende gli stati di ciascun fornitore — MeridianLink invariato; Arive creare → in attesa di Arive (resendable dopo 15 min, con una conferma) → aperto ad Arive con la sua fase, convertito per un piombo arive, e un chip sincronizzato. Un link in sospeso rilegge il mercato configura ogni 10 s così si trasforma in "Apri in Arive" senza un reload. - Profilo: la carta Lender salva ancora (non poteva da quando la ricostruzione del profilo, c20bac57). Ogni riga di mercato modifica da solo: MeridianLink prende nome utente + segreto, Arive the member's Arive login e-mail. - MarketConfig.mlosProvider è l'unione del fornitore, non una stringa nuda. Specifica: E' il momento giusto
· SecurityService
Scelte di layout, e salvare i dettagli di contatto mentre vanno
La finestra di dialogo pubblica ora sceglie come l'applicazione pubblica ipoteca si pone out (kamo-shared-library ac83bea1): NORMAL o SQUEEZE, dettagli di contatto al domande START o LAST, FULL o BASIC. - E' una domanda. Layout, applicazioneContactStep e applicazioneFieldSet; uno mancante mantiene ciò che è memorizzato, quindi ritirare una pagina non ripristina mai il suo layout. La risposta li risuona. - GET /public/loan-applica/{p} risponde il layout {type, contactStep, fieldSet}, sempre risolta. Per un prodotto START solo (404) altrimenti): *** non chiuso, invio di bilancio IP, nome + e-mail richiesto. Crea il piombo con la fonte "Applicazione di prestito online (non finita)" e le risposte un token a 256 bit tenuto in Redis per un giorno, scritto all'interno della transazione in modo da un Redis fallimento rotola il piombo indietro piuttosto che garantire un duplicato. E' una cosa che non va. aggiunge risposte a questo vantaggio tramite updateLead (absent = invariato). Token legato al prodotto. - POST /public/loan-applica/{p} con progressRifiniture token che portano (fonte "Applicazione di prestito online", ricevuta come prima) invece di depositare un seconda; un token sconosciuto o scaduto file un nuovo piombo come prima. - La proprietà del piombo è controllata BEFORE updateLead piuttosto che catturarne eccezione: è @Transactional e contrassegnare la richiesta solo rollback. Ratchet baseline: startProgress e saveProgress aggiunto con le loro ragioni, e byHost (aggiunto in linea principale da 81e0756 senza linea, che ha lasciato il rosso ratchet).
· kamo-shared-library
Scelte di layout per una domanda di prestito pubblicata
Tre colonne su LEAD VENDOR PRODUCTS, scelte nella finestra di dialogo di pubblicazione e lette da kamo-apps per porre il modulo pubblico mutuo fuori: - APPLICATION LAYOUT NORMAL (passi raggruppati) | SQUEEZE (una domanda per schermo) - APPLICAZIONE CONTACT STEP START (contatta prima, salvata come vanno) | LAST - APPLICAZIONE FIELD SET COMPLETA stringhe di pianura, non @Enumerated, quindi nessun costrizione di CHECK ddl-auto congela il valore set. Null legge come NORMAL / START / FULL, il modulo come era. Il DTO trasporta valori risolti; setProductApplication guadagna un sovraccarico prendendo le opzioni, con i membri null che significano "cuore", e la vecchia firma gli delegati invariati. DDL ha già applicato al cluster come proprietario: ALTER TABLE public.lead vendor products ADD COLUMN IF NOT EXISTS application layout varchar(16); ALTER TABLE public.lead vendor products ADD COLUMN IF NOT EXISTS application contact step varchar(16); ALTER TABLE public.lead vendor products ADD COLUMN IF NOT EXISTS application field set varchar(16);
· InitializerService
Le colonne e le attività registrano le mappe di integrazione Arive
Non e' vero. (unique), i campi di collegamento Arive su lead los links (kind, GUID, deep link, stage, pendenti, ultimo errore) e los sync events. Tutto nulla, niente backfill; @Order(0) perché le entità mapparli. Già applicato a Yugabyte a mano (come il proprietario, kamo) prima del spinta condivisa-libraria; questo mantiene un ambiente fresco in fase.
· APIService
L'indirizzo pubblico Zapier pubblica gli eventi
E' il momento in cui... AriveInboundController di SecurityService, che possiede il controllo di token. The stringa di query (l'evento) attraversa il hop, un corpo forma il contenitore già parsed è ricostruito dai suoi parametri, e lo stato di SecurityService è passato attraverso as-is: Zapier mostra un compito non-2xx come errored, che è dove il persone che mantengono lo Zap guarderanno. Un token malformato non lascia mai il bordo.
· SecurityService
Avviare attraverso Zapier — connessione, eventi in entrata e azioni per-lead
Un mercato legato a Arive ottiene una connessione (quattro Zapier Catch Hooks per create-loan, update-loan, update-lead e convert-lead, plus one inbound URL il cui token è conservato come hash) a # Con un registro delle attivita' # rotazione token e "send a sample" in modo che Zapier possa imparare i campi di ogni gancio. Arive's triggers post to**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** JSON o forma corpi (di default di Zapier), riconosciuti dal nostro crmReferenceId, l'Arive GUID, il display id, o — per un piombo convertito all'interno di Arive — il mutuatario E-mail. I record riconosciuti applicano Arive-wins; una nuova fase muove il Kamo stato attraverso la mappa di fase della connessione; record sconosciuti diventano lead assegnato al membro Arive nomi come ufficiale, e il nostro uid è rimandato indietro. Ogni risultato è registrato, e nulla risponde a un silenzioso 200. La pagina principale crea/aperta invia sul mercato: Arive risponde 202 PENDING (conferma asincronamente) e aggiunge /convert. Mappa dei membri essi stessi alla loro e-mail Arive (nessun segreto, nessun NMLS, un membro per e-mail per mercato). Il LO-XML applicare endpoint ora rifiuta non-MeridianLink fornitori invece di applicare una patch all-null.
· kamo-internal
Avviare una sessione di coder nel cloud, e mostrarlo sulla finestra
che elenca i controlli git sulla macchina dev (più recentemente lavorato in modello e sforzo del membro. La macchina costruisce il comando, con CCR FORCE BUNDLE=1 così il checkout locale viene caricato piuttosto che clonato da un telecomando GitHub non abbiamo. Il terminal che apre porta `cloud: true` nei suoi oggetti, e il titolo bar e scheda massimizzata disegnare una nuvola sulla sua icona terminale (windowIcon). Un prop piuttosto che un nodo icona, quindi sopravvive a un reload; riapertura da l'elenco terminale riporta il marchio della macchina alla finestra.

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