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 21, 2026
FixSecurityService

Scrie globals.css înainte de curățare; executați cleanup async

Recomandă furnizarea Actualizează astfel scrieConfigFiles (colore, config, manifest) rulează înainte de curăţarea fişierului. Reîncarcă org de la DB pentru culo...

Kamo·6mo ago
FixSecurityService

Aplicați culorile org angajate la Globals.css MinIO

Reîncarcă organizația de la DB la începutul furnizării asinc ScrewConfigFiles vede culorile salvate de PATT / culori (captura controlorului ar putea fi vechi). ...

Kamo·6mo ago
FixSecurityService

Mark DNS-verificate domenii personalizate ca isDefault în domeniul API

Din episoadele anterioare: cu un domeniu apex personalizat verificat (de exemplu, kamocrm.com) a primit întotdeauna Domain implicit=null și au fost blocate de l...

Kamo·6mo ago
FixSecurityService

Monedă lipsă de proprietate TXT la citire

Kamo·6mo ago
FixSecurityService

Permite branding atunci când utilizatorul este proprietarul org TeamMember

Tema de furnizare și logo / background uploads verificat doar Organizația. proprietar FK; aplicația UI tratează proprietarul organizației ca TeamMember.isOrgani...

Kamo·6mo ago
FixSecurityService

Clear user and member FKs before stergere avatar row

Eliminarea unui avatar a eșuat cu o constrângere DB atunci când a fost încă avatarul utilizatorului activ sau o suprascriere specifică unui membru, care se potr...

Kamo·6mo ago
FixSecurityService

Rezolvați gazda de foldere fără verificare strictă a DNS

Tema furnizarea necesară esteDnsVerified pentru fiecare domeniu, astfel încât orgi folosind numai subdomeniu implicit kamocrm.com nu a început niciodată munca a...

Kamo·6mo ago
FixSecurityService

Publică progresul în furnizarea tematicii pe baza NATS

JetStream CHAT Mesages stream este configurat doar pentru chat.>, astfel încât publică Pentru a *************** validarea fluxului a eșuat și IU a văzut Nici un...

Kamo·6mo ago
FixSecurityService

Parse create-org JSON fără @RequestBody pentru a evita 415

Primăvara returnează tipul de media nesusţinut atunci când tipul de conţinut lipseşte sau nu acceptat pentru @RequestBody. Citiți octeți și utilizați ObjectMapp...

Kamo·6mo ago
April 20, 2026
FixSecurityService

Citiți drepturile sesiunii ca listă sau moștenire CSV pentru obiectivele membre

KSessionService and SecurityRoleController store rights as List<String> of Role RightType names. MemberSecurityController distribuit pe șir și împărțit pe virgu...

Kamo·6mo ago
FixSecurityService

Evitaţi tranzacţiile care otrăvesc DDL şi Harden multi-pod curse

Precedentul auto-vindecare pune DDL într-o sincronizare @TransactionalAll(). Atunci când un ALTER TABELUL ADD CONTRAINT tras asupra unei constrângeri existente ...

Kamo·6mo ago
FixSecurityService

Utilizați getOrganizationById WithFatures in ApppAvailability Interceptor

Rezolvă LazyInitializare Excepție pe /api/securitate / plumb și toate alte căi CRM/POS. Interceptor numit org.getFeatures () după încheierea tranzacției; noua m...

Kamo·6mo ago
FixSecurityService

Rezolvă fila de membri care arată gol din cauza Hibernate TIP () clasa de bază

Tip hibernat (m) =:tip filtru JPQL întoarce 0 rezultate atunci când legat parametrul este clasa de bază a membrilor (moştenirea JOINED). Acest lucru afectează c...

Kamo·6mo ago
FixSecurityService

Use correct session key 'memberID' instead of 'MID'

KSessionService stores member ID under key 'memberID' but both **************** and OrganizationController were reading session.get("MID") which always returned...

Kamo·6mo ago
FixSecurityService

Exclude master model from models list; add debug log to child-org creation check

SecurityModelController now filters out the org's master model (identified by org.getMasterModelID()) from the /api/security/models response — it is managed exc...

Kamo·6mo ago
FixSecurityService

Read session rights as List<String> names, not CSV of integer IDs

Session rights are stored as a JSON array of RoleRightType name strings. Both **************** and OrganizationController were casting them to String (causing C...

Kamo·6mo ago
April 19, 2026
FixSecurityService

Use core NATS pub/sub for email-verified SSE fan-out

Replaces in-memory ConcurrentHashMap broadcast with NATS core pub/sub so all pods receive verification events regardless of which pod handled the token. Falls b...

Kamo·6mo ago
FixSecurityService

Use avatarType field + JDBC for photo URL generation to handle Hibernate proxies

**************** previously used instanceof AvatarPhoto to determine avatar type and cast to read fileExtension. When Hibernate returns a base-class proxy (e.g....

Kamo·6mo ago
April 18, 2026
FixSecurityService

Populate all EMAIL_VERIFICATION template variables

Was sending only {token, code} — template also needs orgName, firstName, verifyLink, and expiryMinutes. Load org and user to build the full vars map, and resolv...

Kamo·6mo ago
FixSecurityService

Use subdomain-aware SQL to match findByDomain JPQL logic

Org domain lookup in resendVerification was doing an exact-match query that failed for subdomains stored as child records (e.g. 'api' with parent 'kamocrm.com')...

Kamo·6mo ago
FixSecurityService

Correct EmailService URL port in configmap (4203 -> 80)

EmailService K8s service exposes port 80, not 4203. Verification emails were timing out on every registration attempt.

Kamo·6mo ago
FixSecurityService

Bypass JPA org lookup to avoid Hibernate cascade flush error

**************** triggers **************** which causes a Hibernate auto-flush. That flush fails because Organization.features was previously replaced with a pl...

Kamo·6mo ago
FixSecurityService

Use getReferenceById to avoid cascade orphanRemoval flush error on registration

Loading Organization via findById inside @Transactional caused Hibernate to detect the features collection was de-referenced during auto-flush, throwing JpaSyst...

Kamo·6mo ago
FixSecurityService

Align registration field names and response shape with frontend contract

Frontend sends nameFirst/nameLast but controller read firstName/lastName, causing 400 "First name is required". Success response now returns {status, userId, al...

Kamo·6mo ago
FixSecurityService

Add SecurityService and dao.repositories to EnableJpaRepositories scan

UserPhoneLookupRepository in recovery package was not picked up because EnableJpaRepositories only listed dao.repos and commerce. Added the SecurityService base...

Kamo·6mo ago
FixSecurityService

Resolve duplicate emailTemplateServiceClient bean conflict

**************** and **************** were identical @Components with the same default bean name, causing **************** at startup. Delete the duplicate in r...

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