KamoCRM

Live Change Log

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

17,650
Total Changes
6,071
Features
5,339
Fixes
30
Projects
Filter by project
All Projects17,650AIService260APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService586InitializerService329KBService151KlusterServices744MCPGatewayService261MediaService604RAGService79SecurityService1,872TranslateService62VOIPService250VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,411kamo-login340kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,678kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore775Docs3,257Feature6,071Fix5,339Other998Performance165Refactor278Revert23Style42Test162Upgrade1
April 26, 2026
Fixkamo-internal

Globe utilizza la presenza di sessione media per i visitatori di marketing

Richiedi GUID di sessione a catena pubblica in snapshot di presenza; tratta online se sessione o membro del richiedente è collegato. Maniglia la busta istantane...

kamo·6mo ago
FixMediaService

Traccia chat di supporto pubblico per sessione GUID in Redis

I visitatori di marketing utilizzano /ws/public-chat-native senza membroId; i biglietti ancora riferimento al titolare del posto org come richiestore. Increment...

Kamo·6mo ago
FixVOIPService

Non pulire l'assegnazione dei membri sulla sincronizzazione da fornitori che mancano di metadati

E' il momento giusto. incondizionatamente PhoneExtension.assignedMemberId con qualsiasi cosa il fornitore restituito. FreePBX (e qualsiasi fornitore che non rin...

Kamo·6mo ago
Fixkamo-internal

Mostra il nome del fornitore in modalità vista + estensione propria in riepilogo

Due cimici addosso. 1. Modalità di visualizzazione scaricato UUID grezzo — "Instance 32f520b0-347a-..." — perché l'elenco delle istanze è stato caricato solo d...

kamo·6mo ago
Fixkamo-shared-library

Serialize ExtensionDto.assignedMemberId come una stringa

overflows della gamma safe-integer di JS (ad esempio 1168485658174423046 round-trips come 1168485658174423000 una volta che un numero JSON colpisce il browser)....

Kamo·6mo ago
FixKlusterServices

Rendere WebRTC configurazione sopravvivere pod riavvio

L'approccio precedente (http custom.conf con [general] override) non è stato effettivamente prendere effetto perché il parser INI di Asterisk non onora più [gen...

Kamo·6mo ago
FixKlusterServices

Attivare il server HTTP integrato Asterisk su:8089 per WebRTC /ws

Un chan pjsip `protocol=ws` trasporta gite in cima a res http websocket, che a sua volta richiede che il server HTTP integrato di Asterisk sia in esecuzione. Th...

Kamo·6mo ago
FixSecurityService

Prioritizzare il nome reale primo / ultimo sopra il nome utenteAlias per il display

usernameAlias è funzionalemente una maniglia di login (spesso uguale a nome utente), non un nome di visualizzazione. I veri nomi umani-leggibili vivono su User....

Kamo·6mo ago
Fixkamo-internal

Scope Aggiungere piombo scorrimento e piè di pagina alla sua area di contenuto

La forma stava usando minHeight: 100vh dentro un genitore che è già calc(100vh - 56px), forzando una barra di scorrimento esterna anche quando il contenuto si a...

kamo·6mo ago
Fixkamo-internal

Smart layout multicolonna per Aggiungi modulo di piombo

Ristrutturare la pagina in una griglia di alto livello quindi le sezioni compongono orizzontalmente invece di allungare i singoli campi: - Market & Assignment ...

kamo·6mo ago
Fixkamo-internal

Utilizzare /api/security/members/names per la risoluzione dei nomi assegnati

I filtri endpoint di by-department per il solo TeamMembers attivo, mancante assegnazioni ai membri di base o ai membri inattivi. Passare a /nomi che restituisce...

kamo·6mo ago
Fixkamo-internal

Aggiungi modulo di piombo e clearance per il piè di pagina appiccicoso

Getta la larghezza massima 1200px su /leads/new quindi il modulo abbraccia l'area pagina, e paraurti imbottitura in modo che la barra di azione appiccicosa non ...

kamo·6mo ago
FixSecurityService

Risolvere il nome del display con una corretta priorità in endpoint by-department

Priorità: member.usernameAlias → user.name.formatFull() → user.alias → user.username

Kamo·6mo ago
Fixkamo-internal

Sonda modello master endpoint e fix applicatoModello org ID

- Sostituire applicatoModel.source-based gate con una sonda diretta /api/security/master-model sul montaggio; r.ok=false (409) significa org è regolato da un ti...

kamo·6mo ago
Fixkamo-internal

Gate censorship tab options by applied model constraints

- Hide EDIT MASTER MODEL button when org is governed by a branch type (use appliedModel.source instead of unreliable org context branchTypeID) - Hide ATF fiel...

kamo·6mo ago
Fixkamo-internal

Mark-as-read and message fetch for shared/member mailboxes

Classic mode now loads shared mailbox messages via the correct /messages/{folder} endpoint (was calling the non-existent /conversations endpoint). Fetching a fu...

kamo·6mo ago
FixEmailService

Mark-as-read for shared and member mailboxes

EmailController.setFlags now accepts an optional mailboxId query param and routes through resolveProviderWithMailbox so member-mailbox flags are set against the...

Kamo·6mo ago
FixVOIPService

Use extensionId as external ID, not Relay node id

FreePBX returns the same Relay id (ZXh0ZW5zaW9uOg== = "extension:") for every extension because the id field is not populated. Using it caused all extensions to...

Kamo·6mo ago
FixEmailService

Maniglia IMAPInputStream in getMessage per evitare ClassCastException

JavaMail può restituire un IMAPInputStream invece di uno String decodificato da part.getContent() quando il contenuto del messaggio non è stato pre-fetched. The...

Kamo·6mo ago
FixVOIPService

Riscrivi tutte le query/mutazioni GQL contro l'introspezione dello schema live

Verificato ogni nome del campo e digitare contro lo schema effettivo FreePBX 17. Set completo di correzioni: Query: - fetchAllExtensions: rimuovere il campo "v...

Kamo·6mo ago
Fixkamo-internal

Passare selezionatoFolder a ThreadDetailView in modo e-mail:fuochi cambiati cartella con una cartella valida

conversazione.folder è sempre non definita perché la conversazione Java ha folderIds (text[]) non un campo di stringa cartella. Questo ha causato il carico. cal...

kamo·6mo ago
FixVOIPService

Corretto il nome del campo di GraphQL per fetchAsteriskDettagli

FreePBX API restituisce "Vuoi dire fetchAsteriskDetails?" — rinominare la salute controllare query e il suo percorso di dati accesso di conseguenza.

Kamo·6mo ago
FixVOIPService

Aggiungere le intestazioni XHR/Accept e l'analisi della risposta di stringa al client GraphQL

Stesso modello di FreePBXTokenCache: aggiungere X-Requested-With + Accettare: applicazione/json per sopprimere le risposte redirect HTML di FreePBX, e passare t...

Kamo·6mo ago
Fixkamo-internal

Sincronizzazione casella di posta a discesa nella casella di posta primaria sul carico

Dropdown predefinito alla prima voce dell'elenco perché selezionatoMailbox inizializzato senza mailboxId, causando correnteValuta di risolvere a nudo 'personale...

kamo·6mo ago
FixAPIService

Aumentare il limite di dimensione del file di upload a 500MB

Spring Boot predefinisce il tappo di parti multipart a 1MB, causando l'immagine di sfondo caricamenti per fallire con 500 in request.getParts(). Match SecurityS...

Kamo·6mo ago
Fixkamo-internal

Gli errori HTTP di superficie così i guasti di upload sono visibili

Sostituito console silenziosa.warn con un errore gettato sullo stato non-OK, così l'utente vede il motivo di fallimento effettivo (status + corpo di risposta) i...

kamo·6mo ago
FixVOIPService

Aggiungete le intestazioni Accept+XHR e la parsing di risposta cruda per il punto finale di token

FreePBX stava ritornando testo/html quando viene chiamato tramite cluster DNS perché L'intestazione host non corrisponde al PBX HOSTNAME configurato. Aggiunta A...

Kamo·6mo ago
Fixkamo-marketing

Guidare l'ingresso minimizzato-tab attraverso i controlli di animazione

Cambiare animate={...} per animare={tabControls} ha rotto la voce animazione: tabControls non ha un target in coda sul montaggio, quindi il pulsante è rimasto a...

Kamo·6mo ago
FixVOIPService

Correggere le stringhe di portata OAuth2 per FreePBX API

Gli ambiti FreePBX sono identificatori di alto livello: 'gql' (tutti GraphQL) e 'rest' (tutti REST). Il formato 'gql:read' significa GQL per un modulo chiamato ...

Kamo·6mo ago
FixKlusterServices

Esposizione porto 8088 direttamente sul servizio ClusterIP

Il servizio aveva solo il porto 80→8088 mappatura. Servizi interni Non e' vero. (ad es. token API VOIPService richieste) erano tempi out perché porto 8088 non a...

Kamo·6mo ago
Fixkamo-internal

Trust backend pendenteCount, drop client offset

Backend Paese in sospeso è ora non letto (conti SUPPORT TICKET sessioni con i messaggi più recenti dell'ultima vista del proprietario). Quando l'agente si apre ...

kamo·6mo ago
FixKlusterServices

Aggiungi fail2ban-config ConfigMap mancante per k1m1

Riferimenti di distribuzione fail2ban-config ConfigMap (jail.local + asterisk-security.conf) ma non esisteva, bloccando la capsula MountVolume. Impostare e impe...

Kamo·6mo ago
April 25, 2026
Fixkamo-internal

MarkAsRead dopo che l'agente invia così lastViewed avanzamenti

Sui biglietti di supporto, sia i messaggi dei visitatori che degli agenti vengono memorizzati sotto stesso sistemaMember, quindi la query ilread-count è membro-...

kamo·6mo ago
Fixkamo-shared-library

I biglietti di supporto hanno bisogno di conteggi non letti

I messaggi dei visitatori sui biglietti di supporto vengono memorizzati sotto lo stesso sistemaMember che l'agente autentica come, in modo che l'attuale session...

Kamo·6mo ago
Fixkamo-internal

Passare la cartella per caricareIl pulsante di riprovazione

loadThread prende (threadId, cartella); il pulsante di ripristino di errore solo passato threadId, rompendo la costruzione kamo-internal. Abbina la chiamata a l...

kamo·6mo ago
Fixkamo-shared-library

Corretto JsonIdentity Info proprietà da 'uniqueId' a 'id'

Ente membro ha dichiarato @JsonIdentityInfo(property = "uniqueId") ma il campo chiave principale effettivo è chiamato 'id'. Jackson ha lanciato "non può trovare...

Kamo·6mo ago
Fixkamo-marketing

Rimuovere la guardia SSR causando errore di idratazione; goccia SockJS per nativo WebSocket

- Hero.tsx: rimuovere il tipo di finestra controllare intorno ParticleField — ParticleField già ha ssr:false così la guardia ha prodotto un errore server/client...

Kamo·6mo ago
Fixkamo-internal

Indicatori illeggi chiari quando si apre la conversazione

ThreadDetailView invia ora e-mail:folder-changed dopo markConversationRead riesce così MailButton refetches il conteggio del distintivo di inbox navtop. Convers...

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

Fornitori di hoist sopra ToolProviders

Stessa causa principale del paranco ChatWebSocketProvider: SupportTicketWindow chiamate E ChatBox chiama. useUnread().markAsRead(), ma entrambe le finestre dell...

kamo·6mo ago
Fixkamo-marketing

Aggiungi soppressioneHydrationWarning e fissare immagini segnaposto rotto

soppressioneHydrationWarning su <html> impedisce React errore #418 causato dal browser estensioni (ad esempio tradurre, modalità oscura) che mutano gli attribut...

Kamo·6mo ago
FixKlusterServices

Consentire /domain/ percorso prefisso sul tema IngressRoute per CORS

Il tema config a tema.kamocrm.com/domain/... non è stato abbinato dal regole di rotta esistenti (solo /pubblico/ e /internal/ sono stati autorizzati), quindi Tr...

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