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...
Utilizzare getHasAttachments() per abbinare il tipo di wrapper Boolean
E' un Boolean, quindi Lombok. genera getHasAttachments() non èHasAttachments(). Quest'ultimo solo esiste per il booleano primitivo. Utilizzare Boolean.TRUE.equa...
Espandi la scansione del repository JPA per includere il pacchetto di commercio
La nuova biblioteca di kamo-shared porta in mezzo a... che richiede Non e' vero. (in com.kamo.z.shared.commerce). MediaService solo scansionato donotmodify.dao....
Ripristinare l'importazione HashMap in ChatWebSocketController
Il refattore precedente ha rimosso l'importazione HashMap ma la manigliaTyping metodo ancora costruisce un HashMap per il payload dell'evento di digitazione, ca...
Aggiungi min-w-0 al contenuto di e-mail div così overflow-x-auto incendi
Senza min-w-0, la larghezza minima predefinita del bambino flex-col: l'auto si risolve a min-content, lasciando ampie tabelle di posta elettronica espandere il ...
Rimuovere il doppio collegareStomp chiamata in sendMessage
Quando il primo messaggio crea una nuova sessione, gli aggiornamenti suSessionCreated che innesca utilizzareEffect per chiamare connectStomp. La chiamata in lin...
Proattivamente creare il consumatore NATS alla creazione di sessione per prevenire la perdita di messaggi
Precedentemente il consumatore di spinta NATS JetStream è stato creato solo quando un client STOMP inviato /app/chat/subscribe. Con DeliverPolicy. Nuovo, qualsi...
Chiudi gap di ricollegamento causando messaggi in tempo reale
Rimuovere `collegato` dall'uso dell'abbonamentoDeps difettosi in TicketChat e ChatBox. In precedenza, ogni connessione WebSocket ha innescato l'effetto pulizia ...
Consenti all'utente di sistema di gestire il marchio org e fissare il logo auth
- Aggiungi bypass utente di sistema come prima guardia in canManageOrgBranding così piattaforma sistema utente ha pieno controllo di marca su tutti gli org non-...
Contiene overflow orizzontale nel pannello di visualizzazione e-mail alla terza colonna
- Aggiungi overflow-x-hidden a MessageBrowser contenitore esterno come bordo duro - Aggiungi overflow-x-hidden alla colonna 3 wrapper e overflow-x-auto all'area...
Produzione fail2ban con carceri PJSIP e stato persistente
- Aggiungi fail2ban-configmap.yaml con le prigioni [asterisk] e [freepbx-web], escalation del divieto incrementale (1h→24h→30d soffitto), LAN ignoraip, e un fil...
Sostituire Coqui TTS con Piper TTS (en US-norman-medium)
Il modello Coqui VCTK non ha altoparlanti di nome — sostituire con Piper TTS che ha l'esatta voce norman[medium]. Piper binario (~3 MB) e modello (~60 MB) vengo...
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-popolare DA sulla risposta / avanti e correggere l'invio daAddress
- DraftMessage ora trasporta daAddress in modo da fluisce da openNewMessage attraverso al compositore - MessageBrowser memorizza la mailbox attiva Indirizzo (co...
Supporto daAddress override on send
Aggiunge FromAddressRequest a EmailSendRequest in modo che il frontend possa specificare alias/shared/mailbox indirizzo da inviare. SmtpOnlyProvider ora usa que...
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...
Aggiungi local net per split-DNS / LAN client RTP fix
I telefoni sulla stessa LAN di k1m1 collegano tramite DNS diviso (il dominio si risolve 192.168.4.22 internamente). Senza local net, Asterisk ancora pubblicizza...
Persist stregoneria contatto=memory fix e bloccare lo scanner SIP in startup.sh
- Inject [res pjsip] contact=memory in sorcery.conf prima che Asterisk inizi; il backup predefinito strery-astdb SQLite scende silenziosamente tutti i contatti ...
Sub-tab content fills full content-area width
Drop the centered max-width constraint (was 920 / 1200 / 680 / 720 depending on tab) on SubTabShell. The page already lives inside SettingsView's content column...
Fix attachment parsing and hasAttachment false positives
Three fixes to EmailImapService: 1. toEnvelope: narrow multipart check to multipart/mixed only — plain HTML+text emails (multipart/alternative) no longer sh...
Add download button to classic view attachment section
The classic view (MessageBrowser) had its own attachment list that was missing the download button — only the conversation view was fixed previously. Also align...
Add com.kamo.z.shared.commerce to EnableJpaRepositories scan
**************** (required by **************** in the shared library) lives under com.kamo.z.shared.commerce but was not included in the JPA repository scan, ca...
Proper layout, imbottitura e logo del fornitore
Telaio / spaziatura correzioni: - Tutte e sei le schede (Provider, Estensioni, Utenti telefonici, Dispositivi, Voce, Salute) ora avvolgere il loro contenuto in ...
Correct field name and type in getFromAddresses response
Backend was sending 'email' key but frontend expected 'address', and sent type 'shared_mailbox' when frontend expected 'shared'. Also fixes hasMailboxes flag wh...
Load FROM addresses from accessible mailboxes and aliases
Replaces the broken getFromAddresses() endpoint (which sent 'email' instead of 'address') with getAccessibleMailboxes() + listMemberAliases(), matching the same...
Utilizzare CockroachDB-compatibile DROP INDICE CASCADE sintassi
CockroachDB rifiuta ALTER TABLE ... DROP CONSTRAINT per vincoli UNICI con: unimplementato: non può cadere il vincolo UNICO "uk org oauth provider" utilizzando ...
Goccia VOIPService spec md da repo
Per convenzione di progetto (i file md non spediscono con i servizi).
Include com.kamo.z.shared.commerce nella scansione del repository
Ultimi propagatori di kamo-shared-library Non e' vero. (donotmodify.dao.services) che ha una dipendenza del costruttore E' il momento giusto. E' il momento gius...
Schede di configurazione della piattaforma (Generale / VOIP & SMS / System User / Advanced)
Wraps ********************************************************************************** in ImpostazioniView con quattro schede: - Generale: panoramica della p...
Aggiungi il pulsante di download dell'allegato e decouple mark-as-read
- Aggiungi un pulsante icona Download a ogni riga di allegato in modo che gli utenti possano forzare una file download invece di aprire solo in una nuova scheda...
Lavoro di sincronizzazione VOIP globale (intervallo regolabile)
VoipGlobalSyncCategoria professionale zecche ogni minuto e, su ogni zecca, legge il SystemConfiguration singleton per decidere se una sincronizzazione globale è...
Endpoint System-config + platform-overview
Superficie di configurazione a livello di piattaforma, recintata dal proprietario di alto livello esistente guardia (tappeggi SystemUserConfigController richied...
Per-instance controller delle risorse + org aggregato + sincronizzazione interna
CRUD (estensione / utenti / dispositivi / segreteria): - VoipExtensionsController a... - VoipUsersController a /api/voip/instances/{id}/users - VoipDevicesContr...
Multi-instance provider refactor + full FreePBX + Flowroute SMS
Core model change: one org → many VoipProviderInstances (was: one per org). Every provider API call is now instance-scoped. PhoneProvider interface: - New meth...
Multi-instance telefono/SMS provider migrazione
Esegue dopo Hibernate ddl-auto:aggiornamento crea nuovi tavoli (VOIP PROVIDER INSTANCE, BULK TEXT PROVIDER INSTANCE, PHONE EXTENSION, PHONE END USER, PHONE DEVI...
Multi-instance telefono / fornitore SMS fondazione schema
- Rinomina VoipProviderConfig → VoipProviderInstance; drop UNIQUE(org id), aggiungere ista name, config json, last sync at, last sync error. - Rinomina BulkText...
Spostare hostPath da MinIO (rclone FUSE) a locale /var/lib/pbx
MinIO via rclone FUSE non supporta POSIX chmod o symlink() — entrambi richiesto dal sistema modulo di FreePBX. Cambiato tutti FreePBX e MariaDB volumi hostPath ...
Wrap fwconsole/amportal tramite php per MinIO FUSE hostPath
/var/lib/asterisk è supportato da MinIO tramite rclone FUSE che non supporta POSIX chmod, quindi gli script fwconsole non possono essere eseguibili su quel volu...
Aggiungi PreStop gancio e terminazioneGracePeriodSeconds
I container si bloccavano a Terminating perché lo sfondo Asterisk processi continuati in esecuzione dopo l'uscita di apache2ctl (PID 1). PreStop hook invia SIGT...
Aggiungere bootstrap.php richiedono rigenerazione /etc/freepbx.conf
L'installatore scrive freepbx.conf con datasource=''' e un request once per bootstrap.php, che config.php dipende da caricare la classe FreePBX. La nostra versi...
Rigenerare /etc/freepbx.conf in riavvio
/etc è ephemeral (non un hostPath), quindi /etc/freepbx.conf scritto da installatore è perso su ogni pod riavvio. Aggiunto altro ramo per rigenerare esso da env...
Bypass start asterisk, attendere la presa di controllo
start asterisk utilizza `pidof asterisk` che restituisce un falso positivo sul pod riavvia, causando il ciclo di attesa-per-Asterisk per appendere. Ora startup....
Avviare Asterisk in background, attendere per esso, quindi eseguire installer
Il entrypoint.sh non esegue il programma di installazione FreePBX: inizia solo servizi. startup.sh ora replica i passaggi di impostazione del punto di entrata, ...
Lascia installare la maniglia entrypoint, non startup.sh
FreePBX installer (php install -n) richiede Asterisk di essere già Correre. La nostra startup.sh lo chiamava prima che Asterisk iniziasse, causando "Errore comu...
Mount /etc/asterisk only, not /etc, per correggere l'errore PHP simplexml
Montaggio completo /etc come un volume hostPath stava corrompendo l'estensione PHP caricamento anche dopo la semina dall'immagine — simplexml load file non defi...
Ridurre i limiti della CPU al rapporto 2:1 per eliminare il sovraimpegno
Docs 4→1 core, jibri 4→2 core, libretranslate 2→1 core, bergamotto 2→1 core, coturn 1→0.5 core. Risparmia ~7.5 core dai limiti del nodo.
Come quello che vedi la spedizione?
Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.