Mergi la conținut
KAMOUniverse

Jurnal de schimbări

Ce e nou.

Fiecare îmbunătățire a platformei, pe măsură ce se livrează.

  1. · 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.

  2. · 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.

  3. · 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.

  4. · KlusterServices

    Rebrand Guacamole Client Conexiune stare text la KamoDesktop

    Suprascrie Nu-ţi face griji. "Conectarea la Guacamole..." ecran (și statutul aferent) citește KamoDesktop.

  5. · 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.

  6. · 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.

  7. · 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.

  8. · 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.

  9. · 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.

  10. · 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).

  11. · 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.

  12. · 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

  13. · 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 - ***************

  14. · 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

  15. · 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)

  16. · 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.

  17. · 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.

  18. · 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).

  19. · 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 *********************

  20. · 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).

  21. · 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.".

  22. · 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)

  23. · 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.

  24. · 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).

  25. · 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.

  26. · 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.

  27. · 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.

  28. · 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.

  29. · 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.

  30. · 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