KamoCRM

Live Change Log

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

17,662
Total Changes
6,080
Features
5,341
Fixes
30
Projects
Filter by project
All Projects17,662AIService261APIService174BillingService158ConversionService110DaemonService138DocsService223ESigService91EmailService587InitializerService329KBService151KlusterServices744MCPGatewayService261MediaService604RAGService79SecurityService1,874TranslateService62VOIPService250VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,413kamo-login340kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,682kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild16CI523Chore776Docs3,257Feature6,080Fix5,341Other998Performance165Refactor278Revert23Style42Test162Upgrade1
April 28, 2026
Fixkamo-internal

Aggiungi statusWindow etichette namespace e fissa tutti i segnaposto di impostazione

- Aggiungi le impostazioni. nav sidebar mostra testo reale invece di percorsi chiave - Fix branchTypesLabel formato ICU: \${branchLabel} → {branch} - Fix tr() f...

kamo·6mo ago
Fixkamo-internal

Abbinare altre finestre utensili dimensioni + schema di colori

- defaultSize e minSize ora 320x650, resizable: false (matches Softphone, Chat, Calculator, SMS, AI Chat) - Passato dal gradiente di ardesia scuro al gradiente ...

kamo·6mo ago
Fixkamo-internal

Forward Range header so audio playback can scrub

Without this the VOIPService recording-streaming endpoint always returns the full file (Range header is dropped by buildForwardHeaders), which works for play-fr...

kamo·6mo ago
FixKlusterServices

Rewrite /etc/odbc.ini to point at $MARIADB_HOST on every boot

The escomputers/freepbx:17 image bakes /etc/odbc.ini with Server=db (the docker-compose link target). On this Kubernetes deployment MariaDB lives at \$MARIADB_H...

Kamo·6mo ago
FixVOIPService

Resolve member→extension before VM/CDR provider lookup

CallController was passing memberId where FreePBX (and other PBX-style providers) expect an extension number — voicemail listing returned empty because no PBX e...

Kamo·6mo ago
FixSecurityService

Auto-assegnare il primo posto, Libero come pavimento, più ampio org invalidazione

BillingSetupService attiva ora la prima slot di licenza aperta per il creatore quando si vede un abbonamento sub-org (e lo stesso per promo-to-billing-owner) — ...

Kamo·6mo ago
FixSecurityService

I membri di org di livello superiore ottengono il piano del proprietario della piattaforma, bypass cancelli di fatturazione

KamoCRM (alto livello) org membri non sono soggetti al sistema di fatturazione — essi ottenere il piano OWNER UNLIMITED caratteristica matrice outright (con Fre...

Kamo·6mo ago
Fixkamo-shared-library

Bypass di livello superiore + Rimborso base gratuito per org senza sub

L'assegno di livello org e' stato controllato. abbonamenti di passeggiate che mirano a un org. Con il nuovo modello target org, org che non hanno ancora un targ...

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

Rimuovi il titolo di storia del campo ridondante dal pannello di storia

L'etichetta di scheda già trasmette contesto — titolo e sottotitolo stavano sprecando spazio dello schermo. Pulsante di ricarica spostato in linea nella barra d...

kamo·6mo ago
Fixkamo-internal

Rimuovere il layout prop causando corpo e-mail rimbalzamento

Il movimento esterno. div `layout` prop combattuto con l'animatePresence interiore altezza: animazione 'auto', creando un loop di feedback FLIP sulle e-mail con...

kamo·6mo ago
Fixkamo-internal

Mostra sempre Creare Document pulsante sulla pagina Doc Manager

Rimuoveto il getMemberId() > 0 guardia che nascondeva il pulsante durante la finestra di caricamento UserInfo. La pagina è già dietro auth quindi no qui è neces...

kamo·6mo ago
Fixkamo-internal

Ripristinare l'importazione dell'organizzazione rimosso per caso

organizzazione.id è ancora necessario nel manicoCreateDocument richiesta corpo; solo la condizione isDocsEditor dovrebbe essere stata rimossa.

kamo·6mo ago
Fixkamo-internal

Mostra Crea il pulsante Document per tutti i membri registrati

L'org caratteristica flag check (isDocsEditor → isDocs → hasFeature DOCS) era di ritorno falso perché le caratteristiche org usano i tipi di chiavi deprecated. ...

kamo·6mo ago
Fixkamo-internal

Rimuovere i filtri di livello campo datagrid e la riga di filtro galleggiante

Disabilita tutti i filtri della colonna e la riga di ingresso del filtro galleggiante in modo da griglia mostra solo intestazioni di colonna e righe di dati. An...

kamo·6mo ago
Fixkamo-internal

Spostare il pulsante Carica nella barra degli strumenti DocManager

Il trigger di carico è stato solo in /doc/manager pagina azioni prop, rendendolo invisibile quando DocManager è incorporato in altre pagine. Spostato il pulsant...

kamo·6mo ago
Fixkamo-internal

Consentire le opzioni di caricamento per scorrere in DocManager incorporato

Il contenitore della scheda di carichi era troppo pieno: nascosto, clipping per-file opzioni (descrizione, cartella, tipo doc, livello di accesso) in altezza li...

kamo·6mo ago
Fixkamo-internal

Fissare 400 errore di alimentazione e aggiungere sub-tabs di comunicazione con params URL

Fissare il doppio? bug in MediaStream dove feedEndpoint già contenuto query params ma il fetch allegato ?page=... invece di &page=..., causando un URL malformat...

kamo·6mo ago
Fixkamo-internal

Fai 'All Leads' un menu reale con icone nel filtro agente

- Sostituisci il segnaposto a valore vuoto con ALL così il dropdown non mostra mai vuoto quando All Leads viene selezionato - Aggiungi l'icona del gruppo a...

kamo·6mo ago
FixDaemonService

Consumare *** segreto così X-Internal-Auth corrisponde servizi a valle

DaemonService -> Servizio di conversione Non c'e' problema. di ritorno 401 Non autorizzato perché DaemonService stava timbrando la sua Intestazione X-Internal-A...

Kamo·6mo ago
Fixkamo-shared-library

Use @CreationTimestamp(source=DB) on ****************

The DB is the single source of truth for timestamps in this codebase. The canonical Hibernate pattern is @CreationTimestamp(source = SourceType.DB), which makes...

Kamo·6mo ago
Fixkamo-shared-library

Let DB fill **************** via @Generated(INSERT)

INSERTs were failing with: null value in column "date_created" violates not-null constraint @ColumnDefault only declares the DB-side default for new rows; Hi...

Kamo·6mo ago
Fixkamo-asterisk-support

Drop the [from-internal-custom] _X. catch-all that broke softphone calls

The catch-all exten => _X.,1 in [from-internal-custom] was intercepting every internal dial — softphones started reporting "phone is not registered" / calls wou...

Kamo·6mo ago
FixConversionService

Enable JPA repos for commerce + email + dao.repositories packages

ConversionService new pod CrashLoopBackOff with the same error DaemonService hit earlier: Parameter 0 of constructor in **************** required a bean of ...

Kamo·6mo ago
FixAPIService

Carve /api/voip/recordings/** out of the wildcard VOIP forwarder

The /api/voip/** catch-all in APIGatewayController was shadowing the dedicated VoipRecordingUploadController POST /api/voip/recordings/upload mapping when Sprin...

Kamo·6mo ago
Fixkamo-asterisk-support

Write managed config files 0644 so the asterisk daemon can read them

The kamo-asterisk-support pod runs as root and writes to host-mounted **************** Asterisk inside the FreePBX pod runs as user "asterisk" and could not rea...

Kamo·6mo ago
Fixkamo-asterisk-support

Utilizzare la sintassi \${VAR} compatibile con envsubst nel modello di configurazione + re-render sui segnaposto stanti

I Pod erano CrashLoopBackOff con "errore di configurazione: API KEY manca o troppo breve" perché il modello di configurazione usato literal API KEY marcato...

Kamo·6mo ago
Fixkamo-asterisk-support

Drop unused watcher import

uploader.go only uses CallBatch (declared in grouper.go in the same package), not anything from internal/watcher directly. Go rejects unused imports.

Kamo·6mo ago
FixDaemonService

Abilita repos JPA per il commercio + email + pacchetti dao.repositories

DaemonService si è schiantato all'avvio con: Parametro 0 del costruttore in... richiesto Un fagiolo di tipo... non si puo' trovare. Un servizio di biblioteca i...

Kamo·6mo ago
FixVOIPService

Cattura nuovoExtNumber come finale per la cattura di agnello in MemberVoipConfigController

nuovoExtNumber è condizionatamente riassegnato all'interno del se (isVoipEnabled && ...) blocco, che lo rende non effettivamente finale. Il blocco di sincronizz...

Kamo·6mo ago
Fixkamo-internal

Cast voiceActivityDetection per bypassare il tipo mancante di TS DOM

voiceActivityDetection è una proprietà WebRTC MediaTrackConstraints ma è assente dalla libreria DOM di TypeScript, causando un errore di tipo al momento della c...

kamo·6mo ago
April 26, 2026
FixKlusterServices

Configurare STUN in modo che il browser ICE possa completare bidirezionale

Due parti browser-a-browser chiamate connesse allo strato SIP ma non aveva audio o direzione. Voicemail (one-way Asterisk → browser) ha lavorato perché Asterisk...

Kamo·6mo ago
Fixkamo-internal

Audio dal vivo che sopravvive a interruzioni di carico, spinner centrati, ringback in uscita

Tre correzioni coordinate per il percorso audio in-call: 1. AbortError su remotoAudio.play() (visibile nella console di produzione come "La richiesta play() è ...

kamo·6mo ago
Fixkamo-internal

Hangup tears down ALL live sessions, not just the primary

Self-call edge case left a session leaked: dialing your own extension creates an outbound session, then Asterisk loops the call back as a second inbound session...

kamo·6mo ago
Fixkamo-internal

Instant connecting feedback on outbound dial

Same problem the inbound Answer button had: clicking Call kicked off the SIP INVITE round-trip (1-3 seconds) but the button kept its idle "Call" appearance the ...

kamo·6mo ago
Fixkamo-internal

Collegare l'animazione + l'audio che in realtà gioca + sbloccare suoneria

Tre correzioni coordinate per il percorso in entrata: 1. feedback visivo durante l'accettazione. Fare clic su Risposta sinistra entrambi i pulsanti — la negozi...

kamo·6mo ago
Fixkamo-internal

Mount SoftphoneProvider sopra ToolDock in modo che le finestre degli strumenti possano leggerlo

Aprire il Softphone popup ha bloccato la pagina con "Questa pagina non poteva caricare" perché le finestre degli strumenti montano dentro ToolDock, che vive in ...

kamo·6mo ago
Fixkamo-internal

Utilizzare Grid dimensione prop in modo da pannelli AV riempire la riga

MUI v7's Grid è basato su flexbox, quindi la grigliaColumn sx che stavo usando era un no-op — elementi resi alla loro larghezza naturale e lasciato vuoto spazio...

kamo·6mo ago
Fixkamo-internal

Migrare ID suoneria stale per default su carico

Se le preferenze AV salvate dell'utente fanno riferimento a una suoneria che non è più esiste nel catalogo (ad esempio "classico" da prima che il catalogo fosse...

kamo·6mo ago
Fixkamo-internal

Le cifre di Dialpad ora registrano sui dispositivi touch

I pulsanti dialpad chiamati e.preventDefault() in entrambi suTouchStart e Su TouchEnd. Che impedisce al browser di sparare l'evento di clic sintetico che segue ...

kamo·6mo ago
FixKlusterServices

Host browser SIP WSS su internal.kamocrm.com (vera cert)

I browser hanno rifiutato il collegamento di WebSocket a... con il codice vicino 1006 perché Traefik stava servendo il suo cert di default auto-firmato per quel...

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