ATF-Karte vollständig aussperren, wenn alle Felder durch aufgetragene Modelle gesperrt sind
Probe Master-Modell Endpunkt und fix angewendetModell org ID
- Ersetzen Sie angewendetesModell.source-basiertes Gate mit einer direkten Sonde von /api/security/master-Modell auf Mount; r.ok=false (409) bedeutet die org ...
Gate Zensur Tab Optionen durch angewandte Modell Einschränkungen
- Hide EDIT MASTER MODEL-Taste, wenn org durch einen Zweigtyp geregelt wird (AnwendengemitteltModel.source anstelle von unzuverlässigen Org context branchType...
Mark-as-Lese und Nachrichten-Steigerung für gemeinsame/Mitglieder-Postfächer
Klassischer Modus lädt jetzt geteilte Mailbox-Nachrichten über die richtige /messages/{folder] Endpunkt (rief die nicht existierenden /Konversationen auf Endpun...
Mark-as-read für gemeinsame und Mitglieder-Postfächer
EmailController.setFlags akzeptiert jetzt eine optionale MailboxId Abfrage param und Routen durch resolveProviderWithMailbox, so dass Mitglieds-Mailbox-Flaggen ...
Verwenden Sie extensionId als externe ID, nicht Relay-Node
FreePBX liefert die gleiche Relay-ID (ZXh0ZW5zaW9uOg== = "extension:") für jede Erweiterung, weil das ID-Feld nicht bevölkert ist. Mit ihm verursachte alle Erwe...
Behandeln Sie IMAPInputStream in getMessage, um ClassCastException zu verhindern
JavaMail kann einen IMAPInputStream anstelle eines dekodierten Strings von part.getContent(), wenn der Inhalt der Nachrichten nicht vorab abgerufen wurde. Die d...
Erhöhen Sie TTL von 90ern auf 300er, um falsche OFFLINE bei der Tab-Tedrängelung zu verhindern
Rewrite all GQL Abfragen/Mutationen gegen Live-Schema-Introspektion
Verifizierte jeden Feldnamen und Typ gegen das eigentliche FreePBX 17 Schema. Vollständige Reihe von Korrekturen: Anfragen: - fetchAllExtensions: Entfernen Sie...
Passe ausgewähltFolder an ThreadDetailAn so email:folder-changed fires with a valide folder
conversation.folder ist immer undefiniert, weil die Java ConversationEntity hat OrdnerIds (text[]) und kein Ordner-String-Feld. Dies führte zu loadThread zu ruf...
Korrigieren GraphQL Feldnamen zu holenAsteriskDetails
FreePBX API gibt "Hat du damit gemeint fetchAsteriskDetails?" Prüfen Sie die Abfrage und den Datenpfad-Zugangsoder entsprechend.
XHR/Accept-Header und String Response Parsing zum GraphQL-Client hinzufügen
Gleiches Muster wie FreePBXTokenCache: X-Requested-With + Accept: application/json hinzufügen um die HTML-Redirect-Antworten von FreePBX zu unterdrücken und all...
Synchronisieren Sie Mailbox Dropdown zu primären Mailbox auf Last
Dropdown standardmäßig auf die erste Liste Element, weil ausgewählteMailbox initialisiert ohne MailboxId, wodurch aktuelles Value sich entschließt, 'persönlich'...
Größe der Datei auf 500MB erhöhen
Spring Boot standardmäßige Cap mehrteilige Teile bei 1MB, was zu Hintergrundbild führt Uploads zum Scheitern mit 500 in request.getParts(). Match SecurityServic...
Oberfläche HTTP-Fehler, so dass Upload-Fehler sichtbar sind
Ersetzen leise console.warn mit einem geworfenen Fehler auf Nicht-OK-Status, damit der Benutzer den eigentlichen Ausfallgrund sieht (Status + Response Body) ans...
Accept+XHR-Header und Roh-String-Reseping-Paring für Token-Endpunkt hinzufügen
FreePBX gab Text/html zurück, wenn es über Cluster DNS aufgerufen wurde, weil Host-Header passte nicht mit der konfigurierten PBX_HOSTNAME. Hinzufügen Akzeptier...
Fahren minimiert-tab Eintrag durch Animationssteuerungen
Ein Wechsel von animate={...- zu animate={tabControls' brach den Eintrag Animation: tabControls hat kein Warteschlange-Ziel auf der Halterung, so dass die Taste...
Korrekte OAuth2-Leistichumfangs-Strings für FreePBX API
FreePBX-Ferner sind Top-Level-Identifier: 'gql' (alle GraphQL) und 'Ruhe' (alle REST). Das Format 'gql:read' bedeutet GQL für ein Modul mit dem Namen 'read', da...
Port 8088 direkt auf ClusterIP-Dienst auszusetzen
Service hatte nur Port 80 bis 8088 Mapping. Interne Dienstleistungen in Anspruch nehmen ************ (z.B. VOIPService API Token Anfragen) waren Timing aus, wei...
Trust Backend anhängigCount, Drop Client-Offsets
Backend pendingCount ist jetzt ungelesener (zählt SUPPORT_TICKET-Sitzungen mit Nachrichten, die neuer sind als die letzten Anzeigen des Besitzers). Wenn der Age...
Vermisste fail2ban-config ConfigMap für k1m1 hinzufügen
Einsatzreferenzen fail2ban-config ConfigMap (jail.local + asterisk-security.conf) aber es existierte nicht, blockiert die Hülse an MountVolume.SetUp und das Ver...
MarkAsRead nach Agent senden so lastViewed Vorauss
Auf Support-Tickets werden sowohl Besucher- als auch Agenten-Nachrichten unter der gespeichert. gleiches Systemmitglied, so dass die ungelesene Zählabfrage Memb...
Support-Tickets benötigen Mitglieder-agnostische ungelesene Zählungen
Besuchermeldungen auf Support-Tickets werden unter demselben System gespeichertMitglieder dass der Agent authentifiziert, so dass die bestehende CHAT-Session un...
Pass-Ordner zum Laden vonThread-Retry-Button
loadThread takes (threadId, Ordner); nur der Fehler-State-Retry-Button übergeben ThreadId, brechen die kamo-internen Build. Passen Sie den Aufruf an die Signatu...
Korrigieren JsonIdentityInfo Eigenschaft von 'uniqueId' zu 'id'
Mitgliedsunternehmen erklärt @JsonIdentityInfo(Eigentum = "uniqueId") aber die das tatsächliche Primärschlüsselfeld wird 'id' genannt. Jackson geworfen "kann ke...
Entfernen SSR Wache verursacht Hydratation Mismatch; Drop SockJS für native WebSocket
- Hero.tsx: Entfernen Sie Typ-Fenster-Check um ParticleField bereits hat ssr:false, so dass der Wächter ein Server/Client-Baum-Mischung produziert hat (Reagie...
Klare ungelesene Indikatoren, wenn Konversation geöffnet wird
ThreadDetailView sendet jetzt E-Mail:folder-changed after markConversationRead ist so MailButton renoviert die nvtop Inbox-Plakette zählen. ConversationListView...
CORS zu Traefik über Kamo-Middlewares bewegen, In-App entfernen
Die CorsFilter @Bean in der Frühjahrs-App war still nicht Anwendung Header nach WebConfig.java wurde entfernt. CORS wird nun vollständig an der Traefik-Schicht ...
Verwenden /public/{mainDomain"-{tld" Pfad passend zum tatsächlichen MinIO-Eimer-Layout
Der getThemePath() erzeugte /domain/{tld'/{split'/kamosite Pfade, nicht in MinIO existieren - Themendateien live in der Öffentlichkeit Eimer unter kamocrm-com/,...
Break min-w-0-Kette, um E-Mail-Scroll in Körperspalte enthalten
Fügen Sie min-w-0 zu äußeren Behälter und Hauptinhalt flex div so flex Kinder kann nicht auf E-Mail-Min-Content-Breite erweitern, was die Seite-weite verursacht...
Hoist Anbieter über ToolProviders
Die gleiche Ursache wie der ChatWebSocketProvider Hebeer: SupportTicketWindow Anrufe ************ und ChatBox-Anrufe useUnread().markAsRead(), aber beide Werkze...
Hinzufügen von unterdrückenHydrationWarning und reparieren defekte Platzhalter-Bilder
suppressHydrationWarnung auf <html" verhindert React-Fehler #418 durch Browser verursacht Erweiterungen (z.B. übersetzen, dunkler Modus) mutierende html-Attribu...
Lassen /domain/ Pfad-Präfix auf Thema IngressRoute für CORS
Das Thema Konfiguration unter theme.kamocrm.com/domain/... wurde nicht von der bestehende Streckenregeln (nur / öffentlich/ und /intern/ erlaubt), also Traefik ...
Entfernen Sie doppelte CorsFilter und Streifen upstream CORS-Header im Gateway
WebConfig.java definierte eine zweite CorsFilter-Beine, die mit CorsConfig.javas konkurrierte Bohnen, riskieren doppelte Header schreibt. Gelöscht es, so dass n...
Entfernen Sie Duplikat CorsFilter-Beine verursacht doppelte Access-Control-Allow-Origin-Header
Die explizite CorsFilter-Bohne verursachte neben Spring einen zweiten CORS-Filter Die integrierte CORS-Unterstützung von Security (die CorsConfigurationSource v...
Entfernen debug console.log-Anweisungen und fügen Sie fehlende Routen hinzu
Entfernen Sie alle temporären debug Logging hinzugefügt während WebSocket-Tracing aus ChatBox, TicketChat, MemberItem, ChatTool und nutzenChatWebSocket; hinzufü...
Verhindere Nachrichten-Header von Erweiterung Spalte auf langen Adressen
Das linke Flex-Kind des Headers hatte keine min-w-0, so lange unzerbrechliche E-Mail Adressen in From/To/Cc zwangen seine Min-Content-Breite zu wachsen, ziehend...
Hoist ChatWebSocketProvider über ToolProviders
ToolDock (und seine Werkzeugfenster wie SupportTicketWindow - TicketChat) ist eingemountet in ToolProviders, die ABOVE PresenceWrapper im Baum sitzt um das Abhä...
Drop Shadow DOM in E-Mail-Renderer so overflow-x-auto feuert
Shadow DOM war die Ursache. Breiter E-Mail-Inhalt (Festbreite Tabellen) im Schattenbaum am Wirt vorbei gemalt, ohne einen Beitrag zu leisten die Layout-Box des ...
Align ChatWebSocketContext Import Pfad zum Match Provider
TicketChat und ChatNotificationListener importierte den Kontext über die '@/app/contexts/...' alias while PresenceWrapper (der Anbieter) importiert es über den ...
Force Shadow Host Containment mit Inline-Stile + enthalten: Layout
Klasse-basiertes Überlauf-x-auto auf dem Schattenhost war nicht zuverlässig gewinnen gegen den Schatten ':host { all: initial .' zurückgesetzt, so breite E-Mail...
Scrollen Sie breiten E-Mail-Inhalt innerhalb Schatten DOM, nicht außerhalb
Die bisherigen Versuche, Overflow-x-auto zu beleuchten DOM-Vorfahren hinzuzufügen konnte nicht breiten E-Mail-Inhalt zu fangen, weil der Schattenbaum ist visuel...
Verwenden Sie getHasAntachments() zum Boolean Wrapper Typ
************ ist ein Booleaner (Wrapper), also Lombok generiert getHasAntachments() nicht isHasAttachments(). Nur letztere existiert für primitive boolean. Verw...
JPA-Repository-Scan erweitern, um Commerce-Paket enthalten
Die neue Kamo-Shad-Bibliothek bringt ************ in die **************** erfordert (in com.kamo.z.shared.commerce). MediaService nur gescannt donotmodify.dao.r...
HashMap-Import in ChatWebSocketController wiederherstellen
Der vorherige Refaktor entfernte den HashMap-Import, aber das handleTyping Methode konstruiert immer noch eine HashMap für die Eingabe-Event-Nage-Nage-Nage-Nage...
Min-w-0 zu E-Mail Inhalten hinzufügen div so overflow-x-auto fires
Ohne min-w-0, die flex-col Kind Standard min-breite:auto löst sich auf min-Inhalt, lassen breite E-Mail-Tabellen erweitern die div Vergangenheit der Spalte Brei...
Entfernen von doppelten connectStomp-Anruf in sendMessage
Wenn die erste Nachricht eine neue Sitzung erstellt, aktualisiert onSessionCreated Requisiten die mitEffect ausgelöst werden, um connectStomp aufzurufen. Der In...
Erstellen Sie NATS-Konsument bei der Erstellung von Sitzungen, um Nachrichtenverlust zu verhindern
Zuvor wurde der NATS JetStream Push Consumer nur erstellt, wenn ein STOMP-Client gesendet /app/chat/subscribe. Mit DeliverPolicy.New, alle Nachrichten veröffent...
Schließen Sie wieder Verbindungslücke verursacht fallengelassene Echtzeit-Nachrichten
Entfernen Sie "connected" von der Abonnement-NutzungEffect deps in TicketChat und ChatBox. Zuvor löste jede WebSocket-Wiederverbindung den Effekt aus Bereinigun...
Erlauben Sie dem Systembenutzer, Org Branding zu verwalten und Logo auth zu fixieren
- System-Benutzer-Bypass als erste Wache in canManageOrgBranding so platform hinzufügen Systembenutzer hat volle Branding-Kontrolle über alle nicht-elparenten...
Wie, was Sie sehen Versand?
Jedes dieser Updates landet automatisch in Ihrem Arbeitsbereich. Starten Sie frei und beobachten Sie es Woche für Woche wachsen.