Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· kamo-internal
Membrii aleg să deruleze lista de mesaje sau să o navigheze pe pagini
Cea de-a doua coloană a încărcat mai multe scrisori decât a fost derulată. Membru poate alege acum defilare sau Pagini sub filtre ("Răspândiți lista"). Alegerea este păstrat pe membru în ui-preferences (emailListBrowse) așa că le urmează între dispozitive; Scroll rămâne implicit, astfel încât nimeni nu vede o schimbare până la Ei fac unul. Pagini arată cincizeci de mesaje la un moment dat cu primul / Anterior / Pagina X de Y / Următor / Ultima la poalele listei, și "51-100 de 1.240" în cazul în care dosarul copac are un număr (intervalul singur pentru o etichetă sau un dosar inteligent). Transformarea unui pagina înlocuiește rândurile, mai degrabă decât appending, șterge selecția și Actualizări live păstrează locul membrului: o cutie poștală schimbă reîncărca pagina pe ecran în loc de a reveni la pagina 1 și o pagină care a golit pași Înapoi unul. Rezultatele căutării păstrează propriul pager; doar prima pagină a dosarului este cached. Modurile de comutare încep din nou de sus atunci când mai mult decât Prima pagină a fost încărcată. Stringuri: kamo-translation-dictionary 135c6cc5 ***************
· kamo-internal
Membrii aleg să deruleze lista de mesaje sau să o navigheze pe pagini
Cea de-a doua coloană a încărcat mai multe scrisori decât a fost derulată. Membru poate alege acum defilare sau Pagini sub filtre ("Răspândiți lista"). Alegerea este păstrat pe membru în ui-preferences (emailListBrowse) așa că le urmează între dispozitive; Scroll rămâne implicit, astfel încât nimeni nu vede o schimbare până la Ei fac unul. Pagini arată cincizeci de mesaje la un moment dat cu primul / Anterior / Pagina X de Y / Următor / Ultima la poalele listei, și "51-100 de 1.240" în cazul în care dosarul copac are un număr (intervalul singur pentru o etichetă sau un dosar inteligent). Transformarea unui pagina înlocuiește rândurile, mai degrabă decât appending, șterge selecția și Actualizări live păstrează locul membrului: o cutie poștală schimbă reîncărca pagina pe ecran în loc de a reveni la pagina 1 și o pagină care a golit pași Înapoi unul. Rezultatele căutării păstrează propriul pager; doar prima pagină a dosarului este cached. Modurile de comutare încep din nou de sus atunci când mai mult decât Prima pagină a fost încărcată. Stringuri: kamo-translation-dictionary 135c6cc5 ***************
· kamo-internal
Șah și Hold'em bucle muzica de fundal în timp ce fereastra lor este în uz
Trei noi jocuri de sunet evenimente Holdem Lobby Bucle de șah ori de câte ori o fereastră de șah este deschisă; Hold'em joacă fundal la o masă şi muzica din hol. Fiecare este auzit numai în timp ce fereastra este fereastra în utilizare și fila browser-ul are focalizare, și dezactivat (nu altminteri. Bucla urmărește setările de sunet ale membrului live.
· kamo-internal
Șah și Hold'em bucle muzica de fundal în timp ce fereastra lor este în uz
Trei noi jocuri de sunet evenimente Holdem Lobby Bucle de șah ori de câte ori o fereastră de șah este deschisă; Hold'em joacă fundal la o masă şi muzica din hol. Fiecare este auzit numai în timp ce fereastra este fereastra în utilizare și fila browser-ul are focalizare, și dezactivat (nu altminteri. Bucla urmărește setările de sunet ale membrului live.
· kamo-internal
Imaginea cadru spune atunci când un încărca aterizează, joacă video o dată sau pe repeta, și deschide ecran complet
- Încărcăturile arată fișierul, locul său în lot și progresul octet, apoi un toast atunci când este în. - Videoclipurile unui cadru redau pe repetare (loop în timp ce arată, ținut pentru piese întregi) sau o dată (mai târziu trece arată ultimul cadru ca un încă). - Sunetul joacă doar în timp ce indicatorul este peste cadru; "Videoclipuri mute" devine "Sound on hover." - Faceți clic pe cadru întrerupe și deschide ceea ce arată ecran complet cu o descărcare, și un video jucător cu joc/pauză, reporniți, căutați, scurs/total, mut, volum și ecran complet. O închidem. reia diapozitivul cu timpul rămas.
· kamo-internal
Imaginea cadru spune atunci când un încărca aterizează, joacă video o dată sau pe repeta, și deschide ecran complet
- Încărcăturile arată fișierul, locul său în lot și progresul octet, apoi un toast atunci când este în. - Videoclipurile unui cadru redau pe repetare (loop în timp ce arată, ținut pentru piese întregi) sau o dată (mai târziu trece arată ultimul cadru ca un încă). - Sunetul joacă doar în timp ce indicatorul este peste cadru; "Videoclipuri mute" devine "Sound on hover." - Faceți clic pe cadru întrerupe și deschide ceea ce arată ecran complet cu o descărcare, și un video jucător cu joc/pauză, reporniți, căutați, scurs/total, mut, volum și ecran complet. O închidem. reia diapozitivul cu timpul rămas.
· kamo-internal
Panou de bord pentru o piață fără vânzători încă
O piață fără produse de vânzare nu poate arăta o pistă (un plumb are nevoie de o produs), așa că / conduce înlocuiește acum grila pentru acea piață cu aceeași panoul de bord utilizat atunci când nu există piețe, indicând managerii Vendors & Products. "Toate piețele" arată că nu există piață. CTA deschide setările vânzătorului pe această piață prin intermediul ?marketId=, și piete/vendors cache este re-aportat o dată pe munte în timp ce deține o piața fără produse, astfel încât se întoarce după adăugarea unui furnizor arată grila.
· kamo-internal
Panou de bord pentru o piață fără vânzători încă
O piață fără produse de vânzare nu poate arăta o pistă (un plumb are nevoie de o produs), așa că / conduce înlocuiește acum grila pentru acea piață cu aceeași panoul de bord utilizat atunci când nu există piețe, indicând managerii Vendors & Products. "Toate piețele" arată că nu există piață. CTA deschide setările vânzătorului pe această piață prin intermediul ?marketId=, și piete/vendors cache este re-aportat o dată pe munte în timp ce deține o piața fără produse, astfel încât se întoarce după adăugarea unui furnizor arată grila.
· kamo-internal
Obtinerea butonului Start Org Config Wizard devine o frontieră de atenție roșie
· kamo-internal
Obtinerea butonului Start Org Config Wizard devine o frontieră de atenție roșie
· EmailService
Un mesaj compus poartă întâlnirea sa, iar editarea calendarului cere înainte de a spune oaspeților
- /api/email/send ia întâlnireInvite: evenimentul este depus pe expeditorului calendar în aceeași tranzacție, ics plimbare pe mesajul compus cu un antet X-Kamo-Calendar-Eveniment, iar beneficiarii sunt înregistrați ca invitați. Nu. al doilea e-mail de invitaţie. - O invitaţie în calendar păstrează propriile ataşamente ale membrilor. - PUT /api/calendar/evenimente ia notificareOaspeți: adevărat ridică SEQUENCE și e-mailuri fiecare oaspete invitat; salvează fals fără a scrie la nimeni. - Invitaţiile şi actualizările invitaţilor sunt scrise de către org. - GET *************** leagă invitația unui mesaj la eveniment membru; evenimente publică invitați Invitați și participanți invitați.
· kamo-internal
Ședințe Compozitor plimbare pe e-mail, editări cere înainte de e-mail oaspeți, mail link-uri la evenimentul său
- Compozitorul trimite întâlnirea cu mesajul în loc de o a doua invitaţie. - Salvarea unei editări la un eveniment cu oaspeții invitați întreabă dacă să le trimită un update (ComentariuNoticeDialog); da trimite notificareOaspeți și păstrează invitații de email pe. - O întâlnire pe care compozitorul a trimis-o înainte ca publicul să fie redeschis cu oaspeţii săi. Mesajele arată întâlnirea unui mesaj cu un link care îl deschide pe /calendar.
· kamo-shared-library
Invitație de întâlnire de marcă și scrisori de actualizare pentru oaspeții calendarului
Adaugă calendar.meeting invite și calendar.meeting updated șabloane canonice şi MeetingInviteEmail, variabil constructor Emailservice le umple de la.
· kamo-internal
Atribuirea membrilor echipei în cartografierea plumbului; importuri automatizate pe pânză de cartografiere
Datorie. Importurile manuale și automatizate primesc un "membru al echipei alocate" țintă (înlocuirea "Utilizator alocat," pe care niciun importator nu l-a onorat vreodată). Este dialog stabilește un membru specific al echipei, nealocat, sau potrivire din domenii: o listă comandată încercată la rândul său (o valoare necompletată sau nepotrivită trece mai departe), cu Retragerea nimănui sau a unui membru ales. Serverul se potrivește format-tolerant și nu ghicește niciodată între două persoane; valorile care nu au rezolvat sunt enumerate după un import manual și notat pe elementul din coada de import automată. Importurile automate se deplasează dintr-un tabel cu transformări de text liber (care serverul nu a citit niciodată) pe aceeași pânză drag-and-drop ca importurile manuale, cu valorile eșantionului din observațiile recente ale obiectivului. Un adaptor Traduce pânza pentru toate cele patru ecrane. Canvas: transformările sunt editabile din fiecare cartografiere (dialogul nu a fost niciodată accesibil), cu fiecare tip de server, configurează intrările, reordonarea și un live previzualizare care utilizează regulile serverului; mai multe surse pot alimenta un singur câmp; ordonat de prioritate; o parte a coloanei divizate este salvată ca o parte de divizare transformarea, astfel încât importurile să ia efectiv acea parte; liniile se bazează pe sarcină; Șterge/Înapoi spațiu nu mai trage în timp ce tastați; cărțile funcționează de pe tastatură. Editor de șabloane: cartografieri a căror coloană avea capital au fost retrase la sarcină și șterse la salvare, deoarece antetele șablonului se întorc jos.
· DaemonService
Ia hărți de locuri de muncă prin intermediul motorului comun, cu misiune de echipă-membru
LeadIntakeProcessingJob construiește fiecare plumb cu kamo-shared-library LeadRequestMapper în loc de propriul comutator de câmp și transforma copie, așa Importurile automatizate aplică fiecare transformare a pânzei (defaults now fire on a Câmp lipsă), ajunge la fiecare câmp de plumb, și onora ținta de misiune: un membru fix, nealocat sau un lanț ordonat de câmpuri corespunzător Echipa (agent e-mail, apoi numele agentului, apoi numele apelantului pentru Harmony JustCall). Candidaţii sunt deţinătorii activi ai AVIATION LEADS (A se acceptaMembri desemnaţi, încărcat o dată pe lot final). O valoare care se potrivește cu nimeni, sau un fix sau membru de rezervă care nu mai poate lua conduce, este scris ca o notă pe element coada, astfel încât administratorul poate vedea de ce un plumb a sosit nealocat. IntakeAsigneRezolvator este înlocuit de compatibilul comun.
· SecurityService
Importuri manuale și backlog-ul de admisie prin motorul de cartografiere comun
LeadImportController hărţi fiecare rând cu kamo-împărţit-library lui LeadRequestMapper în loc de propriul comutator, deci manual și șablon importuri Obține setul de câmp complet, fiecare transformare, și misiunea de echipă-membru tinta. Rezultatul importului are acum valoarea totală atribuită și valorile atribuite care nu a rezolvat la un membru al echipei (asignmentIssues). Mappings și șabloane sunt validate pe salvare: un tip de transformare serverul nu se poate aplica este un 400, nu un șir de caractere ignorat în tăcere. LeadIntakeController pierde motorul de admisie duplicat. Înapoi procesează acum requeues sarcini utile eşuate şi raportează ce se află la coadă; aportul DaemonService locuri de muncă le importă într-un minut, aceeași cale o depunere live ia. Salvarea cartografierii unui obiectiv necesită MANAGE CRM SETTINGS; reluarea Rezervorul păstrează CREATE LEADS. GrantAllRoleRezolvator și delegatul rightHolderRezolvator la comun-lib GrantAllRoles/RightHolders, astfel încât lista atribuibil-membru este aceeași DaemonService folosește.
· kamo-shared-library
Un motor de cartografiere pentru importurile de plumb, cu atribuirea membrilor echipei
Importuri manuale, importuri automate (intrare) și backlog-ul au efectuat fiecare copie proprie a codului de cartografiere și nu au fost de acord: data, regexul și divizarea Transformările lipseau peste tot, copiile de admisie au sărit gol valori înainte de transformare (așa că "valoare implicită" nu a tras niciodată), mai multe căi ofertele de panza au fost retrase, iar "Utilizator alocat" a fost ignorat pe toate trei. Leads.mapping este acum singurul motor: - LeadRequestMapper: lista de reguli -> CreateLeadRequest. Mappings rulați în ordine și prima valoare non-goală pe teren câștigă; fiecare pistă Fields.ts cale, fiecare Câmp ipotecar și terenuri de formă personalizată (LeadRequestMapper Testează-l). - LeadFieldTransforms + Transformations Json: fiecare transformare panza, unul implementarea; tipurile necunoscute sunt refuzate la timp de economisire. - Obiectivul de atribuire "membru al echipei alocate" (legacy "alocatedUser" încă citește): un membru fix, nealocat sau egalat din domenii. Câmpurile de potrivire formează un lant comandat - o valoare gol sau de neegalat scade la urmatorul, în primul rând că numele unei persoane decide, în caz contrar, returul cartografierii (nimeni sau se aplică un membru ales). Obiectivul JustCall al lui Harmony se bazează pe acel lanţ. - TeamMemberMatcher: format tolerant, typo-safe potrivire pe e-mail, username și nume ("Last, First," inițiale, porecle, accente, o mică scriere); o valoare care se potrivește două persoane nu este niciodată ghicit. - Membrii LeadAsignable: candidaţii sunt deţinătorii activi ai AWER LEADS, aceiaşi oameni pe care AgentSelector îi oferă (RightHolders şi GrantAllRoles muta aici de la SecurityService astfel DaemonService le poate folosi). De asemenea: LeadImportResponse reports totalAsigned and asignationIssues; LeadIntakeService validează transformările înainte de a înlocui cartografiile și poate requeue sarcini utile esuat pentru locul de muncă de admisie.
· kamo-internal
Opţiuni de apelare şi întâlnire pe cartea de vizită a unui membru AI (telefoane SP92)
Sub vocile membrilor AI în camera de identitate a profilului: "Transfer apelanți la o persoană atunci când solicită un agentul sau un om (pe), "Continuați transcrierile complete ale apelurilor și reuniunilor în note" (off) și "În reuniuni": "Ia notițe; Vorbeste cu toata lumea, ca un telefon. Fiecare salvează imediat prin releul BFF ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* De ce? Implicit sunt modul în care fiecare AI a lucrat înainte.
· VOIPService
V7
GET *************** (KAMOAI INTERN SECRET) răspunde membru activ al org serverului telefonic că extensia este atribuită activ, sau 404 NO MINTE. servicii kamoai întreabă atunci când un apel ajunge la un membru AI dintr-o extensie, astfel încât AI știe ce coleg numit. Un număr de telefon, o Extensie neatribuită sau cu handicap, un alt membru al orgii sau unul care a plecat nu este nimeni.
· AIService
Opţiunile de apelare şi întâlnire ale unui membru AI, pe lângă vocile sale (telefoanele SP92)
keywordTransfer (default on), keepFullTranscript (default off) și meetingMode COMPANION COMPANION), in ai member call options (hand-applied, re-runnable DDL; no row = the implicits = the comportamente before SP92). GET/PUT ***************** cu drepturile vocilor (MANAGE AI WORKFORCE, sau supervizorul său cu SUPERVISE AI MINTE, schimbări; AI în sine nu face nici; un AI retras este citit numai), și gemene interne Serviciul Kamoai citeşte pentru fiecare apel şi întâlnire.
· kamo-shared-library
ȘEDINȚĂ DESCĂRCARE RUN declanșator, pentru o reuniune de conversație de follow-up (SP92 apeluri)
O întâlnire un membru AI a luat parte la ca un partener de conversație o trezește odată ce se termină, cu nota sa de transcriere, modul în care un apel telefonic apel COMPLETED face. String-persisted in ai runs.trigger kind (no check); un test de pază păstrează fiecare nume de declanșare în cadrul coloanei.
· kamo-shared-library
Rezolvatorul TRAIT și PersonalityProfile KamoCollab CP03 T9)
· kamo-internal
Fila grafică Org pe Setare Essentială, în meniul de setări, pe pagina de aterizare Setări şi pe bara de administrare acasă (KamoCollab CP02 T24)
********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** către care, în cadrul organizaţiei, numai citire, de la GET /api/security/org-chart (nou BFF releu, forwardToApi + releuUpstream). orgChartApi parsează graficul cu zod și păstrează fiecare ID un șir; un număr ID este refuzat, niciodată rotunjit. orgChartTree (pur) pune fiecare persoană sub managerul lor atunci când este afișat, altfel un AI sub supravegherea sa atunci când este prezentat, altfel la rădăcină; proprietarii mai întâi, apoi după nume; o buclă de raportare tăiată la cel mai mic ID-ul său ("buclă de raportare"); o buclă ascunsă manager marcat ("Manager inactiv"; filtrul departamentului păstrează subtree departament și căutarea păstrează numele sau locul de muncă-titlu meciuri, ambele cu strămoşii care îi plasează. Panoul desenează o carte pe persoană (inițiale, numele legat de profil) prin următorul / link, titlul de locuri de muncă, departament și până la trei jetoane de echipă apoi +n, insigne AI, Proprietar, Inactiv, șef de, lider de și supervizat de atunci când supervizorul nu este cardul de mai sus, numărul de rapoarte directe), șinele conectorilor în --accent-oameni, trei nivele deschise, GOALState, ErrorState with retry, şi o înviorare vie ca fraţii săi. EroreState câștigă o opțiune RetryLabel. De asemenea, expus per maestru R1-37: {cheie: 'orgChart'} după echipe din Setări meniu, o intrare OrgChart după echipe pe bara de administrator, și un carte de aterizare după echipe. Setările esenţialeExpus, setărileCardurile de aterizare şi Echipele Tab urmează noua filă.
· kamo-shared-library
Cele şapte arhetipuri încorporate KamoCollab CP03 T8)
· kamo-internal
Echipele de pe cartea de membru și în directorul (KamoCollab CP01 T25)
Cardul de membru prezintă echipele unui membru al echipei sub titlul lor și departament: până la trei jetoane în ordinea serverului, apoi "+n," a cărui Sfatul numeste restul. O carte fără echipe sau a căror echipă de citire a eșuat (Echipele lăsate afară, CP01-T16-1), nu atrage nici un rând de echipă. Rânduri directoare transporta echipe prin normalizareDirectoryPerson, filtruOamenii se potrivesc cu o echipă titlu, și membru alege pune până la două titluri de echipă și "+n" pe o linia de detaliu a persoanei, lângă departament, cu întreaga linie în sale vârful sculei. Un parser (app/lib/teams/teamRefs.ts) citește [{id, titlu}] pentru Ambele.
· kamo-shared-library
Modelul charter pentru stratul de ORG, Personalitate și Docștiune KamoCollab CP03 T7)
CharterLevel anexează ORG după echipa CP01; CharterRegulă completează TRAIT și COLLAB; CharterSection anexează personalitatea (TRAIT, 160) și Doctation (COLLAB, 60); atât aiOnly cât și nu supresibil; CharterValidationReason apendice AUTORITATEA LANGUage și GROUP INCONSISTENT. CharterItelm, CharterItemData și CharterItemDTO transporta cele 12 domenii ale secţiunii 5.2, şi scrie, la Date, la Dto, respinge Fields și CharterView. element le transporta (scriere refuză un număr a SmallINT nu poate rezista). MAX ITEMS PER OWNER este 500 (D4). Până la sarcina 12, validează refuzarea unui element de personalitate sau de doctiune cu UNKNOWN SECȚION; și Markerii sunt refuzaţi la ORG ca la ROLE (D2). Marcaj nou pentru secțiune Rezolvatori. Noi entități OrgCharterItem (org charter items), OrgPersonality Arhetip și OrgPersonality ArhetipItam cu depozitele lor, și conteByArchetypeRef privind rolul, departamentul, titlul postului și repertoriile de elemente ale membrilor. Verificarea titlului se compară cu indicele inferior () ca și indexul unic. Coloanele și tabelele există în producție (CCP03 Task 3).
· kamo-internal
Oglinda cunoaste Personalitatea si Doctatia (ascunse pana la CP09), nivelul ORG si tipurile de personalitate si doctorat rezolvate (KamoCollab CP03 T21)
- secţiuni.ts: SectionSpec.editor; cele două secţiuni anexate cu editor fals; regulile TRAIT şi COLLAB; Sectiuni InBand listeaza doar sectiuni editate; MAX ITEMS PER OWNER 500 (D4). - elemente.ts: markeri de ascunde refuzati la ORG in loc de ROLE (D2); sectiuni editorul nu edita sunt Numărate spre capac și altfel lăsate la server, ca cele necunoscute (D21, D22). - tipuri.ts: nivelul ORG, OUT OF BOUNDS, cele douăsprezece câmpuri de elemente, rezolvate. personalitate şi S-a rezolvat. Doctation per spec 5.6.4. - Contele panoului de avanpremiere și chips-uri șablon galerie săriți secțiuni ascunse. - New charterSectionParity test citește CartaSection.java și CharterItems.java.
· kamo-internal
Un şef de departament, coloana Head (numele, Vacant, Inactive), câmpul principal de dialog şi picker (personal activ; AI membri listați, dar care nu pot fi aleși), setați prin PUT .../cap după salvarea departamentului; și managerul unui membru devine administrator pentru a schimba pe cardul de poziție (KamoCollab CP02 T23)
· kamo-shared-library
PersonalitateTextLint KamoCollab CP03 T6)
· kamo-internal
Echipe pe formularul de creare-membru, pentru o persoană și pentru o închiriere AI (KamoCollab CP01 T24A)
/settings/team-member/new eights Teams on its Role card: a multiple pick over echipele organizației (clientul echipelor), oferite oricui ar putea schimba o echipă de membri pe profil (echipeEditAtCreate, Teams Field's PozitionRightsGate: MANAGE MINTE SECURITY) și ascuns altfel. Alegerile du-te ca teamIds, pentru o persoană și pentru un AI închiriere (aiHirePayload păstrează fără pick, fără cheie. Refuzul echipelor (400/403/409 cu teamIds domeniu) arată pe teren și în banner, în dicționar cuvinte în cazul în care le-a, NU INCLUS. Previzualizare charter AI de închiriere Acum include echipele alese, stratul TEAM cu care va începe. Live nume sumare ale echipelor.

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