KamoCRM

Live Change Log

Every feature, fix and improvement, posted as it ships. Nothing is held back for a launch.

17,500
Total Changes
5,986
Features
5,284
Fixes
30
Projects
Filter by project
All Projects17,500AIService251APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService576InitializerService329KBService151KlusterServices740MCPGatewayService251MediaService602RAGService79SecurityService1,847TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,349kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,657kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore774Docs3,254Feature5,986Fix5,284Other994Performance165Refactor278Revert23Style42Test160Upgrade1
April 25, 2026
OtherSecurityService

Adăugați logare la uploadBendment Background

Log org/index, info fișier, userId, auth decides, and MinIO staging cheie pentru a urmări de ce upload-uri de fundal nu apar în găleată de așteptare.

Kamo·6mo ago
Otherkamo-internal

Adaugă logare pe ruta proxy încărcare-background

Log org/index, numele/dimensiunea fișierului/tipului și starea răspunsului în amonte pentru a diagnostica de ce upload-uri de fundal nu ajung la APIservice.

kamo·6mo ago
Featurekamo-internal

Adaugă coloana locației la ticket datagrid

Citiri Nu-ţi face griji. direct de pe TicketDTO de sprijin (acum instantaneu pe entitatea bilet la timpul de creare Înregistrează pavilionul + orașul/regiunea/...

kamo·6mo ago
PerformanceMediaService

Magazin geo pe bilet la crearea, picătură GeoLite citește

Acum capturează geografia vizitatorilor. o dată (prin GeoLookupService) și persistă ip/țară/oraș/subdivision pe Tichetul de sprijin în sine. SuportTicketServic...

Kamo·6mo ago
Featurekamo-shared-library

Snapshot visitor geo on ticketent

Adaugă VIZITOR IP ADDRESS, VISITOR COUNTRY CODE, VISITOR COUNTRY NAME, VIZITOR CITY, VIZITOR SUBDIVISION Coloane. Capturat la crearea de bilete astfel încât cri...

Kamo·6mo ago
PerformanceMediaService

Vizitatori de încărcare în vrac și săriți căutarea GeoLite în listă

Scopul listei /api/suport/bilete a fost de funcționare, pe pagina de 20 de rânduri: - 20 de apeluri. - 20 apeluri în GeoLookupService.lookup, fiecare dintre car...

Kamo·6mo ago
Performancekamo-shared-library

Adaugă findbySessionGuidIn pentru încărcare în vrac

Folosit de obiectivul listei de sprijin pentru a aduce toți vizitatorii pentru o pagină într-o singură interogare în loc de N separat găsibySessionGuid apeluri.

Kamo·6mo ago
Fixkamo-internal

Pass folder to chargeThread retry buton

take-uri de încărcareThread (fisier, folder); numai butonul de retrimitere a stării de eroare a trecut firId, ruperea cladirii kamo-interna. Meci de apel la sem...

kamo·6mo ago
ChoreSecurityService

Reconstruiește pentru a ridica JsonIdentity membru Info fix de la kamo-shared-library

kamo-shared-library b57d156 fixs @JsonIdentityInfo(property = "uniqueId") → "id" pe Membru, rezolvarea a 400 de erori pe Put /api/securitate/org/{id}.

Kamo·6mo ago
Fixkamo-shared-library

Corectează JsonIdentitatea Info proprietate de la 'uniqueId' la 'id'

Entitatea membru declarată @JsonIdentityInfo[property = "uniqueId") dar Câmpul principal principal principal este numit "ID." Jackson aruncat "nu poate găsi o p...

Kamo·6mo ago
FeatureMediaService

Adăugați /ws/public-chat-nativ simplu WebSocket obiectiv alături de SockJS

Înregistrează un al doilea criteriu de evaluare STOMF fără SockJS la /ws/public-chat-nativ astfel că frontend se poate conecta cu un WebSocket nativ (brokerURL)...

Kamo·6mo ago
Fixkamo-marketing

Eliminați garda SSR care cauzează neconcordanțe de hidratare; picătură SockJS pentru WebSocket nativ

- Ero.tsx: eliminați tipul de verificare a ferestrei în jurul ParticuleField are ssr:fals astfel încât paznicul a produs un server / client nepotrivire copac (...

Kamo·6mo ago
Featurekamo-internal

Per-tichetă necitită + filtru "doar mesaje noi"

- Lista biletelor arată o insignă de chat-bubble cu numărul necitit lângă # ori de câte ori sesiunea are mesaje mai noi decât a agentului ultimul mesaj vizualiz...

kamo·6mo ago
FeatureMediaService

Contorizare necitită difuzată către agent la mesajul vizitatorilor

După ce un vizitator trimite un mesaj de sprijin, împingeți cele mai recente numere necitite Încărcătura la ************* astfel încât lista de bilete a agentul...

Kamo·6mo ago
Featurekamo-shared-library

Include sesiunile de sprijin TICKET în interogarea necitită a membrilor

cautăChatMembershipsPrin membreId returnează acum membri atât pentru CHAT cât și SUPORT TICKET tipuri de sesiune, astfel încât existente per-membru necitit-cont...

Kamo·6mo ago
Fixkamo-internal

Indicatoare clare necitite la deschiderea conversației

ThreadDetailView expedies e-mail:folder-changed after markConversationRead reuseste astfel MailButton restabileste insigna inbox invtop conta. ConversațieListVi...

kamo·6mo ago
FixAPIService

Move CORS to Traefik via kamo-middlewares, remove in-app CorsFilter

The CorsFilter @Bean in the Spring app was silently not applying headers after WebConfig.java was removed. CORS is now handled entirely at the Traefik layer by ...

Kamo·6mo ago
Fixkamo-marketing

Use /public/{mainDomain}-{tld} path matching actual MinIO bucket layout

The getThemePath() was generating /domain/{tld}/{split}/kamosite paths that don't exist in MinIO — theme files live in the public bucket under kamocrm-com/, bad...

Kamo·6mo ago
Fixkamo-internal

Break min-w-0 chain to contain email scroll in body column only

Add min-w-0 to outer container and main content flex div so flex children cannot expand to email min-content width, which was causing the page-wide horizontal s...

kamo·6mo ago
Fixkamo-internal

Furnizorii de înaltă peste ToolProviders

Aceeași cauză rădăcină ca ChatWebSocketProvider elevator: SuportTicketWindow apeluri *************** și apeluri ChatBox useUnread().markAsRead(), dar ambele fer...

kamo·6mo ago
Fixkamo-marketing

Adaugă supresieHydrationAvertizare și repara imagini disfuncționale

supresieHydration Warning on <html> previne eroarea de reacție #418 cauzată de browser extensii (ex. traducere, modul închis) atribute mutante html între SSR și...

Kamo·6mo ago
FixKlusterServices

Permite/domeniul/prefixul traseului pe tema IngressRoute pentru CORS

Tema config la tema.kamocrm.com/domeniu/... nu a fost potrivit de regulile de rută existente (numai/public/ și/internă/au fost permise), așa că Traefik a return...

Kamo·6mo ago
FixAPIService

Eliminați antetele duplicate CorsFilter și benzi în amonte CORS în poarta de acces

WebConfig.java a definit o a doua fasole CorsFilter care concurează cu CorsConfig. Java Bean, riscând duplicatul scrie. A şters-o ca să existe doar un singur Co...

Kamo·6mo ago
FixSecurityService

Eliminați duplicatul boabelor de CorsFilter care cauzează header dublu Access-Control-Allow-Origin

Boabele explicite de CorsFilter au cauzat un al doilea filtru CORS alături de primăvară Suport CORS încorporat de securitate (care utilizează CorsConfigurationS...

Kamo·6mo ago
Fixkamo-internal

Elimină declarațiile consolei de depanare.log și adaugă rutele lipsă

Elimină toate depanările temporare adăugate în timpul urmăririi WebSocket de la ChatBox, TicketChat, MemberItem, ChatTool și utilizațiChatWebSocket; adăugați pa...

kamo·6mo ago
Fixkamo-internal

Preveniți antetul mesajului de la extinderea coloanei pe adrese lungi

Copilul flex stânga header a avut nici un min-w-0, atât de lung e-mail de nerupt adresa din From/To/Cc a forțat lățimea de conținut min să crească, târâre antet...

kamo·6mo ago
Fixkamo-internal

Hoist ChatWebSocketProvider deasupra ToolProviders

ToolDock (și ferestrele sale instrument cum ar fi SuportTicketWindow → TicketChat) este montat în interiorul ToolProviders, care stă ABOVE PrezențăWrapper în co...

kamo·6mo ago
Fixkamo-internal

Drop Shadow DOM în e-mail rander atât de deversare-x-auto focuri

Shadow DOM a fost cauza rădăcină. Conținutul de e-mail larg (tabele fixe) în interiorul copacului umbră pictat trecut gazda fără a contribui la cutia gazdei, as...

kamo·6mo ago
Fixkamo-internal

Aliniază calea de import ChatWebSocketContext pentru furnizorul de potrivire

TicketChat și ChatNotificareAscultătorul a importat contextul prin intermediul "@/app/contexts/......" alias în timp ce PrezenţaWrapper (furnizorul) o importă p...

kamo·6mo ago
Otherkamo-internal

Consolă temporară.log pentru a urmări calea de abonament TicketChat STOMP

Adaugă jurnale de consolă în fiecare etapă a conductei de abonare (efect de incendiu, permis de pază, abonament () apel, ataşareAbonare, client. subscrie; /app/...

kamo·6mo ago
Fixkamo-internal

Forta umbra gazda de izolare cu stiluri inline + conține: aspect

Clasa pe baza de supraîncărcare-x-auto pe gazda umbră nu a fost câștigătoare fiabil împotriva umbrei ':host { all: iniţial}' resetat, atât de larg e-mail conţin...

kamo·6mo ago
Fixkamo-internal

Derulați conținut de e-mail larg în interiorul umbra DOM, nu în afara

Încercările anterioare de a adăuga supraîncărcare-x-auto la lumina strămoșilor DOM nu a putut prinde conținut de e-mail larg, deoarece umbra copacului vizual re...

kamo·6mo ago
FixEmailService

Utilizați getAstachments () pentru a se potrivi cu tipul de ambalaj boolean

***************** este un ambalaj Boolean, deci Lombok generează getHasAttachments() not isHasAttachments(). Doar acesta din urmă există pentru boolean primitiv...

Kamo·6mo ago
FixMediaService

Extinde scanarea depozitului JPA pentru a include pachetul comercial

Noul librar kamo-împărtășește aduce în *************** care necesită - Nu. (în com.kamo.z.shared. commerce). MediaService doar scanat numodifica.dao.repos, deci...

Kamo·6mo ago
FixMediaService

Restaurare HashMap import în ChatWebSocketController

Refactorul anterior a eliminat importul HashMap dar manerTyping metoda construiește încă un HashMap pentru sarcina utilă eveniment de dactilografiere, cauzând F...

Kamo·6mo ago
Fixkamo-internal

Adăugaţi min-w-0 la e-mail conţinut div atât de supraîncărcat-x-auto incendii

Fără min-w-0, dimensiunea minimă implicită a copilului flex-col:auto se rezolvă conţinut-min, permiţând tabele largi de e-mail extinde div peste coloana lățimea...

kamo·6mo ago
Fixkamo-marketing

Elimină apelul de conectareStomp în message

Atunci când primul mesaj creează o nouă sesiune, onSessionCreated updates recuzită care declanşează utilizareaEffect pentru a apela ConnectStomp. Apelul inline ...

Kamo·6mo ago
FixMediaService

Creează activ consumatorul NAT la crearea sesiunii pentru a preveni pierderea mesajelor

Din episoadele anterioare: trimis /app/chat/subscribe. Cu DeliverPolicy. Nou, orice mesaje publicate înainte de consumatorul există sunt permanent pierdute Nic...

Kamo·6mo ago
Fixkamo-internal

Închide decalajul de reconectare care cauzează mesaje în timp real scăzute

Eliminați ChatBox. Anterior, fiecare reconectare WebSocket declanșat efectul Curățare care a numit unsubscribe(), șters sesiunea din harta abonamentului, și tr...

kamo·6mo ago
FixSecurityService

Permite utilizatorului sistemului să gestioneze branding-ul org și să stabilească logo-ul auth

- Adăugați bypass-ul utilizatorului sistemului ca prim paznic în canManageOrgBranding astfel platforma utilizatorul sistemului are control complet asupra tuturo...

Kamo·6mo ago
Fixkamo-internal

Conţine supraîncărcare orizontală în vedere vedere e-mail la coloana a 3-a

- Adăugați supraîncărcare-x-ascuns în Containerul exterior de mesaj ca limită tare - Adăugaţi supraîncărcare-x-ascuns la coloana 3 ambalaj şi supraîncărcare-x-a...

kamo·6mo ago
FeatureKlusterServices

Producţie eşuată2ban cu închisori PJSIP şi stat persistent

- Adăugaţi eșuare2ban-configmap.yaml cu [asterisk] şi [freepbx-web] închisori, Creştere treptată a interdicţiei (1h→24h→30d plafon), LAN ignoreip şi a filtru pe...

Kamo·6mo ago
FixKlusterServices

Se înlocuiește Coqui TTS cu Piper TTS (en US-norman-mediu)

Modelul Coqui VCTK nu are boxe numite vocea exacta a lui Norman [mediu]. Piper binar (~3 MB) și model (~60 MB) sunt descărcate de un container init pe prima cu...

Kamo·6mo ago
FixEmailService

Reset stale hasAttachments on sync and accumulate correctly

- Reset has_attachments=false at start of bulk sync so stale true values from old false-positive MIME detection are cleared before re-indexing - Accumulate ha...

Kamo·6mo ago
Featurekamo-shared-library

Add resetHasAttachmentsForFolder query to ConversationRepository

Allows sync to reset stale has_attachments flags before re-indexing so corrected MIME detection can rebuild the field from actual attachment data.

Kamo·6mo ago
FeatureKlusterServices

Integrate Coqui TTS with norman voice (VCTK p267)

- Deploy coqui-tts server (VCTK VITS model, CPU-only) as ClusterIP service on port 5002 with model cache at /var/lib/coqui-tts on k1m1 - Inject coqui_tts.agi ...

Kamo·6mo ago
Fixkamo-internal

Pre-populare DE la răspuns / înainte și fix trimite de la Adress

- DraftMessage acum poartă de la Adress astfel încât curge de la OpenNewMessage prin intermediul compozitorului - MesajBrowser stochează e-mailul cu căsuță poșt...

kamo·6mo ago
FixEmailService

Suport de la @ info: whatsthis

Adaugă FromAddressRequest to EmailSendRequest so the frontend can specification din care se poate trimite adresa de e-mail/împărtășit/cutie. SmtpOnlyProvider ac...

Kamo·6mo ago
FeatureKlusterServices

Add LAN DNS pod for split-DNS on k1m1

Deploys a dnsmasq pod with hostNetwork on k1m1 that listens on 192.168.4.22:53. Overrides pbx.k1.kluster.kamocrm.com -> 192.168.4.22 so LAN phones reach the PBX...

Kamo·6mo ago
FixKlusterServices

Adaugă local net pentru Split-DNS / LAN client RTP fix

Telefoane pe același LAN ca și conexiunea k1m1 prin DNS divizat (domeniul rezolvă la 192.168.4.22 intern). Fără a local net, Asterisk încă face publicitate dome...

Kamo·6mo ago

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing