Adăugați logare la uploadBendment Background
Log org/index, info fișier, userId, auth decides, and MinIO staging cheie pentru a urmări de ce upload-uri de fundal nu apar în găleată de așteptare.
Adaugă logare pe ruta proxy încărcare-background
Log org/index, numele/dimensiunea fișierului/tipului și starea răspunsului în amonte pentru a diagnostica de ce upload-uri de fundal nu ajung la APIservice.
Adaugă coloana locației la ticket datagrid
Citiri Nu-ţi face griji. direct de pe TicketDTO de sprijin (acum instantaneu pe entitatea bilet la timpul de creare Înregistrează pavilionul + orașul/regiunea/...
Magazin geo pe bilet la crearea, picătură GeoLite citește
Acum capturează geografia vizitatorilor. o dată (prin GeoLookupService) și persistă ip/țară/oraș/subdivision pe Tichetul de sprijin în sine. SuportTicketServic...
Snapshot visitor geo on ticketent
Adaugă VIZITOR IP ADDRESS, VISITOR COUNTRY CODE, VISITOR COUNTRY NAME, VIZITOR CITY, VIZITOR SUBDIVISION Coloane. Capturat la crearea de bilete astfel încât cri...
Vizitatori de încărcare în vrac și săriți căutarea GeoLite în listă
Scopul listei /api/suport/bilete a fost de funcționare, pe pagina de 20 de rânduri: - 20 de apeluri. - 20 apeluri în GeoLookupService.lookup, fiecare dintre car...
Adaugă findbySessionGuidIn pentru încărcare în vrac
Folosit de obiectivul listei de sprijin pentru a aduce toți vizitatorii pentru o pagină într-o singură interogare în loc de N separat găsibySessionGuid apeluri.
Pass folder to chargeThread retry buton
take-uri de încărcareThread (fisier, folder); numai butonul de retrimitere a stării de eroare a trecut firId, ruperea cladirii kamo-interna. Meci de apel la sem...
Reconstruiește pentru a ridica JsonIdentity membru Info fix de la kamo-shared-library
kamo-shared-library b57d156 fixs @JsonIdentityInfo(property = "uniqueId") → "id" pe Membru, rezolvarea a 400 de erori pe Put /api/securitate/org/{id}.
Corectează JsonIdentitatea Info proprietate de la 'uniqueId' la 'id'
Entitatea membru declarată @JsonIdentityInfo[property = "uniqueId") dar Câmpul principal principal principal este numit "ID." Jackson aruncat "nu poate găsi o p...
Adăugați /ws/public-chat-nativ simplu WebSocket obiectiv alături de SockJS
Înregistrează un al doilea criteriu de evaluare STOMF fără SockJS la /ws/public-chat-nativ astfel că frontend se poate conecta cu un WebSocket nativ (brokerURL)...
Eliminați garda SSR care cauzează neconcordanțe de hidratare; picătură SockJS pentru WebSocket nativ
- Ero.tsx: eliminați tipul de verificare a ferestrei în jurul ParticuleField are ssr:fals astfel încât paznicul a produs un server / client nepotrivire copac (...
Per-tichetă necitită + filtru "doar mesaje noi"
- Lista biletelor arată o insignă de chat-bubble cu numărul necitit lângă # ori de câte ori sesiunea are mesaje mai noi decât a agentului ultimul mesaj vizualiz...
Contorizare necitită difuzată către agent la mesajul vizitatorilor
După ce un vizitator trimite un mesaj de sprijin, împingeți cele mai recente numere necitite Încărcătura la ************* astfel încât lista de bilete a agentul...
Include sesiunile de sprijin TICKET în interogarea necitită a membrilor
cautăChatMembershipsPrin membreId returnează acum membri atât pentru CHAT cât și SUPORT TICKET tipuri de sesiune, astfel încât existente per-membru necitit-cont...
Indicatoare clare necitite la deschiderea conversației
ThreadDetailView expedies e-mail:folder-changed after markConversationRead reuseste astfel MailButton restabileste insigna inbox invtop conta. ConversațieListVi...
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...
Furnizorii de înaltă peste ToolProviders
Aceeași cauză rădăcină ca ChatWebSocketProvider elevator: SuportTicketWindow apeluri *************** și apeluri ChatBox useUnread().markAsRead(), dar ambele fer...
Adaugă supresieHydrationAvertizare și repara imagini disfuncționale
supresieHydration Warning on <html> previne eroarea de reacție #418 cauzată de browser extensii (ex. traducere, modul închis) atribute mutante html între SSR și...
Permite/domeniul/prefixul traseului pe tema IngressRoute pentru CORS
Tema config la tema.kamocrm.com/domeniu/... nu a fost potrivit de regulile de rută existente (numai/public/ și/internă/au fost permise), așa că Traefik a return...
Eliminați antetele duplicate CorsFilter și benzi în amonte CORS în poarta de acces
WebConfig.java a definit o a doua fasole CorsFilter care concurează cu CorsConfig. Java Bean, riscând duplicatul scrie. A şters-o ca să existe doar un singur Co...
Eliminați duplicatul boabelor de CorsFilter care cauzează header dublu Access-Control-Allow-Origin
Boabele explicite de CorsFilter au cauzat un al doilea filtru CORS alături de primăvară Suport CORS încorporat de securitate (care utilizează CorsConfigurationS...
Elimină declarațiile consolei de depanare.log și adaugă rutele lipsă
Elimină toate depanările temporare adăugate în timpul urmăririi WebSocket de la ChatBox, TicketChat, MemberItem, ChatTool și utilizațiChatWebSocket; adăugați pa...
Preveniți antetul mesajului de la extinderea coloanei pe adrese lungi
Copilul flex stânga header a avut nici un min-w-0, atât de lung e-mail de nerupt adresa din From/To/Cc a forțat lățimea de conținut min să crească, târâre antet...
Hoist ChatWebSocketProvider deasupra ToolProviders
ToolDock (și ferestrele sale instrument cum ar fi SuportTicketWindow → TicketChat) este montat în interiorul ToolProviders, care stă ABOVE PrezențăWrapper în co...
Drop Shadow DOM în e-mail rander atât de deversare-x-auto focuri
Shadow DOM a fost cauza rădăcină. Conținutul de e-mail larg (tabele fixe) în interiorul copacului umbră pictat trecut gazda fără a contribui la cutia gazdei, as...
Aliniază calea de import ChatWebSocketContext pentru furnizorul de potrivire
TicketChat și ChatNotificareAscultătorul a importat contextul prin intermediul "@/app/contexts/......" alias în timp ce PrezenţaWrapper (furnizorul) o importă p...
Consolă temporară.log pentru a urmări calea de abonament TicketChat STOMP
Adaugă jurnale de consolă în fiecare etapă a conductei de abonare (efect de incendiu, permis de pază, abonament () apel, ataşareAbonare, client. subscrie; /app/...
Forta umbra gazda de izolare cu stiluri inline + conține: aspect
Clasa pe baza de supraîncărcare-x-auto pe gazda umbră nu a fost câștigătoare fiabil împotriva umbrei ':host { all: iniţial}' resetat, atât de larg e-mail conţin...
Derulați conținut de e-mail larg în interiorul umbra DOM, nu în afara
Încercările anterioare de a adăuga supraîncărcare-x-auto la lumina strămoșilor DOM nu a putut prinde conținut de e-mail larg, deoarece umbra copacului vizual re...
Utilizați getAstachments () pentru a se potrivi cu tipul de ambalaj boolean
***************** este un ambalaj Boolean, deci Lombok generează getHasAttachments() not isHasAttachments(). Doar acesta din urmă există pentru boolean primitiv...
Extinde scanarea depozitului JPA pentru a include pachetul comercial
Noul librar kamo-împărtășește aduce în *************** care necesită - Nu. (în com.kamo.z.shared. commerce). MediaService doar scanat numodifica.dao.repos, deci...
Restaurare HashMap import în ChatWebSocketController
Refactorul anterior a eliminat importul HashMap dar manerTyping metoda construiește încă un HashMap pentru sarcina utilă eveniment de dactilografiere, cauzând F...
Adăugaţi min-w-0 la e-mail conţinut div atât de supraîncărcat-x-auto incendii
Fără min-w-0, dimensiunea minimă implicită a copilului flex-col:auto se rezolvă conţinut-min, permiţând tabele largi de e-mail extinde div peste coloana lățimea...
Elimină apelul de conectareStomp în message
Atunci când primul mesaj creează o nouă sesiune, onSessionCreated updates recuzită care declanşează utilizareaEffect pentru a apela ConnectStomp. Apelul inline ...
Creează activ consumatorul NAT la crearea sesiunii pentru a preveni pierderea mesajelor
Din episoadele anterioare: trimis /app/chat/subscribe. Cu DeliverPolicy. Nou, orice mesaje publicate înainte de consumatorul există sunt permanent pierdute Nic...
Închide decalajul de reconectare care cauzează mesaje în timp real scăzute
Eliminați ChatBox. Anterior, fiecare reconectare WebSocket declanșat efectul Curățare care a numit unsubscribe(), șters sesiunea din harta abonamentului, și tr...
Permite utilizatorului sistemului să gestioneze branding-ul org și să stabilească logo-ul auth
- Adăugați bypass-ul utilizatorului sistemului ca prim paznic în canManageOrgBranding astfel platforma utilizatorul sistemului are control complet asupra tuturo...
Conţine supraîncărcare orizontală în vedere vedere e-mail la coloana a 3-a
- Adăugați supraîncărcare-x-ascuns în Containerul exterior de mesaj ca limită tare - Adăugaţi supraîncărcare-x-ascuns la coloana 3 ambalaj şi supraîncărcare-x-a...
Producţie eşuată2ban cu închisori PJSIP şi stat persistent
- Adăugaţi eșuare2ban-configmap.yaml cu [asterisk] şi [freepbx-web] închisori, Creştere treptată a interdicţiei (1h→24h→30d plafon), LAN ignoreip şi a filtru pe...
Se înlocuiește Coqui TTS cu Piper TTS (en US-norman-mediu)
Modelul Coqui VCTK nu are boxe numite vocea exacta a lui Norman [mediu]. Piper binar (~3 MB) și model (~60 MB) sunt descărcate de un container init pe prima cu...
Reset stale hasAttachments on sync and accumulate correctly
- Reset has_attachments=false at start of bulk sync so stale true values from old false-positive MIME detection are cleared before re-indexing - Accumulate ha...
Add resetHasAttachmentsForFolder query to ConversationRepository
Allows sync to reset stale has_attachments flags before re-indexing so corrected MIME detection can rebuild the field from actual attachment data.
Integrate Coqui TTS with norman voice (VCTK p267)
- Deploy coqui-tts server (VCTK VITS model, CPU-only) as ClusterIP service on port 5002 with model cache at /var/lib/coqui-tts on k1m1 - Inject coqui_tts.agi ...
Pre-populare DE la răspuns / înainte și fix trimite de la Adress
- DraftMessage acum poartă de la Adress astfel încât curge de la OpenNewMessage prin intermediul compozitorului - MesajBrowser stochează e-mailul cu căsuță poșt...
Suport de la @ info: whatsthis
Adaugă FromAddressRequest to EmailSendRequest so the frontend can specification din care se poate trimite adresa de e-mail/împărtășit/cutie. SmtpOnlyProvider ac...
Add LAN DNS pod for split-DNS on k1m1
Deploys a dnsmasq pod with hostNetwork on k1m1 that listens on 192.168.4.22:53. Overrides pbx.k1.kluster.kamocrm.com -> 192.168.4.22 so LAN phones reach the PBX...
Adaugă local net pentru Split-DNS / LAN client RTP fix
Telefoane pe același LAN ca și conexiunea k1m1 prin DNS divizat (domeniul rezolvă la 192.168.4.22 intern). Fără a local net, Asterisk încă face publicitate dome...
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.
