Faceți configurarea WebRTC supraviețui repornire pod
Abordarea anterioară (http custom.conf cu [general] suprascriere) nu a De fapt, să-şi facă efectul pentru că Asterisk's INI parser nu onorează mai multe Secţiun...
Activează serverul Asterisk integrat HTTP pe :8089 pentru WebRTC /ws
A chan pjsip care, la rândul său, necesită serverul Asterisk încorporat HTTP pentru a fi difuzate. ă implicit FreePBX 17 instala nave cu acel server dezactivat...
Prioritizează numele real primul/ultimul peste numele de utilizator Alias pentru afișare
numele de utilizator Alias este un mâner de autentificare funcțional (de multe ori egal cu numele de utilizator); nu este un nume de afișare. Numele real citit ...
Domeniul de aplicare Adăugați sulul de plumb și footer în zona sa de conținut
Formularul a fost folosind minHeight: 100vh în interiorul unui părinte care este deja calc (100vh - 56px), forțând o bară exterioară de defilare chiar și atunci...
Layout inteligent multi-coloană pentru formularul Add Lead
Restructurați pagina într-o rețea de nivel superior astfel încât secțiunile să compună orizontal în loc să se întindă câmpuri individuale: - Piata & Detaliu fo...
Utilizare /api/securitate/membri/denumiri pentru rezoluția numelui membrului desemnat
Filtrele de evaluare a obiectivului de la distanță numai pentru membrii activi ai echipei, lipsă sarcinile membrilor de bază sau ale membrilor inactivi. Comută ...
Lăţime completă Adaugă formă de plumb şi clearance-ul pentru picior lipicios
Picătură 1200px max-lățime pe /lide/nou astfel încât forma se întinde zona de pagină, și bumping de fund astfel încât bara de acțiune lipicios nu se mai suprapu...
Rezolvaţi numele de afişare cu prioritate corectă în cadrul obiectivului de evaluare a departamentului
Prioritate: membru.username Alias → utilizator.name.formatFull() → utilizator.alias → utilizator.username
Adăugare lipsă isDisplayOnItake field to FormField interface and new field literal
Utilizați tipul de șir pentru UED atribuit pentru a preveni pierderea de precizie
Serialize Lung ca șir de caractere pentru a preveni pierderea de precizie JS pe ID-uri mari CockroachDB
Ascunde cardul ATF în întregime atunci când toate câmpurile sunt blocate după modelul aplicat
Proba de evaluare a modelului principal și fixați ID-ul model org aplicat
- Înlocuiți poarta aplicatăModel.Source cu o sondă directă de /api/security/master-model on mount; r.ok=fals (409) means the org este guvernată de un tip de suc...
Gate censorship tab options by applied model constraints
- Hide EDIT MASTER MODEL button when org is governed by a branch type (use appliedModel.source instead of unreliable org context branchTypeID) - Hide ATF fiel...
Mark-as-read and message fetch for shared/member mailboxes
Classic mode now loads shared mailbox messages via the correct /messages/{folder} endpoint (was calling the non-existent /conversations endpoint). Fetching a fu...
Mark-as-read for shared and member mailboxes
EmailController.setFlags now accepts an optional mailboxId query param and routes through resolveProviderWithMailbox so member-mailbox flags are set against the...
Use extensionId as external ID, not Relay node id
FreePBX returns the same Relay id (ZXh0ZW5zaW9uOg== = "extension:") for every extension because the id field is not populated. Using it caused all extensions to...
Handle IMAPInputStream in getMessage pentru a preveni ClassCastException
JavaMail poate returna un IMAPInputStream în loc de un string decodat de la part.getContent() atunci când conținutul mesajului nu a fost pre-inventat. ă mulaje ...
Crește TTL de la 90 la 300 pentru a preveni fals OFFLINE pe trepidație filă
Rescrie toate întrebările/mutările GQL împotriva introspecţiei de schemă live
Verificat fiecare nume de câmp și tip împotriva schema FreePBX 17 reale. Set complet de corecții: Întrebări: - aduceţiAllExtensii: eliminaţi câmpul inexistent ...
Pasează dosarul selectat către ThreadDetailView astfel e-mail:foldere schimbate cu un dosar valid
conversation.folder este întotdeauna nedefinit deoarece Conversația JavaEntity are foldIds (text[]) nu este un câmp de coarde. Acest lucru a cauzat sarcinaThrea...
Numele de câmp GrafQL corect pentru a aduceAsteriskDetails
FreePBX API întoarce "Aţi vrut să spuneţi "AsteriskDetails"? verifică interogarea și accesorul traseului de date în consecință.
Adăugați antetele XHR/Accept și răspunsul String parsing la clientul GraphQL
Același model ca FreePBXTokenCache: adăugați X-Requested-Cu + Accept: aplicație/json pentru a suprima răspunsurile de redirecționare HTML FreePBX, și comuta toa...
Sincronizează căsuţa poştală dropdown în căsuţa poştală primară la încărcare
Dropdown implicit la primul element listă deoarece selectat Mailbox inițializat fără o cutie poștalăId, ceea ce face ca actualValue să se rezolve la "personal" ...
Mărește limita de încărcare a fișierului la 500MB
Primavara Boot implicit capac piese multipart la 1MB, provocând imagini de fundal uploads to fail with 500 in request.getParts(). Potrivire serviciu de securita...
Erori HTTP de suprafață, astfel încât defecțiunile de încărcare sunt vizibile
Consolă silențioasă înlocuită.Avertizare cu o eroare aruncată la starea non-OK, astfel încât utilizatorul vede motivul de eșec real (status + răspuns organism) ...
Adăugaţi antetele Accept+XHR şi răspunsul la coarda brută pentru criteriul final de evaluare
FreePBX returna textul/html când a fost apelat prin cluster DNS deoarece Antet gazdă nu se potrivește cu PBX HOSTNAME configurat. Adăugarea Accept: aplicație/js...
Drive minimizat-tab intrare prin controale de animație
Comutarea animației = {...} la animație={tabControale} a rupt intrarea animație: tabControale nu are o țintă coadă pe montare, astfel încât butonul a rămas la p...
Coarde OAuth2 corecte pentru API FreePBX
Domeniul de aplicare FreePBX sunt identificatori de nivel superior: "gql" (toate GraphQL) și "rest" (toate odihnă). Formatul "gql:read" înseamnă GQL pentru un m...
Expune portul 8088 direct pe serviciul ClusterIP
Serviciul a avut doar port 80→8088 cartografiere. Servicii interne care utilizează - Nu. (de exemplu, VOIPservice API token cereri) au fost calendarul pentru că...
Trust backend waitingCount, drop client offsets
Platforma în așteptareCount este acum necitit-based (contele SPECIAL TICKET sesiuni cu mesaje mai noi decât ultima vizionare a proprietarului). Când agentul se ...
Adaugă eșuează2ban-config ConfigHartă pentru k1m1
Referințe de desfășurare eșuează2ban-config ConfigMap (jail.local + asterisc-security.conf) dar nu a existat, blocând pod la Muntele Volume. Setare și prevenire...
MarkAsRead după ce agentul trimite atât de ultimele avansuri vizionate
Pe biletele de sprijin, atât mesajele vizitatorilor, cât și ale agenților sunt stocate sub Același membru al sistemului, astfel încât interogarea necitit-conte ...
Bilete de sprijin au nevoie de numărătoare necitite agnostică a membrilor
Mesajele vizitatorilor de pe biletele de sprijin sunt stocate sub acelaşi sistemMember pe care agentul o autentifică, astfel încât sesiunea CHAT existentă să nu...
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...
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...
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 (...
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...
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.
