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...
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 ...
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...
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...
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...
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) — ...
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...
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...
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...
Rimuovi Account.notes riferimenti da AccountViewClient Modifica finestra di dialogo
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...
Risolvere la mappatura della colonna duplicata sovrascrivendo colonne di indirizzi incorporate a MAILING *
Aggiorna gli adattatori RetailService e provider per la rimozione di Account.notes e la conversione di CurrencyType
Omit "My" prefisso nel titolo dell'account quando si visualizza un altro membro
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...
Ripristinare l'importazione dell'organizzazione rimosso per caso
organizzazione.id è ancora necessario nel manicoCreateDocument richiesta corpo; solo la condizione isDocsEditor dovrebbe essere stata rimossa.
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. ...
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...
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...
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...
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...
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...
Mantenere tutti i campi di nome su una riga in un nuovo modulo di piombo
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...
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...
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...
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...
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 ...
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...
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...
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...
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.
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...
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...
Aggiornare OrgThemeProvisionServiceTest per il parametro di descrizione di buildConfigJson
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...
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...
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() è ...
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...
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 ...
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...
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 ...
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...
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...
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 ...
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...
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.
