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...
Presenza del globo separata per il marketing chat dal vivo vs membri
Pubblico Chat widget biglietti mantenere org segnaposto come requestorId; utilizzare solo presenza di sessione media per quelle righe. Interno e altri biglietti...
Periodic STOMP presenza battito cardiaco per il supporto pubblico
Refresh Redis TTL per la presenza di sessione pubblica in modo che gli agenti vedano preciso stato online.
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...
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...
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...
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...
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)....
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...
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...
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....
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...
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 ...
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...
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 ...
Risolvere il nome del display con una corretta priorità in endpoint by-department
Priorità: member.usernameAlias → user.name.formatFull() → user.alias → user.username
Aggiungi mancante èDisplayOnIntake campo a FormField interfaccia e nuovo campo literal
Utilizzare il tipo di stringa per assegnatoMemberId per prevenire la perdita di precisione
Serializzare Lungo come stringa per prevenire la perdita di precisione JS su grandi ID CockroachDB
Come quello che vedi la spedizione?
Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.