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...
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...
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...
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...
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...
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...
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 ...
Live distintivo illeggibile + rimbalzo sul nuovo messaggio agente
- Mantiene LiveSupportPanel montato fuori schermo mentre il widget è minimizzato (solo quando esiste una sessione di supporto) in modo che l'abbonamento STOMP r...
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...
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 ...
Trasmissione contante in sospeso + non letto su agente leggere & visitatore invio
- Ora deleghe a... Il conto e' cosi'. riflette sessioni con messaggi e decrementi non letti dei visitatori quando agente chiama markAsRead. - Un nuovo pubblico....
Conto non letto + helper di ricerca per sessione
Aggiunga il navtop. SupportButton badge può contare i biglietti di supporto che in realtà hanno bisogno attenzione (hanno messaggi di visitatori non letti) inve...
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...
Ricostruire per tirare l'ultimo kamo-shared-library
Riprende il nuovo. domande e il ramo SUPPORT TICKET in..
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-...
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...
Aggiungi logging per caricareBackground endpoint
Log org/index, informazioni sui file, userId, decisioni auth e staging MinIO chiave per tracciare perché gli upload di sfondo non appaiono in secchio di staging...
Aggiungi il login al percorso proxy di upload-background
Log org/index, nome file/size/type e stato di risposta a monte per diagnosticare perché gli upload di sfondo non stanno raggiungendo APIService.
Aggiungi colonna posizione per ticket datagrid
Leggi E' il momento giusto. direttamente dal SupportTicketDTO (ora snapshot sull'entità del biglietto tempo di creazione — nessun viaggio extra rotondo). Bandie...
Memorizza geo sul biglietto alla creazione, rilascia GeoLite
****************************************************************************************************************************************************************...
Geo visitatore istantaneo sull'entità dei biglietti
Aggiunge VISITOR IP ADDRESS, VISITOR COUNTRY CODE, VISITOR COUNTRY NAME, VISITOR CITY, colonne VISITOR SUBDIVISION. Catturato alla creazione di biglietti quindi...
Visitatori e salta GeoLite nella lista
Il /api/support/tickets elenco endpoint è stato in esecuzione, per pagina di 20 righe: - 20 chiamate (N+1) - 20 chiamate in GeoLookupService.lookup, ognuno dei ...
Aggiungi findBySessionGuidIn per il caricamento in massa
Utilizzato dalla lista di supporto-ticket endpoint per catturare tutti i visitatori per un pagina in una domanda invece di N trovare separatoBySessionGuid chiam...
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...
Ricostruire per raccogliere I membri JsonIdentity Info fix da kamo-shared-library
kamo-shared-library b57d156 correzioni @JsonIdentityInfo(property = "uniqueId") → "id" su Membro, risolvendo 400 errori su PUT /api/security/org/{id}.
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...
Aggiungi /ws/public-chat-native plain WebSocket endpoint accanto a SockJS
Registra un secondo endpoint STOMP senza SockJS a /ws/public-chat-native che il frontend può connettersi con un WebSocket nativo (brokerURL) senza bisogno la li...
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...
Per-ticket unread badge + 'solo nuovi messaggi' filtro
- La lista dei biglietti mostra un distintivo di chat-bubble con il conteggio non letto accanto a biglietto # ogni volta che la sessione ha messaggi più nuovi d...
Trasmissione conta unread ad agente sul messaggio del visitatore
Dopo che un visitatore invia un messaggio di supporto, spingere gli ultimi incontri non letti Il carico di pagamento per la lista dei biglietti dell'agente. bad...
Includere sessioni SUPPORT TICKET in query di appartenenza non letta
findChatMembershipsByMemberId ora restituisce i membri sia per CHAT e SUPPORT TICKET tipi di sessione, in modo che il per-membro esistente infrastruttura (getUn...
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...
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 ...
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...
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...
Fornitori di hoist sopra ToolProviders
Stessa causa principale del paranco ChatWebSocketProvider: SupportTicketWindow chiamate E ChatBox chiama. useUnread().markAsRead(), ma entrambe le finestre dell...
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...
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...
Rimuovere duplicati CorsFilter e striscia a monte intestazioni CORS nel gateway
WebConfig.java ha definito un secondo fagiolo CorsFilter in competizione con CorsConfig. Java bean, rischiando di scrivere l'intestazione duplicata. L'ha cancel...
Rimuovere il fagiolo CorsFilter che causa il doppio intestazione Access-Control-Allow-Origin
L'esplicito fagiolo CorsFilter ha causato un secondo filtro CORS accanto alla primavera Supporto CORS integrato di sicurezza (che utilizza CorsConfigurationSour...
Rimuovere le dichiarazioni debug console.log e aggiungere le rotte mancanti
Rimuovi tutti i debug temporanei aggiunti durante il tracciamento di WebSocket ChatBox, TicketChat, MemberItem, ChatTool e useChatWebSocket; aggiungi reindirizz...
Evitare l'intestazione del messaggio da espandere la colonna su indirizzi lunghi
L'intestazione sinistra flex bambino non aveva min-w-0, così lunga e-mail infrangibile indirizzi in Da/To/Cc ha forzato la sua larghezza min-content per crescer...
Hoist ChatWebSocketProvider sopra ToolProviders
ToolDock (e le sue finestre degli strumenti come SupportTicketWindow → TicketChat) è montato all'interno ToolProviders, che si trova ABOVE PresenceWrapper nell'...
Drop Shadow DOM in e-mail renderr così overflow-x-auto incendi
Shadow DOM era la causa principale. Ampio contenuto di email (tavole di larghezza fissa) all'interno dell'albero ombra dipinto oltre l'ospite senza contribuire ...
Allineare il percorso di importazione ChatWebSocketContext al fornitore di corrispondenza
TicketChat e ChatNotificationListener hanno importato il contesto tramite '@/app/contexts/...' mentre PresenceWrapper (il fornitore) lo importa attraverso il pe...
Console temporanea.log per tracciare il percorso di abbonamento TicketChat STOMP
Aggiunge i registri delle console in ogni fase della pipeline di abbonamenti (incendio effetto, pass di guardia, iscrizione() chiamata, allegareSessionSubscript...
Contenimento dell'ospite dell'ombra della forza con stili in linea + contengono: layout
Il overflow-x-auto basato sulla classe sull'host ombra non stava vincendo in modo affidabile contro l'ombra ':host { tutto: iniziale }' reset, così ampia e-mail...
Scorrere ampio contenuto di email all'interno ombra DOM, non fuori
I precedenti tentativi di aggiungere overflow-x-auto agli antenati DOM leggeri non poteva catturare ampio contenuto di e-mail perché la visuale dell'albero ombr...
Come quello che vedi la spedizione?
Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.