Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· SecurityService
Estrai RoleRightsSyncService e aggiungi endpoint di sincronizzazione
- RoleRightsSyncService: centralizza la logica di sincronizzazione dei diritti di ruolo sia per OrgRole E poi... tabelle; avvio e on-demand - DataLoader: delegati a RoleRightsSyncService.syncAll() all'avvio - SecurityRoleController: POST /sync-rights attiva la sincronizzazione senza riavviare
· kamo-shared-library
Rendi i diritti di ruolo DTO enum-driven e aggiungi la sincronizzazione dei diritti del modello di sicurezza
- SecurityRoleDTO.daOrgRole(): enumerate tutta la RoleRight Digitare i valori con DB impostazioni come ricerca — nuovi diritti appaiono con NOT SPECIFIED automaticamente - No, no. stesso approccio enum-driven per i ruoli predefiniti del modello di sicurezza - OrgRoleRight.type: aggiungere esplicito @Enumerated (EnumType.ORDINAL) annotazione # Aggiungi l'inserto # query per avvio e sincronizzazione on-demand
· kamo-internal
Consentire più finestre dei biglietti di supporto con la deduplica di ticketId
· kamo-internal
Aggiungere chip di tipo di appartenenza e promuovere / rimuovere la scheda di stato di Membership, rimuovere il campo di timeout sessione
· SecurityService
Aggiungi PATCH /membership-type endpoint per la promozione/demotion dei membri
· kamo-shared-library
Aggiungere aggiornamento nativoMemberType e garantireTeamMemberRow query a MemberRepository
· kamo-shared-library
Aggiungi ALLOW PROMOTING MEMBERS destra (id 132)
· kamo-internal
Promuovere POS e ESIG dal PLANNING alla fase COMPLETATA
· kamo-shared-library
Promuovere POS e ESIG dal PLANNING alla fase COMPLETATA
· kamo-internal
Mostra città e suddivisione in ticket visitatori geo fila
Visualizzazione come "Città, Regione, Paese (IP)" — nulli sono filtrati in modo che degrades con grazia quando solo i dati di paese è disponibile
· MediaService
Esporre città e suddivisione in ricerca di geo visitatori
- Estendere il record GeoResult con i campi della città e della suddivisione - Switch SupportTicketService.toDTO() per utilizzare GeoLookupService (livello IP) ricerca) invece di geoLocationRepository, quindi città e la suddivisione è popolata dal blocco GeoLite corrispondente
· kamo-shared-library
Aggiungi visitatoreCittà e visitatoreSubdivisione per SupportTicketDTO
· kamo-internal
Aggiungi i param dell'URL della scheda alla pagina /account per il collegamento profondo e la persistenza di aggiornamento
Lo stato del tab è ora sincronizzato con i link. a schede specifiche funzionano e la scheda corretta rimane selezionata in aggiornamento pagina.
· kamo-internal
Mostra la bandiera, il paese e l'IP dell'intestazione dei biglietti
- Aggiungi visitatoreIpAddress, visitatoreCountryCode, visitatoreCountryName a supportoTicketDTO tipo - Render flag emoji + nome paese + indirizzo IP riga in TicketHeader per biglietti di chat pubblica
· kamo-shared-library
Aggiungi i campi geo visitatori per SupportTicketDTO
· MediaService
Mostra la bandiera e la posizione dei visitatori nell'intestazione dei biglietti di supporto
- Inject PublicChatVisitorRepository e GeoLiteLocationRepository in SupportTicketService - Popula visitatoreIpAddress, visitatoreCountryCode, visitatoreCountryName in toDTO() tramite geo lookup - GeoLookupService già popola visitatori.countryCode alla creazione di sessione
· kamo-marketing
Sostituire WebSocket nativo con STOMP/SockJS in LiveSupportPanel
- Aggiungere pacchetti @stomp/stompjs e sockjs-client - Collegare ai media.{domain}/ws/public-chat via SockJS+STOMP invece di crudo WebSocket ad api.{domain} che era sbagliato host e protocollo sbagliato - Dopo la connessione STOMP, iscriversi a /topic/chat/session/{guid} e notifica backend via /app/chat/subscribe per attivare il relè NATS JetStream - Risposte dell'agente: MediaController -> NATS -> ChatWebSocketController -> broker STOMP -> LiveSupportPanel del visitatore in tempo reale
· MediaService
Fissare la chat pubblica end-to-end in tempo reale tramite STOMP/NATS
- Rimuovere il requisito internoAuth da PublicChatWebSocketInterceptor così i visitatori possono connettersi direttamente utilizzando solo la loro sessioneToken - Includere la visualizzazione del visitatore Nome come mittenteName in ChatMessageDto così agente vede chi li sta messaggiando in TicketChat - Includi senderName nel messaggio STOMPMap inoltrato dall'abbonamento NATS così sia l'agente che il visitatore vedono i nomi dei mittenti nei messaggi in tempo reale
· kamo-shared-library
Aggiungi senderName a ChatMessageDto per supportare i nomi di visualizzazione della chat
· kamo-internal
Biglietto di supporto automatico popup su NEW TICKET NATS notifica
Quando arriva un nuovo biglietto di supporto, il backend invia un NEW TICKET Messaggio STOMP oltre a PENDING COUNT. Il contesto di sostegno lo gestisce inviando lo strumento: aperto in modo che la finestra di chat del biglietto si apre automaticamente senza l'agente che deve navigare a /supporto.
· kamo-marketing
Aggiungi /contact-confirmed page con eroe animato, timeline, e CTA
Sostituisci un messaggio di successo in linea sul modulo di contatto con un premio dedicato pagina di conferma: marcatura SVG animata con scoppio di particelle, 'Che cosa succede Successivo' timeline a tre fasi, e 'Quali aspetti' carte CTA. Tutti i 23 file locali aggiornato con il nuovo contattoConfirmed i18n chiavi.
· kamo-internal
Aggiungere la sezione impostazioni org (zona temporale, req di età, bandiere di contenuti, descrizione, alias); rimuovere i pulsanti Preview/AddDomain
· kamo-internal
Redesign LabelManager — editing di sezione in linea, correzione di salvataggio rotto, di default di sola lettura
Riscrive LabelManager.tsx con per-sezione letto/edit pattern. Risolve il salvataggio rotto pulsante (validateForm bloccato salva perché i campi di contatto/azienda non sono mai stati popolati da API). Rimuove il modulo globale presenta, validateForm, stato errori, anteprimaMode e Salva pulsanti. Ogni sezione ora carica i dati da API sul montaggio, mostra pulito righe di sola lettura per impostazione predefinita, e ha un flusso in linea Modifica/Salva/Cancella. Tutte e sette le sezioni (Informazione della ditta, Branding, Background Images, Informazioni di contatto, Etichette personalizzate, Link sociali) salvare indipendentemente senza blocco di convalida cross-field.
· EmailService
Aggiungere il validatore di dominio KamoMail per bloccare gli indirizzi email cross-tenant
Introduce il componente KamoMailDomainValidator che controlla, a livello di servizio, se il dominio email inviato corrisponde al dominio predefinito verificato dell'org quando KamoMail è il fornitore attivo. iniettato in MailboxProvisioningService, AliasService e SharedMailboxService — chiamato prima che si verifichi alcun provisioning. Restituisce 403 FORBIDDEN se il dominio non corrisponde.
· kamo-internal
Enforce KamoMail restrizione di dominio sulla casella di posta, alias e creazione di casella di posta condivisa
Quando KamoMail è il provider di posta elettronica, i membri possono solo creare caselle di posta, alias, e caselle di posta condivise utilizzando il dominio predefinito verificato dell'org. Esecuzione a tre strati indipendenti: frontend UI (dominio prefisso+bloccato ingresso con stato disabilitato quando nessun dominio), proxy Next.js (fornitore parallel + controllo del dominio di sicurezza prima dell'inoltro), e strato di servizio Java.
· kamo-marketing
Leggi il logoFullExt da config.json per l'estensione dinamica del logo
· kamo-register
Leggi il logoFullExt da config.json; fix site.webmanifest path to favicon subdirectory
· kamo-login
Leggi il logoFullExt da config.json per l'estensione dinamica del logo
· kamo-internal
Fornitura a tema Org — WebSocket gancio, pannello di fornitura, cablaggio LabelManager, trigger DNS, ridimensionamento bg, contesto ThemeConfig
· MediaService
Relay NATS theme provision progress to STOMP WebSocket

Il tuo universo ti sta aspettando.
Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.
Gratis per sempre — nessuna carta di credito richiesta