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...
fügen Sie horizontalen Überlauf in E-Mail-Ansichtsablauf zur 3. Spalte
- Überlauf-x-versteckter zu MessageBrowser Außencontainer als harte Grenze hinzufügen - Überlauf-x-versteckt zu Spalte 3 Wrapper und Overflow-x-auto zum E-Mail-...
Produktion scheitert2ban mit PJSIP-Gefängnchen und anhaltendem Zustand
- Fügen Sie fail2ban-configmap.yaml mit [asterisk] und [freepbx-web] Gefängnissen hinzu, schrittweise Verbot Eskalation (1h-24h-30d Decke), LAN-Akignop, und e...
Coqui TTS mit Piper TTS (en_US-norman-medium) ersetzen
Coqui VCTK-Modell hat keine benannten Lautsprecher - ersetzen mit Piper TTS, die die genaue norman[medium] Stimme. Piper-Binär (ca. 3 MB) und Modell (ca. 60 MB)...
Reset abgestandene hat Anhäufe auf Synchronisation und richtig ansammeln
- Reset hat_attachments=false zu Beginn der Bulk-Sync so abgestandene wahre Werte von der alten falsch-positiven MIME-Erkennung werden vor der Re-Indizes gelö...
ResetHasAttachmentsForFolder Abfrage zu ConversationRepository hinzufügen
Ermöglicht Synchronisierung, um abgestandene has_attachments Flaggen vor der Re-Indexierung zurücksetzen Eine korrigierte MIME-Erkennung kann das Feld aus den t...
Integrieren Coqui TTS mit Norman-Stimme (VCTK p267)
- Einsatz von coqui-tts Server (VCTK VITS-Modell, CPU-only) als ClusterIP-Dienst am Port 5002 mit Modell-Cache bei /var/lib/coqui-tts auf k1m1 - coqui_tts.agi...
Pre-populate FROM on Antwort/Forward und fix senden von Address
- DraftMessage trägt jetzt von Address, so dass es von openNewMessage fließt bis zum Komponisten - MessageBrowser speichert die aktive Mailbox-E-MailAdresse (...
Unterstützung von Address override auf Senden
Fügt FromAddressRequest zu EmailSendRequest hinzu, so dass das Frontend angeben kann die Alias/Shared/Mailbox-Adresse zum Absenden von. SmtpOnlyProvider jetzt v...
LAN DNS pod für split-DNS auf k1m1 hinzufügen
Entstellt ein dnsmasq pod mit hostNetwork auf k1m1, das auf hört 192.168.4.22:53. Überrepostet pbx.k1.kluster.kamocrm.com - 192.168.4.22 So erreichen LAN-Telefo...
local_net für split-DNS / LAN Client RTP fix hinzufügen
Telefone im selben LAN wie k1m1 über split DNS verbinden (domain löst auf 192.168.4.22 intern). Ohne local_net wirbt Asterisk immer noch für die externe Domain ...
Bestehender Zauberkontakt=Speicher fix und blockiert SIP-Scanner im Start.sh
- Injizieren [res_pjsip] contact=Speicher in sorcery.conf bevor Asterisk beginnt; das Standard-Wrerei-astdb SQLite Backend lässt lautlos alle REGISTER-Kontakt...
Sub-Tab-Inhalt füllt volle Inhaltsbreite
Lassen Sie die zentrierte max-Breite Einschränkung (war 920 / 1200 / 680 / 720 je abhängig auf Registerkarte) auf SubTabShell. Die Seite lebt bereits im Inhalt ...
Fix Befestigungsparing und hat Fehlalarme
Drei Korrekturen an EmailImapService: 1. toEnvelope: schmaler mehrteiliger Check nur auf multipart/mixed HTML+Text E-Mails (Multipart/Alternative) zeigen ke...
Download-Button zum Abschnitt mit der Ansicht hinzufügen
Die klassische Ansicht (MessageBrowser) hatte eine eigene Anlageliste, die fehlt der Download-Button - nur die Gesprächsansicht wurde behoben vorher. passt auch...
com.kamo.z.shared.commerce zu EnableJpaRepositories scan hinzufügen
**************** (erforderlich von **************** in der gemeinsamen Bibliothek) lebt unter com.kamo.z.shared.commerce in der JPA-Repository-Scan enthalten, w...
Richtge Layout, Polsterung und Anbieter-Logos
Layout / Abstandsbehebungen: - Alle sechs Registerkarten (Provider, Erweiterungen, Telefonbenutzer, Geräte, Voicemail, Gesundheit) jetzt wickeln ihren Inhalt ...
Korrekter Feldname und Typ in getFromAddresses Antwort
Backend schickte 'E-Mail' Schlüssel, aber Frontend erwartet 'Adresse', und gesendet, gaben die 'shared_mailbox' an, wenn das Frontend 'geteilt' erwartet. Auch F...
Laden Sie Adressen aus zugänglichen Mailboxen und Aliasnamen
Ersetzt den defekten getFromAddresses() Endpoint (der 'E-Mail' gesendet hat statt 'Adresse') mit getAccessibleMailboxes() + listMemberAliases(), passend zur gle...
Verwenden Sie CockroachDB-kompatible DROP INDEX CASCADE Syntax
CockroachDB lehnt ALTER TABLE ... DROP CONSTRAINT für UNIQUE Einschränkungen mit: unausgewiesen: UNIQUE constraint "uk_org_oauth_provider" nicht fallen lasse...
Drop streunende VOIPService spec md von repo
Pro Projektversammlung (.md-Dateien versenden nicht mit Dienstleistungen).
Fügt com.kamo.z.shared.commerce in Repository-Scan bei
Neueste Kamo-Shared-Bibliothek propagiert ************ (donotmodify.dao.services), die eine Konstruktor-Abhängigkeit von ******************************** Servic...
Plattform-Konfigurations-Tabs (Allgemein / VOIP & SMS / System User / Advanced)
Wraps ************ in EinstellungenAnsicht mit vier Registerkarten: - Allgemein: Nur lesbare Plattformübersicht - total orgs, active phone-server Instanzenzä...
Download-Button hinzufügen und mark-as-read-erkoppeln
- Jede Anlagezeile mit einem Download-Symbol hinzufügen, damit Benutzer eine Datei herunterladen statt nur in einem neuen Tab öffnen - DeCouple markConversati...
Globaler VOIP-Sync-Job (admin-tunable interval)
VoipGlobalSyncJob tickt jede Minute und, auf jeder Zecke, liest die SystemKonfiguration Singleton zu entscheiden, ob eine globale Synchronisierung fällig ist: -...
System-config + Plattform-Übersicht Endpoints
Plattformweite Konfigurationsfläche, gated by the bestehende Top-Level-Besitzer guard (passt SystemUserConfigController's requireTopLevelOwner Muster). Endpunk...
Per-Instance-Ressourcensteuerung + org aggregieren + interne Synchronisation
Per-Instanz-Ressource CRUD (Erweiterungen / Benutzer / Geräte / Voicemail): - VoipExtensionsController bei ************ - VoipUsersController bei /api/voip/inst...
Multi-Instance Provider Refaktor + full FreePBX + Flowroute SMS
Kernmodellwechsel: eine oder eine oder andere VoipProvidInstances (war: eins pro Org). Jeder Provider-API-Aufruf ist jetzt instanziell. PhoneProvider-Schnittst...
Multi-Instance-Telefon/SMS-Anbieter Migration
Ausführt nach Hibernate ddl-auto:update erstellt neue Tabellen (VOIP_PROVIDER_INSTANCE, BULK_TEXT_PROVIDER_INSTANCE, PHONE_EXTENSION, PHONE_END_USER, PHONE_DEVI...
Multi-Instance Telefon/SMS-Anbieter schema foundation
- VoipProviderConfig umbenennen - VoipProviderInstance; Drop UNIQUE(org_id), addieren Sie instance_name, config_json, last_sync_at, last_sync_error. - Umbenenne...
Verschieben Sie hostPath von MinIO (rclone FUSE) nach lokal /var/lib/pbx
MinIO via rclone FUSE unterstützt POSIX chmod oder symlink() nicht benötigt durch das Modulsystem von FreePBX. Alle FreePBX und MariaDB geändert hostPath-Volume...
Wrap fwconsole/amportal via php für MinIO FUSE hostPath
/var/lib/asterisk wird von MinIO über rclone FUSE unterstützt, das nicht unterstützt POSIX chmod, so dass fwconsole-Skripte auf diesem Volume nicht ausführbar s...
PreStop-Haken und Kündigung hinzufügenGracePeriodSeconds
Container wurden in Terminierung stecken, weil Hintergrund Asterisk Prozesse weitergelaufen, nachdem apache2ctl (PID 1) beendet wurde. preStop Hook sendet SIGTE...
Bootstrap.php hinzufügen, um /etc/freepbx.conf zu regenerieren
Der Installer schreibt freepbx.conf mit datasource=' und a require_once für bootstrap.php, von welcher config.php abhängt, um die FreePBX-Klasse zu laden. Unser...
Regenerieren /etc/freepbx.conf beim Neustart
/etc ist ephemeral (kein hostPath), also /etc/freepbx.conf geschrieben Installer geht bei jedem Pod-Restart verloren. Zusätzliche Zweige zu regenerieren es von ...
Bypass start_asterisk, warten Sie stattdessen auf Steuerbuchse
start_asterisk verwendet "pidof asterisk", das ein falsches Positives auf pod zurückgibt Startt wieder, wodurch die Warte-für-Sternchen-Schleife hängt. Jetzt st...
Starten Sie Asterisk im Hintergrund, warten Sie darauf, dann installieren Sie Installer
Der Entrypoint.sh führt nicht mit dem FreePBX Installer . es startet nur Dienstleistungen. startup.sh repliziert jetzt die Eingabepunkt-Setup-Schritte, beginnt ...
Lassen Sie entrypoint handle install, not startup.sh
FreePBX Installer (php install -n) erfordert Asterisk bereits Laufen. Unser Startup.sh rief es an, bevor Asterisk begann, was "Fehler kommunizieren mit Asterisk...
Mount /etc/asterisk only, not /etc, um PHP simplexml Fehler zu beheben
Das Montieren der vollen /etc als HostPath-Volumen beschädigt PHP-Erweiterung Laden auch nach Aussaat aus dem Bild - simplexml_load_file undefiniert bei der Ins...
Reduzierung der CPU-Grenzen auf 2:1 Verhältnis, um Überbindungen zu beseitigen
Docs 4 x 1 Kern, jibri 4x2 Kern, libretranslate 2 x 1 Kern, bergamot 2 x 1 Kern, Coturn 1 x 0,5 Kern. Speichert 7,5 Kerne von Knotengrenzen.
Wechsel zu escomputern/freepbx:17 mit der richtigen Architektur
tiredofit/freepbx hat kein FreePBX 17 Bild (seit 2022 aufgegeben). escomputer/freepbx:17 (aktualisiert Apr 2026, Asterisk 21 + FreePBX 17) benötigt eine separat...
Drop Public Ad Ad Ingress; Zugriff über http://k[12]m1:8088
Admin UI ist jetzt intern-only über LAN/WireGuard auf Port 8088 (FreePBX's nginx direkt an hostNetwork gebunden). Keine Traefik-Route, keine Let's Encrypt cert,...
FreePBX 17 + Jigasi SIP Brücke auf k1m1 und k2m1
FreePBX (tiredofit/freepbx:17-latest) läuft mit hostNetwork so SIP/RTP behält echte Client IPs, die per node per node angeheftet werden. SIP on 5060 UDP/TCP (50...
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.