KamoCRM

Live Change Log

Every feature, fix and improvement, posted as it ships. Nothing is held back for a launch.

17,500
Total Changes
5,986
Features
5,284
Fixes
30
Projects
Filter by project
All Projects17,500AIService251APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService576InitializerService329KBService151KlusterServices740MCPGatewayService251MediaService602RAGService79SecurityService1,847TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,349kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,657kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore774Docs3,254Feature5,986Fix5,284Other994Performance165Refactor278Revert23Style42Test160Upgrade1
April 25, 2026
FeatureKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
FeatureKlusterServices

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 ...

Kamo·6mo ago
FeatureKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
April 24, 2026
FixKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
FixKlusterServices

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.

Kamo·6mo ago
FixKlusterServices

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...

Kamo·6mo ago
ChoreKlusterServices

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...

Kamo·6mo ago
FeatureKlusterServices

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 ...

Kamo·6mo ago
April 23, 2026
April 21, 2026
April 20, 2026
ChoreKlusterServices

Elimină jocul din lista SUBDOMAINS

Kamo·6mo ago
ChoreKlusterServices

Traducerea şi adaptarea:

Kamo·6mo ago
April 19, 2026
April 18, 2026
FixKlusterServices

Remove nonexistent postfix-lmdb package, install lmdb library instead

postfix-lmdb is not a valid Alpine package; lmdb support is built into the base postfix package. The pod was CrashLoopBackOff due to apk failure.

Kamo·6mo ago
FeatureKlusterServices

Add weekly image prune and journal vacuum CronJob for k1m1

CronJob runs every Sunday 3am, privileged, pinned to k1m1. - crictl rmi --prune removes unused container images - nsenter journal vacuum enforces 500MB cap - CI...

Kamo·6mo ago
FeatureKlusterServices

Add Docs deploy step to workflow

Kamo·6mo ago
FixKlusterServices

Fix Docs image registry, add Recreate strategy to coturn/postfix, increase qdrant memory

- Docs: fix wrong image registry (redis.kamo.svc... → **************** add Recreate strategy - coturn: add Recreate strategy to prevent rolling update port conf...

Kamo·6mo ago
FixKlusterServices

Switch Postfix sasl_passwd from hash to lmdb format

Alpine postfix build does not include hash support — postmap and smtp_sasl_password_maps were silently failing, deferring every outbound relay attempt through s...

Kamo·6mo ago
FixKlusterServices

Set Traefik externalTrafficPolicy=Local to preserve client IP

With the default "Cluster" policy, kube-proxy SNATs external traffic to the node IP before forwarding to Traefik. That caused Traefik to see the node IP as the ...

Kamo·6mo ago
April 17, 2026
FeatureKlusterServices

Add geo-database-url to analytics-secret for CockroachDB geolite lookup

Kamo Analytics uses this URL to look up visitor IP→country/region/city from the **************** tables. Uses kamo user with password auth and sslmode=require (...

Kamo·6mo ago
FixKlusterServices

Clean up legacy analytics deployment on each CI run

Delete old analytics deployment, service, and ingressroute that conflict with the kamo-analytics deployment managed by its own CI/CD pipeline.

Kamo·6mo ago
FixKlusterServices

Strip X-Frame-Options header in iframe-compatible middleware

Set X-Frame-Options to empty string to remove the SAMEORIGIN value that was being inherited, allowing CSP frame-ancestors to control iframe embedding instead.

Kamo·6mo ago
FeatureKlusterServices

Add iframe-compatible middleware chain for kamo-analytics

Add security-headers-allow-iframe (no X-Frame-Options) and kamo-middlewares-allow-iframe chain so analytics can be embedded in iframes from internal.kamocrm.com...

Kamo·6mo ago
FeatureKlusterServices

Move kamo-analytics to own repo, keep only postgres in KlusterServices

- Remove analytics deployment, service, and nginx-configmap (now owned by kamo-analytics project with its own CI/CD pipeline) - Remove analytics-ingressroute ...

Kamo·6mo ago
FixKlusterServices

Reset document.title in rebrand() when React overwrites it

React re-applies RSC payload after hydration, resetting the title to "analytics". Add a title check inside the MutationObserver callback so it gets corrected ev...

Kamo·6mo ago
FixKlusterServices

Use TreeWalker to remove all "analytics" text nodes from rendered DOM

The workspace nav title "analytics" comes from JS bundles loaded after auth, rendered as a text node next to the logo SVG. Uses TreeWalker to find and clear all...

Kamo·6mo ago
FixKlusterServices

Add guarded MutationObserver for client-side rendered logo/text

Login page and dashboard content is rendered by Next.js JS bundles, not in the HTML body, so sub_filter can't reach it. Adds a script with a busy-flag-guarded M...

Kamo·6mo ago
FixKlusterServices

Redirect favicons at nginx level, fix RSC payload escaping

- Serve favicon via nginx 302 redirect instead of trying to rewrite HTML/RSC payload href strings (cleaner, always works) - Fix RSC title replacement with pro...

Kamo·6mo ago
FixKlusterServices

Use pure sub_filter replacements instead of MutationObserver

MutationObserver caused infinite loop (DOM change -> observer fires -> DOM change). Switch to direct nginx sub_filter string replacements targeting both static ...

Kamo·6mo ago
FixKlusterServices

Comprehensive analytics rebranding for login page and dashboard

- Replace title dynamically (handles "Login | analytics", "Dashboard | analytics" etc.) - Replace "analytics" h2 text on login page with Kamo logo image - Repla...

Kamo·6mo ago
FixKlusterServices

Use MutationObserver to rebrand analytics client-side rendered UI

analytics is a Next.js app that sets title/logo via JavaScript after initial HTML load. Replaces static sub_filter approach with injected script that uses Mutat...

Kamo·6mo ago
FeatureKlusterServices

Rebrand analytics analytics UI with Kamo logo, title, and favicon

Adds nginx sidecar proxy that injects CSS to replace the analytics logo with KamoCRM logo, changes the page title to "Kamo Analytics", and overrides the favicon...

Kamo·6mo ago
FeatureKlusterServices

Add analytics analytics deployment and analytics.kamocrm.com routing

- New analytics/ directory: PostgreSQL StatefulSet + analytics deployment, services, and secret template - **************** routes analytics.kamocrm.com → analy...

Kamo·6mo ago

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing