Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· kamo-shared-library
Traducerea şi adaptarea:
Adaugă o coloană de TEXT TRANSCRIPT la entitatea de înregistrare și fire o transcriere prin *************** (cu compat invers) constructorii, astfel încât apelanții existenți 5- și 9-arg sunt neafectați). Populate de debit de înregistrare-finalizare prin Whisper; creat de migrare KI.
· MediaService
Verificați semnătura JWT return-nav; reîmprospătare jeton ordonat
- CanvaJwtVerifier: verifica corelatia jwt's Ed25519 semnatura contra Canva JWKS (/connect/keys), plus aud/exp/type; chei cached by child. Return-nav nu reușește acum închis pentru a importa manual în cazul în care verificarea nu reușește. - CanvaTokenService: picătură ineficient @Transactional pe auto-invocat helpers refresh/markDown (Spring Data's per-call tx + the per-member lock face deja rotaţie jeton corect); clarifica cu un comentariu.
· KlusterServices
Face șoaptă-ars scalabil independent (HPA, multi-nod)
Scoateți pinul mononod și treceți la un model de cache per-pod astfel încât capsulele să poată program pe orice nod, și se adaugă un HPA (min 1 / max 4, CPU 75%, deliberat scară-up dat modelul lent la rece-starts). whisper-asr este transcrierea comună suport pentru inregistrari si inregistrari VOIP/voicemail-uri.
· KlusterServices
Rebrand Guacamole Client Conexiune stare text la KamoDesktop
Suprascrie Nu-ţi face griji. "Conectarea la Guacamole..." ecran (și statutul aferent) citește KamoDesktop.
· MediaService
Înregistrare ingerare, reținere/contingent, utilizare stocare, conductă rezumat
- MeetRecordingController: intern (X-Normal-Auth) ingerarea obiectivului jibri Terminare.sh posturi terminat înregistrări la. - MeetRecordingService: uploads records to per-org MinIO (imaging-meet-recordings), persistă ÎntâlnireRecordarea metadatelor, aplică cota de stocare a org (victă mai veche); și (emailService meeting-summary șablon). - MeetRecordingRetentionSweep: ștergere programată a înregistrărilor din trecut. - MeetConfigController: GET / înregistrare-utilizare pentru contorul real de stocare setări. - aplication.yml: conversion/ai/email base URLs + intern auth secret. Necesită (ops): KamoInitializer rulează pentru a crea MEETING RECORDINGS; - Nu. valoarea trebuie să se potrivească între MediaService, jibri și Serviciul de conversie.
· EmailService
VAR-uri de eșantionare pentru previzualizarea șablonului de ședință
Adăugați un exempluVariables caz pentru noul șablon-sumar întâlnire astfel încât administratorul preview UI redă conținut realist.
· kamo-shared-library
Șablon canonic de reuniune
Adaugă șablonul de tranzacție "întâlnire-sumar" (subiect + HTML de marcă cu {{numele camerei} şi crud {{sumaryHtml}}) şi îl înregistrează în CANOTIC KEYS astfel încât semințe per org. Folosită de livrarea rezumatului AI post-întâlnire. De asemenea, corectează Testul de încărcare a cheii vechi.
· KlusterServices
Modul Moderator Prosody, Whisper-Asr, Jibri înregistrare încărcare
- Meet-prosodie: versiunea-controlul configurilor personalizate token verificare existentă fără suprascriere op care a fost creată în afara benzii) și adăugați modulul canonic mod token moderation, activat prin - Nu. Face cererea JWT Devine proprietar, oaspeții/anonimul nu poate apuca proprietarul. - șoaptă-asr: auto-hosted speech-to-text (rapid-whisper CPU, fără cheie externă) pentru transcriere post-întâlnire. - Meet-jibri: finalize.sh acum încărcați înregistrări finisate la MediaService ***************** cu X-Normal-Auth astfel încât să aterizeze în MinIO + retenţie unitate/contingent + rezumate. Secretul e opţional. începe dacă nu este stabilit.
· ConversionService
Înregistrarea obiectivului de transcriere pentru rezumatele post-întâlnire
Post/api/conversie/meet/transcribe (X-interior-Auth): normalizează o încărcare înregistrarea la 16kHz mono WAV prin intermediul unui nou aditiv Ffmpegservice helper; îl transmite serviciului auto-hosted whisper-asr şi îl returnează. Whisper URL de la kamo.services.whisper.url.
· kamo-internal
Integrarea calendarului pentru întâlniri programate + contorul real de stocare a înregistrărilor
- calendarIntegrareEnabled: atunci când, o întâlnire programată clubhouse este, de asemenea, adăugat calendarului creatorului (prin intermediul sistemului calendaristic existent) Autentificat /meet/join link. Anunțurile de participare rămân tratate de către backend matura, astfel încât nici un e-mail dublu participant. - Setări de înregistrare: contorul de stocare arată acum utilizarea REAL per-org de la GET /api/meet/recording-usage (înlocuirea ocupantului eliminat).
· kamo-shared-library
Înregistrare entitate de înregistrare + depozit pentru înregistrări capturate
Meeting RECORDINGS table (org, meeting ref, room, MinIO găleată/cheie obiect, Dimensiune, durată, ștampile de timp capturate/expirate, starea rezumat) pentru un fișier de înregistrare Jibri terminat, reținere/contingență de conducere și post-întâlnire prelucrarea rezumatului. Masa este creat pe următoarea alergare KamoInitializer.
· kamo-internal
Aplicație de marketing, hub de setări, materiale Canva
Face marketing o aplicație de primă clasă org-enable și nava Canva alimentat Experienţa materialelor. Apendice: - AppType.MARKETING oglinda, Organization.isMarketing getter - portal marketing nav (navRegistry) + secţiuni de drepturi (permissionAppSections, SecurityRoleManager) pe organizare.isMarketing - Card de marketing în FeaturesManager (/setări/cont?tab=apps) Configurări: - noi/setări/perturbări/hub de comercializare (General / Social Media Suppliers / Canva) - mutaţi Furnizorii de Social Media din CRM în marketing - 3 locaţii de navigaţie actualizate (setări aterizare, setăriMenu, SetăriButton pictogramă); reinițializează linkul socialTimeline gol-stat Canva: - CanvaIntegrationManager settings tab + canva ProviderDef in the platforma Registrul Oauth (+ logo) - /api/canva/* proxy (status, conect-start, design, export, export-proxy, Deconectare) → MediaService - /marketing/materials: biblioteca grid (imagingmages assoc), upload, Create-in-Canva, Import-din-Canva, return-nav auto-import
· ConversionService
Unghii video-cadru pentru materiale de marketing
Exporturile Canva MP4 (și orice încărcare video) săriți peste calea Docs PDF și obțineți un o singură imagine poster-cadru ( thumb p0.png) în loc de a nu reuşi. - *************** Sucursala din categoria VIDEO - ***************
· MediaService
Canva Connect OAuth + suport de proiectare/export
- CanvaApiClient: PKCE autorizează, token schimb/refresh/revoke, utilizatori, design (creare/listă), locuri de muncă la export, octet bring - CanvaTokenService: jetoane criptate pe membru (PlatformSecretCipher), reîmprospătare proactivă într-un singur zbor (Tokenurile de reîmprospătare Canva sunt de unică folosință/rotație) - CanvaOAuthController (permit-all): conectaţi intenţia → /start → /callback, aterizarea înapoi-nav - CanvaController (authed): status, conect-start, crea/list designs, export (create+poll+cache), octet export-proxy, deconectare
· kamo-shared-library
Integrare canva + Marketing ca aplicație org-enable
- *************** Platforma Canva Connect inregistrare client - ImageAssocType.MATERIALS(13, imagistica-materiale) - *************** la ServiceType.MARKETING - ServiceType.MARKETING (24) → COMPLETED/enabled so it become a real app (FeatureController auto-provisions it on per org, like CRM) - ENTITATEA DE CANVACONNECTARE + repo: jetoane criptate pentru fiecare membru (acces+refresh)
· KlusterServices
Activează marca Guacamole json-auth SSO + KamoDesktop
- JSON SECRET KEY (opțional) pe guacamole de la desktop-sso secret permite extensia cu guacamole-auth-json cu link-urile SSO validează contra. - extensie kamo-branding (titlu=KamoDesktop, logo kamocrm + favicon) construit din desktop/guacamole/branding/ into a.jar, expediate ca un configmap binar și însămânțate în GUACAMOLE HOME prin intermediul unui container de iniţiere. - CI creează cheia de semnare comună în ambele namespaces (desktop-sso pentru guacamole, Guac-sso for SecurityService) din secretul GUAC SIGNING KEY; niciodată nu a comis.
· kamo-internal
Pictograme KamoDesktop (Linux + Windows) care deschid sesiuni auto-conectate
Două icoane nav rămase din Analytics, arătate doar membrilor eligibili de Dumnezeu (este Dumnezeu adăugat la NavGateContext). Fiecare aduce un link SSO de scurtă durată de la SecurityService și deschide Poarta KamoDesktop într-o fereastră nouă, conectată automat la instanţa sa. Folosește angajamentul Sunt semne.
· SecurityService
KamoDesktop SSO token final pentru membrii lui Dumnezeu
GET *************** (numai eligibile pentru Dumnezeu) ments a 5 minute guacamole-auth-json token (HMAC-SHA256 + AES-128-CBC, per extensia lui format sârmă) și întoarce un auto-login + URL de conectare automată pentru KamoDesktop Poarta. Semnare cheie + parola RDP injectata din guac-sso secret; niciodata comis (în condiții de siguranță: SSO rămâne dezactivat până la configurare).
· kamo-internal
Nume de cameră cu telecomandă Org, format de cameră-nume, întâlniri Kamo calendar, începe memento-uri; setări i18n
- utilizareMeeting/MeetingDialog: numele camerelor sunt acum numite de org token deci doua Orgile nu se pot ciocni în aceeași conferință Prosody, și onoreze orga lui RoomNameFormat (RANDOM vs DISPLAY NAME RANDOM) folosind aliasul membrului). - Composator de intalniri (calendar): Butonul "Kamo Meeting" genereaza o camera cu telescop org și stabilește URL-ul evenimentului la /meet/join click-time link-ul OTK, așa calendar invitați + destinatari de reamintire sunt înregistrați ca membri verificați. - MeetReminderPopup: subscribe to /topic/meet/reminder/{memberId} (MediaService maturator) si prezinta un paine prajita "incepand" cu un buton Join; montat in Prezenta Wrapper pe chat-ul comun WS. - intalneste filele de setari: inlocuieste sirurile de toast/eroare engleze hardcodate cu Următoarea adresă: tastele *********************
· MediaService
Întâlnire programată de începere a memento- urilor + data expirării legăturii de oaspeți
- MeetingReminderSweep: @Scheduled mater that fires a realtime memento pentru membrii invitaţi (start − mementoMinutesÎnainte) la ************* apoi trece la întâlnirea SCHEDUL→ACTIVE Pentru a dedupe. Întâlnirile cu mai mult de o oră înainte de începerea sunt tranzitorii fără a memento (fără spam de umplere înapoi). Clientul construiește link-ul de conectare autentificat de la propria origine. - *************acum oaspeții LinkExpiryHours: o întâlnire mai vechi decât fereastra configurată a orgului (ancorată la pornire programată, altfel creatia) este tratata ca neasociabila (0 = nu expira niciodata).
· kamo-internal
Arată disponibilitatea membrilor în lista de chat-uri; redenumește fila la Directory
1:1 rânduri de chat acum suprafață prezența live a omologului + disponibilitate la fel cum tab-ul Directory face aceleași culori/etichete ca și MemberItem (dot + eticheta cu majuscule, pulsând atunci când on-line, gri atunci când offline), cu un sfat instrument. Discuţiile de grup păstrează "cineva" online" avatar punct; randurile sociale/suport sunt neschimbate. Fila membrilor este redenumită în "Directory" (numai valoarea i18n), care, de asemenea, șterge coliziunea de denumire cu grupul sub-tab "membri.".
· KlusterServices
Hardened KubeVirt desktop la distanță + Guacamole gateway
Adaugă un stiva complet la distanță-desktop, GitOps-aplicate prin fluxul de lucru de implementare: - KubeVirt + CDI instalat la momentul implementarii ( URL-uri de eliberare pinned-stable) - desktop-1: Kubuntu 24.04 VM, 8 vCPU / 16Gi / 500Gi Longhorn block disk, mascarad net (nativ cluster DNS), sesiune xrdp KDE; instalaţii cloud-nit Chrome, VS Code, NetBeans, Temurin JDK 21+17, Far, Kate, LibreOffice şi elimină Firefox - Apache Guacamole (guacamole + guacd + Postgres config DB) la desktop.kamocrm.com; guacd ruleaza hosteNetwork pe k1m1 astfel încât să poată WoL-difuzare și RDP direct pe 192.168.4.0/22 LAN în timp ce ajunge încă VM prin ClusterFirstWithHostNet DNS - LAN Windows PC (192.168.4.44, MAC f4:4d:30:62:8a:68) adăugat ca o conexiune cu Guacamole nativ Wake-on-LAN (pachet magic pe conexiune, 30s așteptați) - Întărirea marginii: Traefik TLS + limite stricte pentru rata desktop + antete de securitate; plus interzicerea utilizării Guacamole în forţa brută per IP - auto-cert: desktop.kamocrm.com adăugat la STATIC DOMAINS + oglinda cross-ns astfel Comment - Acreditari: utilizator "sage"; parola injectata de la CI secret DESKTOP PASSWORD la timpul de desfășurare (envsubst/sed + imperativ Secret)
· kamo-internal
Sub-tabe pentru grupuri de chat, amintiți-vă tab-ul ultima-deschis
Lista de chat-uri filtrată de un rând de chips-uri pilula multi-select care uitat de loc sub fila Chats. Înlocuiți-le cu un singur-select sub-tab bar (o filă pe grup: Membrii echipei / Membri / Social / Suport) stilat pentru a se potrivi filele membrii/Chats părinte, astfel încât lista grupului selectat completează întregul zona de conținut. - Single activeBucket în loc de un set de găleți active; serverul aduce acum trage doar categoria selectată. - Implicită membrilor echipei, şi persistă fila ultima-deschisă pe membru (încrucisat dispozitive) prin intermediul magazinului de ui-preferences (chat-uri cheieActiveBucket), gating the mai întâi aduceți până când fila salvată se rezolvă astfel încât să se încarce direct.
· kamo-internal
Explică atunci când e-mailul nu este configurat; poarta compune
Inbox-ul/mesaje redat anterior carapacea completă chiar și atunci când org nu a avut nici un furnizor de e-mail sau membru nu a avut nici o cutie poștală, în tăcere care nu fiecare Apel API. Adaugă o utilizare comunăEmailAvailability cârlig care rezolvă dacă e-mail este utilizabil și, dacă nu, de ce (furnizorul nu este configurat vs. nici o căsuță poștală) și dacă actualul membru își poate autoservi fixul bazat pe drepturile lor. - MesajBrowser arată acum un elegant EmailNotConfigurat panou în loc de un inbox gol, cu copie + CTA care se adaptează la motiv și membrilor drepturi (link către setările furnizorului de e-mail pentru MANAGE EMAIL SETTINGS, sau către propria lor filă de căsuță poștală pentru MANAGE EMAIL ACCOUNTS; altfel, amânați la admin). - MailButton dezactivează "Compose New Email" până când e-mailul este complet gata, cu un motiv-specifice instrument tip; NavToolButton câștigă cu handicap / suport element instrument. - Ancora regula ignorarea aplicației/componentelor/mesajelor/ (care au scăpat în tăcere fișiere noi acolo).
· kamo-internal
Toate tipurile Listă de chat + atenție browser-tab
Conversațiile sub-tab listează acum membri, grupuri, sprijin și conversații sociale cu un filtru multiselect (Membri de echipă / Membrii / Social / Suport; primele două folosesc etichetele personalizate ale org-ului). Membrii echipei vs Membrii sunt împărțiți pe membrii omologiType; rânduri de sprijin arată dacă tu sau cealaltă parte este agentul; fiecare rând deschide său fereastră instrument nativ (chat / suport / social). Adaugă TabAttenţie: o insignă favicon + document intermitent. titlu atunci când acolo sunt mesaje nevăzute de orice tip de chat (conte rosu) sau un accept-lider în așteptare (în chihlimbar Citeşte existente UnreadContext + LeadAlertContext, astfel încât nici un nou backend.
· MediaService
Conversațiile unificate se transmit între membri/sesiuni de sprijin/sociale
GET /api/media/sessions/chat acceptă acum un filtru de sprijin, social; implicit all) și revine la nivel global la primul nivel; fuzionarea întrebărilor pe tipuri. Fiecare rând poartă: - SessionType (CHAT pot împărți chat-urile interne în membrii echipei vs deputați; - ticketId + supportRole (AGENT rânduri de sprijin și furnizor + conexiune Titlul pentru rândurile sociale; Aşa că fiecare rând îşi deschide fereastra de unelte.
· kamo-shared-library
Interogări paginate pentru suport + sesiuni de chat sociale
feed astfel încât lista Unificat Interacțiuni Center Chats pot include tot felul de: - Sprijin (TYPE ID=2): sesiuni în care membrul este agentul desemnat OR solicitantul (întoarce, de asemenea, biletul id + agentul desemnat ID pentru rândul). - SOCIAL (TYPE ID=3): sesiuni privind conexiunile sociale deţinute de membrii organizaţie.
· kamo-internal
Termină acțiunile antetului de prim-viz + apelurile înapoi
- Antet: Împărţiţi apelul în apel (lucru) / apel (personal) deschiderea softphone (ascuns atunci când membrul nu are nici o extensie înregistrată), Email deschide compozitor, Text - > comms/texts, Note moved left with a rule and clipiss till o notă este plasată de la ultima schimbare. Scoateţi butonul de sarcină. - Stare: scade meniul de schimbare invalidă și butonul de editare rupt; se adaugă un rând STATUS > SUB STATUS care necesită alegerea unui substatus și numai permite actualizarea când se schimbă. - Callback: dialog (data/ora + fusul orar + comentariu), o lista asteptata/prevazuta fila de detalii cu marca-contact/cancel prompts, și leadsApi + proxy rute pentru program/listă/rezolvare.
· EmailService
Obiectivul intern pentru crearea/anularea evenimentului calendaristic al unui membru
Post/api/intern/calendar/evenimente (X-Normal-Auth gated) rezolvă membrul -> utilizator -> calendar primar (crearea unui implicit, dacă este necesar) și creează un eveniment. Folosit de Serviciul de Securitate pentru a oglindi apelurile de plumb pe calendarul unui membru.
· SecurityService
Criterii finale de evaluare a apelurilor de plumb (program/listă/rezolvare)
Noul ***************** operator + serviciu: persistă Apeluri, mesaje de planificare/ieșire note în fluxul media plumbului, și reflectă apelul pe calendarul membrului programării prin e-mailService obiectivul intern calendaristic (cel mai bun efect).

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