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...
Contact vrăjitoresc persist = fix memorie și bloc SIP scanner la pornire.sh
- Injectaţi [res pjsip] contact=memorie în vrăjitorie.conf înainte de începerea tratamentului cu Asterisc; backend-ul implicit SQLite scade în tăcere toate cont...
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...
Layout corespunzătoare, budding, și logo-uri furnizor
Fixare/spațiere: - Toate cele şase file (Providers, Extensii, Utilizatori de telefoane, Dispozitive, Voicemail, Health) Acum împachetați conținutul lor într-un ...
Numele și tipul de câmp corecte în răspuns de la Adders
Platforma trimitea cheia 'e-mail' dar frontend se aştepta la 'adresă' şi a trimis tip "împărtășit mailbox" atunci când frontend se aștepta la "împărțit." De ase...
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...
Utilizaţi sintaxa CockroachDB-compatibilă DROP INDEX CASCADE
CockroachDB respinge tabelul ALTER ... DROP CONTRAINT pentru constrângerile UNIQUE cu: neimplementată: nu poate scădea constrângerea UNIQUE "uk org oauth prov...
Drop VOIPService spec md din repo
Conform convenţiei de proiect (.md fişierele nu se trimit cu servicii).
Include com.kamo.z.shared.commerce în scanare depozit
Ultimele propagate kamo-shared-library - Nu. (numodificați.dao.servicii) care are o dependență de constructor Nu-ţi face griji. Nu-ţi face griji. ă serviciul es...
File de configurare a platformei (General / VOIP & SMS / System User / Advanced)
Ambalaje *******************************************************************************************************************************************************...
Adaugă butonul de descărcare atașament și decuplează marca ca citit
- Adăugați un buton de descărcare pictogramă la fiecare rând de atașare astfel încât utilizatorii pot forța o descărcare fișier în loc de deschiderea numai într...
Sincronizare VOIP globală (interval maxim)
VoipGlobalSyncJob ticăie în fiecare minut și, pe fiecare căpușă, citește SystemConfigurare singleton pentru a decide dacă o sincronizare globală este datorată: ...
Etapele finale ale sistemului-config + ale platformei
Suprafata de configurare la nivel de platforma, poartata de proprietarul de nivel superior existent paznic (matches SystemUserConfigController's requireTopLevel...
Controlori de resurse perintență + agregate org + sincronizare internă
Resurse perintentale CRUD (extensii / utilizatori / dispozitive / voicemail): - VoipExtensiiController la ************* - VoipUsersController la /api/voip/insta...
Refactor furnizor multi-stanță + full FreePBX + Flowroute SMS
Modificarea modelului de bază: un org → multe VoipProviderInstances (a fost: un per org). Fiecare furnizor de apeluri API este acum spectaculos. Interfață tele...
Migrație multi-integrare telefon/furnizor SMS
Rulează după Hibernate ddl-auto:actualizarea creează noi tabele (VOIP PROVIDER INSTANCE, BULK TEXT PROVIDER INstanCE, PHONE EXTENSION, PHONE END USER, PHONE DEV...
Fundaţia de sisteme multi-intestinale de telefonie/furnizor SMS
- Redenumește VoipProviderConfig → VoipProvider CONFIG; picătură UNIQUE(org id), adaugă instance name, config json, last sync at, last sync error. - Redenumește...
Mută gazdaPath din MinIO (rclone FUSE) la local /var/lib/pbx
MinIO via rclone FUSE nu suportă CHmod POSIX sau Symlink () impusă de sistemul modulului FreePBX. Schimbat toate FreePBX și MariaDB gazduieste Volume path de la...
Wrap fwconsolă/amportal prin php pentru MinIO FUSE gazdăPath
/var/lib/asterisk este susținut de MinIO via rclone FUSE care nu suportă POSIX chmod, astfel încât scripturile fwconsole nu pot fi executate pe acest volum. sta...
Adaugă preStop cârlig și terminareGracePeriodSeconds
Containerele au fost obtinerea blocat în Terminare deoarece fundal Asterisc procesele continuate după apache2ctl (PID 1) ieșit. PreStop cârlig trimite SIGTERM t...
Adăugați bootstrap.php nevoie pentru a regenerat /etc/freepbx.conf
Instalatorul scrie freepbx.conf cu sursa de date=" și one once pentru bootstrap.php, care config.php depinde de încărcarea clasei FreePBX. Versiunea noastra reg...
Regenerează/etc/freepbx.conf la repornire
/etc este efemeră (nu o gazdăPath), deci /etc/freepbx.conf scris de Instalatorul este pierdut la fiecare repornire. Ramură adăugată pentru regenerare ea de la e...
Bypass start asterisk, așteptați priza de control în schimb
start asterisk foloseste Reporneşte, făcând ca bucla de aşteptare pentru Asterisk să fie atârnată. Acum porneşte. Asterisk direct prin safe asterisk (după ce a...
Start Asterisc în fundal, așteptați pentru ea, apoi executați instalator
Punctul de intrare.sh nu ruleaza FreePBX incursiune servicii. startup.sh acum reproduce pașii de configurare punctul de intrare, începe Asterisk în fundal, așt...
Lasă punctul de intrare să se ocupe de instalare, nu de pornire.sh
Instalator FreePBX (php install -n) necesită asterisk să fie deja Alergând. Startup nostru.sh a fost de asteptare înainte de a începe Asterisk, provocând "Error...
Mont /etc/asterisk numai, nu /etc, pentru a remedia eroarea PHP simplexml
Montarea întregului /etc ca gazdă Volumul Path corupea extensia PHP încărcare chiar și după însămânțare din imagine la timpul de instalare. Acum doar /etc / as...
Reducerea limitelor de procesor la raportul 2:1 pentru eliminarea supraangajamentului
Docs 4→1 core, jibri 4→2 cores, libretranslate 2→1 core, bergamot 2→1 miez, coturn 1→0.5 miez. Salvează ~7,5 nuclee off limite nod.
Comută la escomputers/freepbx:17 cu arhitectura corectă
obosit/freepbx nu are imagine FreePBX 17 (abandonată din 2022). escomputers/freepbx:17 (actualizat Apr 2026, Asterisk 21 + FreePBX 17) necesită un pod separat M...
Drop public admin ingress; acces prin http://k[12]m1:8088
Admin UI este acum intern-doar peste LAN / WireGuard pe portul 8088 (FreePBX's nginx legat direct pe hosteNetwork). Nu Traefik traseu, nu Să cripteze cert, nici...
Desfăşuraţi podul FreePBX 17 + Jigasi SIP pe k1m1 şi k2m1
FreePBX (obosit/freepbx:17-ultimul) ruleaza cu gazdaNetwork astfel SIP/RTP păstrează IP-uri reale ale clienților, blocate one-per-node prin nodSelector. SIP pe ...
Ca ceea ce vezi de transport maritim?
Fiecare dintre aceste actualizări aterizează automat în spațiul de lucru. Începe gratuit și urmăriți-l crească săptămână după săptămână.