Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· KlusterServices
Necesită cheia API și admite numai servicii LAR
· EmailService
Trimiterea de e-mail are nevoie de un loc, pentru oameni și membri AI deopotrivă
Un membru fără un loc autorizat este refuzat cu corpul comun 403 SEAT REquired înainte de orice este trimis: Post /api/email/trimite, căsuţa poştală comună trimite, şi patru trasee de întâlnire-invita (trimite, actualiza, anula, raspunde). Un eveniment calendar salvează cere loc numai atunci când invită oaspeții prin e-mail (trimiteinvită adevărat, anunțăByEmail nu fals): dialogul calendar și KamoMobile trimite notificareByEmail adevărat pe fiecare salvare, astfel încât Intrarea în calendar e deschisă tuturor. Rutele interne nu întreabă niciodată. Desfășurarea ia, de asemenea, propria conectare NATS a serviciului (nats-user-email), Redis Autentificare ACL (redis-auth) și secretul intern KamoAI.
· MediaService
Reuniunile, chat-urile de grup, atașamentele și apelurile au nevoie de scaunul care le include
· kamo-internal
Selectorul de chat enumeră doar modelele pe care membrul le poate alege
Culegatorul a citit lista de modele a administratorului (403 fără MANAGE AI MODELS) și furnizorii oferiți; care nu a ales niciodată un model. Acum citeşte GET /api/ai/modele/selectabile printr-o nouă rută BFF, scade opțiunile de furnizor, mută un furnizor-pinned conversație înapoi la Auto, și păstrează furnizor comanda AIService trimite (prioritatea organizației) în loc de re-sortare-l după nume.
· InitializerService
Migrație pentru org alias domenii, însămânțarea platforma org două
Creează *************** si seminteaza platforma org (is top nivel) cu kamounivers.com (default, care transportă mai departe vechiul platforma hardcoded.mail.domain) și kontak.kamocrm.com (în plus, nu implicit). Aplicat direct la producție înainte de acest angajament este rulat manual împotriva DB, nu a fost implementată Aceasta este sursa de înregistrare pentru următorul mediu proaspăt sau re-run. Libraria kamo-împărţită a ajuns la 1.6.2 pentru *************
· EmailService
Citește alias-domeniu implicit al compozitorului din org alias domenii
***************** a folosit un domeniu hardcodat (platform.mail.domain, kamo universe.com) ca un sintetic trimite-ca implicit, și Doar pentru platforma org ***************** Citiri OrgAliasDomainRepository in schimb: orice org poate înregistra orice număr de alias domenii acum, fiecare oferit ca o trimitere-ca identitate pe primarul membrului căsuță poștală, cu rândul default-flagged al orgului încă pregătit ca Compozitor implicit exact ca kamo univers.com a fost. Libraria kamo-împărţită a ajuns la 1.6.2 pentru *************
· kamo-shared-library
Adaugă org alias domenii, forma per-org a domeniului de corespondență al platformei
Generalizează platforma hardcoded unică.mail.domain (kamo universe.com, și numai pentru org platforma) într-o masă orice org poate deține orice număr de rânduri in. Emailservice's Sendable MailboxService îl citește pentru a oferi fiecare domeniu ca un trimite-ca identitate pe cutia poştală a fiecărui membru, acelaşi mecanism ca înainte.
· SecurityService
Întrerupătorul poate fi citit de cine are dreptul
· kamo-internal
Serviciile platformei AI și drepturile platformei AI Kill Switch
· kamo-internal
Aplicația AI Workforce și cele patru drepturi ale sale; paznicul aplicației oglindă citește din nou Java
· AIService
Un tabel de rute decide cine poate apela fiecare rută AIService
· kamo-shared-library
Un prefix inbox privat pentru noi servicii, iar lucrătorul LOS webhook este opt-in
· kamo-shared-library
Servicii autentifică-te la Redis cu un nume de utilizator și parolă atunci când este dat unul
· kamo-shared-library
O regulă a scaunului pentru consolă și fiecare serviciu care o aplică
Rezolvatorul citeste membrul cu organizatia sa adus si deschide nu tranzacție proprie, astfel încât un scaun se decide corect pe un fir cu nr. Contextul persistenţei (AI WebSocket) şi o citire eşuată dau greş În loc să arunci un Rollback neaşteptat, cu excepţia faptului că ai trecut de captură.
· KlusterServices
Autentifică-te pe Redis ca postă rspamd
rspamd citește parola de la Secret mail/rspamd-redis-auth, inclus în local.d/redis.conf. Pod câștigă fsGroup 11333: imaginea rulează ca 11333:11333 și o rădăcină:root 0440 Fișierul secret este o permisiune fatală respinsă la sarcina de configurare.
· kamo-shared-library
Servicii de platformă AI și ucide drepturile comutatorului, și coloana comutatorului
· KlusterServices
Utilizatori ACL pentru platformă, rspamd și operatori (default încă deschis)
· kamo-shared-library
Vizualizați, supravegheați, aprobați și gestionați forța de muncă AI (329-332)
· KlusterServices
Un login per volum de lucru în contul KAMO, alături de kamo svc
· kamo-shared-library
Aplicație AI Workforce, în afara limitelor PHI și niciodată automată
· kamo-internal
Alegeți modul în care o aplicație publicată pune întrebări
"Publicați această aplicație" (Setări → Caracteristici → CRM → Vendori & Produse) acum poartă trei opțiuni lângă chat, fiecare o pereche de cărți care spun ceea ce ei medie: - Tip: Normal (câteva întrebări legate de fiecare etapă) sau Squeeze (o întrebare per ecran, fiecare explicat în cuvinte simple). - Informatii de contact: Start (nume, email si telefon intai, salvate in momentul in care acestea sunt intrat, astfel încât o cerere abandonată este încă un plumb) sau Ultima (împrumutul mai întâi, datele de contact chiar înainte de a trimite; nimic salvat până atunci). - Câmpuri: Complet sau de bază (doar ceea ce are nevoie un prim apel). O previzualizare live alaturi de ei redeseneaza primul ecran, ordinea sectiei (contact Slides vizibil la sfârșitul anului) și ceea ce împrumutatul se va întâlni și când plumbul este salvat. Dialog-ul este Opțiunile de călătorie pe PUT existent .../cerere (service de securitate d345869); Du-te prin lista de furnizori, și prefill atunci când dialogul este redeschis. Redeschizând o pagină live acum spune "Salvați modificările" / "Setări de aplicare salvate." mai degrabă decât publicarea din nou, și pictograma rând este un slider setările mai degrabă decât un balon de chat, deoarece se deschide mai mult decât chat.
· kamo-apps
Opțiunile de aspect ale creditorului
Cererea de ipotecă se expune acum ca produsul a fost publicat (Setări → Caracteristici → CRM → Publică această aplicație): NORMAL este de cinci etape grupate ca înainte. Squeeze pune o întrebare pe ecran: o sprânceană care spune unde te afli, întrebarea din ecran fata, o linie de limba simpla pe ceea ce inseamna si de ce se cere, apoi unul Răspunde. Câmpurile împart un ecran numai atunci când sunt părți dintr-un singur răspuns (un nume, o adresă, un agent și compania acestora). Tapping o alegere trece mai departe după o bate; tastatura alege cu sageti si trece mai departe cu Enter. Sinele se umplu întrebare cu întrebare. - Informaţii de contact. START întreabă cine este primul împrumutat, și salvează plumb moment există un nume și un e-mail în spatele unei dovezi invizibile de muncă, același buton de trimitere are nevoie un semn, și trimite finală îl termină mai degrabă decât depunerea o secundă. Pagina spune acest lucru pe lângă întrebările de contact. Ultima mutare de contact la doar înainte de consimţământul şi nimic nu este salvat până când formularul nu este trimis. - Fields. BASIC păstrează numele, e-mailul, telefonul, scopul, modul în care casa va fi utilizată, statul și ZIP, prețul sau valoarea, plata sau soldul în jos și creditul. Mesajul de ajutor presupune că cititorul nu ştie nimic: plata în jos, scorul de credit, HOA, taxe, asigurări, programe de împrumut și tipuri de proprietate sunt fiecare explicate unde sunt întrebaţi. Fără răspuns da/nu există întrebări sejur nul (scuțit sau nu încă ajuns) în loc de a ajunge ca "nu." De asemenea, fixe, ambele trăiesc astăzi: paragraful de consimțământ nu a numit niciodată creditorul ("tu da acordul dvs. scris expres pentru a vă contacta" Argumentul ICU nu a adus nimic), iar chitanţa "O copie este în drum spre." Am lăsat adresa la fel. Consimțământul lead-in nu mai începe cu o Lowcase "cineva." Proxies: Nu-ţi face griji. (POST) și/progress/{token} (PUT), partajarea X-forwarded-Pentru manipularea cu depunerea. Necesită serviciul de securitate d345869 pentru structura și obiectivele de progres; împotriva un suport mai vechi formularul este grupat, complet, primul formular de contact și primul Mai devreme salvaţi 404 odată şi opriţi.
· kamo-internal
Fila de sesiune nu mai poartă pictograma lui Guacamole
O sesiune tab este documentul lui Guacamole, astfel încât propriul său <link rel="icon" href="images/logo-64.png [62] deține fila, și un membru deschiderea calculatorului companiei lor se uită pictograma transforma într-o A treia parte. Păstrarea filei privind originea lui Kamo și încadrarea sesiunii ar fi păstrat pictograma organizației; poarta răspunde la fiecare calculator.* traseu cu X-Frame-Options: DENY, aşa că nu este disponibil. Poarta răspunde pentru cele două dosare. A cărui imagine este decisă de ostatic, şi uneori răspunsul nu este al nimănui. O cerere de pictogramă este o imagine simplă GET emis în timp ce browser-ul redă o terță parte document. Ea nu poartă nici o sesiune și nici un semn, astfel încât gazda este singurul semnal există. Pe o propriul computer al organizaţiei. Pe platforma comună gazdă nu este: rezolvarea prin gazda nume acolo PLATFORM, ca aspect. Tsx spune deja Nimeni nu e chiriaş." Deci, gazda platformei se rezolvă deliberat la nici o organizație și devine un glif nemarcat. Fiecare organizație a cărui domeniu nu este încă live împărtășește că gazda, și pictura marca KamoCRM pe tab-ul unui chiriaș este exact ceea ce există o etichetă albă pentru a preveni aici, imposibil de distins de la locul de muncă. De asemenea, este imposibil de distins de răspunsul corect pentru Membrii proprii ai KamoCRM, motiv pentru care nu există nici o excepție sculptat pentru ei. Nimic nu trebuie să schimbare pentru o organizație pentru a obține propria pictogramă: momentul în care gazda calculatoarelor este live, gazda o numeşte şi ruta o rezolvă. Glifa este un contur simplu de monitor în tabla, nici o marcă, la cele două dimensiuni Guacamole declară. Pictograma proprie a unei organizații este rezolvată alias -> config.json -> favicon set, același lant DynamicMetaLoader folosește, și fiecare eșec de-a lungul acesteia cade înapoi la glif: un favicon este nu merită să pici o pagină, iar o marcă greşită e mai rea decât nicio marcă. CALEA locuiește în kamo, nu în afară de restul Galeway în-hosted-computers. Traefik fuge. cu permisCrossNamespace și permitServiciuri cu nume externe atât în lipsa lor de fals, astfel încât IngressRoute de acolo nu poate ajunge la kamowebinter-service, și de cotitură pe nici un steag este un schimbare la nivel de grup pentru a ajunge la un favicon. Certificatul este deja eliberat în acest namespace, astfel încât ruta se află lângă serviciul pe care îl transmite și CI îl aplică cu codul. temaPublicBase este extras astfel încât aspectul găleată este scris o dată: Tema.tsx este "Foloseşte clientul" şi serverul are nevoie de aceeaşi formă.
· kamo-internal
Arive pe piețele CRM, pe prima pagină și pe profilurile membrilor
- Piete: "Arive" se alătură dropdown MLOS, iar dialogul de configurare deține cele patru cârlige Zapier (numai scris, mascat), Arive → Kamo adrese la pastă în Zaps, etapa → harta de stare, crearea de plumb și switch-uri de etapă, un ghid de configurare și jurnalul de activitate al conexiunii. Configurează este acum o listă de permise: un furnizor cu nimic pentru a configura nr. mai mult devine un buton activat care nu face nimic. - Pagina de plumb: LosHeaderActions redă statele fiecărui furnizor neschimbat; Arive crea → de așteptare pentru Arive (retrimis după 15 minute, cu o confirmare) → deschis în Arive cu etapa sa, converti pentru un plumb Arive, şi un cip cu probleme de sincronizare. O legătură în așteptare re-citește piața configurează fiecare 10 s astfel încât să se transforme în "Deschide în Arive" fără o reîncărcare. - Profil: cardul de acreditare Lender salvează din nou (nu a putut deoarece C20bac57). Fiecare rând de piață editează pe cont propriu: MeridianLink ia numele de utilizator + secret, Arive Arive membru de conectare e-mail. - MarketConfig.mlosProvider este uniunea furnizorilor, nu un șir de caractere goale. Spec: Nu-ţi face griji
· SecurityService
Alegeri de aranjament, și de economisire detalii de contact ca acestea merg
Dialogul de publicare alege acum modul în care se depune cererea de ipotecă publică out (kamo-shared-library ac83bea1): NORMAL sau Squeeze, datele de contact la Începe sau last, complet sau întrebări de bază. - Pune-le pe toate. Aranjament, aplicațieContactStep și aplicareFieldSet; o lipsă păstrează ceea ce este stocate, astfel încât retragerea unei pagini nu resetează aspectul său. Răspunsul le face ecouri. - GET /public/loan- application/ {p} raspunss layout {type, contactStep, fieldSet}, Mereu rezolvat. - POST *************************** pentru un produs START (404 Altfel): *** eșuați, depunerea bugetului IP, numele + e-mailul necesar. Creează plumbul cu sursa "Online Loan Application (neterminate) " și răspunsuri un simbol 256 biți deținute în Redis pentru o zi, scris în cadrul tranzacției astfel încât Redis eşecul întoarce plumbul în loc să garanteze un duplicat. - Pune-o aici. adaugă răspunsuri la această pistă prin updateLead (absent = nemodificat). Token legat de produs. - Aplicare post/public/împrumut/ {p} cu progresToken termină care conduce (sursa "Aplicație de împrumut online," primire ca înainte) în loc de depunerea unei al doilea; un jeton necunoscut sau expirat fişiere un nou plumb ca înainte. - Proprietatea de plumb este verificată ÎNAINTE de actualizare Mai degrabă decât prin capturarea acestuia excepţie: este @Transacţional şi va marca cererea numai-rollback. Ratchet de referință: începeți să progresați și salvați Progress adăugat cu motivele lor; și byHost (added on main by 81e0756 without a line, which left the ratchet red).
· kamo-shared-library
Opţiuni de aranjament pentru o cerere de împrumut publicată
Trei coloane pe LEAD VENDOR PRODUCTS, alese pe dialogul de publicare și citite de kamo-applics pentru a stabili formularul de ipotecă publică: - APLICation LAYOUT NORMAL (grouped steps) - CERERE CONTACT STEP START (contactează mai întâi, salvate pe măsură ce merg) - Aplicare FIELD SET FULL Stringuri simple, nu @Enumerate, astfel încât nici un ddl-auto Check constrângere îngheță valoarea set. Null citește ca NORMAL / START / FULL, forma așa cum a fost. DTO poartă s-au rezolvat valorile; setProductApplication câștigă o suprasarcină luând opțiunile, cu nul members meaning "keep," and the old signature delegates to it neschimbate. DDL deja aplicat clusterului ca proprietar: ALTER Table public.lead vendor products ADD COLUMN DACĂ NU EXISTĂ aplicare layout varchar (16); ALTER Table public.lead vendor products ADD COLUMN IF NU EXISTĂ aplicație contact step varchar (16); ALTER Table public.lead vendor products ADD COLUMN DACĂ NU EXISTĂ aplicație field set varchar (16);
· InitializerService
Coloanele și activitatea jurnal hărțile de integrare Arive
- Nu. (unic), Arive link fields on lead los links (kind, GUID, link adânc, etapă, așteptare-din moment ce, ultima eroare) și los sync evenimente. Toate nulabile, fără backfill; @Order(0) deoarece entitățile harta-le. Deja aplicat la Yugabyte de mână (ca proprietar, kamo) înainte de împingere comună-librar; acest lucru menține un mediu proaspăt în pas.
· APIService
Adresa publică Zapier postează evenimente Arive la
POST ***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** AriveInboundController al Serviciului de Securitate, care deţine cecul. ă interogare șir (eveniment) traversează hop, un corp de formă containerul deja Parsed este reconstruit din parametrii săi, iar statutul Serviciului de Securitate este trecut prin as-is: Zapier arată o sarcină non-2xx ca eroare, care este în cazul în care Oamenii care-l întreţin pe Zap se vor uita. Un semn malformat nu părăseşte niciodată marginea.
· SecurityService
Arive through Zapier
O piata legata de Arive devine o conexiune (patru Zapier Catch Hooks pentru crea-împrumut, update-împrumut, update-lead și convertește-lead, plus un URL de intrare al cărui semn este păstrat ca hash) la ******************* cu un jurnal de activitate, rotaţia jetoanelor şi "trimiteţi o mostră" astfel încât Zapier să poată învăţa câmpurile fiecărui cârlig. Declanşatorul lui Arive a pornit spre *********** JSON sau forma organisme (implicit lui Zapier), recunoscut de crmReferenceId nostru, Arive GUID, ID-ul de afișare, sau E-mail. Arhivele recunoscute se aplică Arive-wins; o nouă etapă mută Kamo starea prin harta de etapă a conexiunii; înregistrările necunoscute devin piste Atribuit membrilor Arive nume ca ofițer, și uid nostru este trimis înapoi. Fiecare rezultat este înregistrat, și nimic nu răspunde la un silențios 200. Pagina principală creează/deschide expediții pe piață: Arive răspunde 202 PENSII (confirmă asincronsly) și adaugă /conversie. Harta membrilor ei înșiși la lor Arive e-mail (fără secret, fără NMLS, un membru pe e-mail pe piață). Obiectivul LO-XML aplica acum refuza non-MeridianLink furnizori, în loc să aplice un plasture complet.
· kamo-internal
Începe o sesiune de coder în nor, și arată-l pe fereastră
care enumeră verificările GIT pe aparatul de dev (cel mai recent lucrat în modelul și efortul membrilor. Masina construieste comanda, cu CCR FORCE BUNDLE=1 deci checkout-ul local este încărcat mai degrabă decât clonat De la o telecomandă GitHub pe care nu o avem. Terminalul pe care îl deschide poartă cloud: adevarat pana in recuzita sa, si titlul bar și tab maximizat trage un nor peste pictograma sa terminală (WindowIcon). Un recuzita mai degrabă decât un nod pictogramă, astfel încât să supraviețuiască o reîncărcare; redeschiderea de la Lista terminală poartă propriul semn al maşinii înapoi la fereastră.

Universul tău te așteaptă.
Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.
Gratuit pentru totdeauna — nu este necesar un card de credit