KamoCRM

Live Change Log

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

17,494
Total Changes
5,983
Features
5,282
Fixes
30
Projects
Filter by project
All Projects17,494AIService251APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService576InitializerService329KBService151KlusterServices738MCPGatewayService248MediaService602RAGService79SecurityService1,846TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,349kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,657kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,254Feature5,983Fix5,282Other994Performance165Refactor278Revert23Style42Test160Upgrade1
April 19, 2026
FixEmailService

Update EMAIL_VERIFICATION sample vars to match current template

Use expiryText instead of expiryMinutes (renamed variable), and update verifyLink to point to the register subdomain (correct send path).

Kamo·6mo ago
Fixkamo-internal

Prevenirea dubla-ambalare de corp complet documentHtml în bloc designer

Când bodyBlocks este nul și bodyHtml este un document complet <!DOCTYPE html> (de exemplu, șabloane însămânțate canonice), importând-o ca un singur bloc cauzat ...

kamo·6mo ago
FeatureSecurityService

Pass human-readable expiry time to email verification template

Add humanizeMinutes() helper that formats minutes as days/hours/minutes (e.g. "1 day" for 1440 min). Pass as {{expiryText}} to match updated canonical template ...

Kamo·6mo ago
Featurekamo-shared-library

Îmbunătățește șablonul de verificare a e-mailului

- Adăugați link-ul de verificare text simplu de mai jos buton ca copie-pastă de rezervă - Comutarea variabilei de expirare de la {expiryMinutes}} la {expiryText...

Kamo·6mo ago
Fixkamo-register

Restaurarea aspectului paginii de verificare prin zeroarea dimensiunilor de intrare ascunse

Caseta MUI interpretează valorile de lățime/înălțime numerică 0 lățimea:1 a făcut intrarea ascuns acoperă cardul complet. Schimbat la 0 astfel încât intrarea es...

Kamo·6mo ago
April 18, 2026
FixEmailService

Preserve DB domain case in NoReply from address

Removed toLowerCase() — the domain already comes from resolvePrimaryDomain which reads org_domains from the database, so case is canonical from DB.

Kamo·6mo ago
Featurekamo-internal

Searalize full email HTML cu cadru exterior pe șablon salva

- serializeFullEmailHtml infasoara blocuri interioare in cadrul exterior marcat (sigla antetului, titlu/subtitrare, zona de conținut, logo-ul subsolului + denum...

kamo·6mo ago
Stylekamo-shared-library

Adaugă cadru exterior de marcă în șablonul canonic de verificare e-mail

Învelește conținutul interior cu o coajă de e-mail corespunzătoare: antet cu nume de org, zona de conținut căptușit, și Footer. Se utilizează ca identificator {...

Kamo·6mo ago
FeatureSecurityService

Add code-based email verification path to /verify-email endpoint

The endpoint now handles both token (link click) and userId+code (manual 6-digit entry). Token path unchanged; code path hashes the supplied code and matches ag...

Kamo·6mo ago
Fixkamo-register

Token link auto-verifică și redirecționează către autentificare; adăugați indicatorul de focalizare cod

- /verification?token=xx acum apeluri verifica EmailByToken pe Mount și redirecționează către autentificarea succesului; cade înapoi la codul de intrare pe eșec...

Kamo·6mo ago
Fixkamo-register

Lift *** widget deasupra click-to-focus overlay (z-index)

Suprapunerea (poziţia:absolut, z-index:0) acoperea Capcha widget pentru că a apărut mai târziu în ordinea DOM. Adăugare z-index:1 Containerul permite ca evenime...

Kamo·6mo ago
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
Refactorkamo-internal

Antet de editor compactă

Elimină antetul lipicios (titlu, subtitlu, Save/Cancel/Preview) butoane, Editare/Previzualizare tab bar) de la EmailTemplateEdit la revendicare ~200px de spațiu...

kamo·6mo ago
Featurekamo-register

Necesită *** pe pagina de verificare înainte de fiecare încercare de verificare/retrimitere

*** este resetat după fiecare acțiune (succes sau eșec) astfel încât un nou rezolvarea este necesară pentru fiecare încercare ulterioară.

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
Fixkamo-register

Redirect la /verificare după înregistrare în loc de redarea în linie

Păstrează URL-ul exact .

Kamo·6mo ago
FixEmailService

Resolve root domain for NoReply from-address instead of bare subdomain

resolvePrimaryDomain() was returning the first domain entry (e.g. "www") which produced NoReply@www. Now prefers root domains (parent == null) so transactional ...

Kamo·6mo ago
FixSecurityService

Populate all EMAIL_VERIFICATION template variables

Was sending only {token, code} — template also needs orgName, firstName, verifyLink, and expiryMinutes. Load org and user to build the full vars map, and resolv...

Kamo·6mo ago
FixEmailService

Add internal.auth.secret to EmailService configmap

InternalAuthFilter was rejecting all service-to-service calls (send, seed-org) with 503 because internal.auth.secret was unconfigured. Matches the same INTERNAL...

Kamo·6mo ago
Refactorkamo-login

Redirect EMAIL NOT VERIFICAT to register/resend-verification

Elimină e-mailul onlineVerifyCard din pagina de autentificare și toate asociate state/callbacks. Pe EMAIL NOT VERIFICAT, utilizatorul este acum transmis la E o ...

Kamo·6mo ago
Featurekamo-register

Adaugă /resend-verification page for login redirections

Creează o rută independentă /resend-verificare care acceptă ?email și ?userId interogare params, reusing PostCompletionScreen for a consistente verificare e-mai...

Kamo·6mo ago
FixEmailService

Allow transactional send on port-25 relay and auto-seed missing templates

Port-25 SMTP (postfix) requires no auth — transactionalCredentials() was throwing ProviderUnavailableException when user/pass were unconfigured, blocking all ve...

Kamo·6mo ago
FixSecurityService

Use subdomain-aware SQL to match findByDomain JPQL logic

Org domain lookup in resendVerification was doing an exact-match query that failed for subdomains stored as child records (e.g. 'api' with parent 'kamocrm.com')...

Kamo·6mo ago
Fixkamo-login

Setează gazda/X-forwarded-Host astfel APIService rezolvă org corect

APIService suprascrie X-forwarded-Host cu cerere.getServerName(), care citește din antetul gazdei. Fără un antet gazdă explicit serviciul intern K8s numele gazd...

Kamo·6mo ago
FixSecurityService

Correct EmailService URL port in configmap (4203 -> 80)

EmailService K8s service exposes port 80, not 4203. Verification emails were timing out on every registration attempt.

Kamo·6mo ago
Featurekamo-register

Redesign email screen de verificare + fix resend email bug

- PostCompletionScreen: full-page layout cu fundal animat org, card de sticlorfism, logo, cutii de coduri vizuale cu 6 cifre, stări de succes/verificate - resen...

Kamo·6mo ago
FixSecurityService

Bypass JPA org lookup to avoid Hibernate cascade flush error

**************** triggers **************** which causes a Hibernate auto-flush. That flush fails because Organization.features was previously replaced with a pl...

Kamo·6mo ago
Refactorkamo-shared-library

Eliminați încărcarea de caracteristici dornice de la getOrganizationByDomain

Caracteristicile sunt o preocupare la nivel de org fără legătură cu majoritatea apelanţilor acestei metode (de exemplu, înregistrarea, rezoluția domeniului de a...

Kamo·6mo ago
Fixkamo-shared-library

Mutați elemente de colectare în loc pentru a evita orfană cascadă Eroare de memorie

Calling org.setFeatures (newList) înlocuiește Hibernate-tracked persistent colectare, provocând JpaSystemException atunci când orice interogare declanşează auto...

Kamo·6mo ago
FixSecurityService

Use getReferenceById to avoid cascade orphanRemoval flush error on registration

Loading Organization via findById inside @Transactional caused Hibernate to detect the features collection was de-referenced during auto-flush, throwing JpaSyst...

Kamo·6mo ago
Fixkamo-login

Retrimite verificarea folosind e-mail nu userId, înainte X-forwarded-Host

SecurityService /register/resend-verification se așteaptă la e-mail în organism; nu userId (pe care răspunsul de eroare de autentificare nu îl include niciodată...

Kamo·6mo ago
Featurekamo-register

Meci de stocare kamo-internal avatar

Dialog cultură produce acum trei PNG pete (50/150/350px) prin pânză, identice la Avatar Manager kamo-intern. După înregistrare returnează utilizatorId, petele S...

Kamo·6mo ago
FeatureSecurityService

Add register-photo endpoint for unauthenticated post-registration avatar upload

POST **************** accepts userId + file/fileSm/fileMd/fileLg without a session. Guards: user must be unverified and have no avatar yet, preventing abuse aga...

Kamo·6mo ago
Featurekamo-login

Înlocuiește eroarea EMAIL NOT VERIFICATĂ cu cardul bogat de verificare

Atunci când login-ul nu reușește cu EMAIL NOT VERIFICAT cardul de autentificare este înlocuit acum cu un lustruit "Verificați ecranul inbox": animat plic SVG cu...

Kamo·6mo ago
Featurekamo-register

Extindeți încărcarea fotografiilor pentru a suporta formatele AVIF și SVG

Adaugă imagine/avif și imagine/svg+xml în lista de intrare a fișierului accepta și Regulamentul de validare. Actualizează eticheta indiciu pentru a lista toate ...

Kamo·6mo ago
Featurekamo-register

Adăugați editorul foto react-easy-crop la etapa de încărcare a înregistrării

Oglinzi PhotoCropDialog de la Avatar Manager kamo-intern: - dialogul de cultură se deschide imediat după selectarea fișierului - tigaie prin tragere, zoom prin ...

Kamo·6mo ago
FixEmailService

Add dao.repositories to JPA scan so EmailTemplateRepository is found

Same pattern as KamoInitializerService — explicit basePackages overrides default scanning and must include every package that has repositories.

Kamo·6mo ago
Fixkamo-register

Treceți corpul de eroare din amonte prin proxy de securitate în loc de mesaj generic

Din episoadele anterioare: mesaj de eroare de la Serviciul de Securitate. Acum transmite direct codul de stare şi corpul.

Kamo·6mo ago
FixSecurityService

Align registration field names and response shape with frontend contract

Frontend sends nameFirst/nameLast but controller read firstName/lastName, causing 400 "First name is required". Success response now returns {status, userId, al...

Kamo·6mo ago
Fixkamo-register

Preveniți vârsta vecheReqType cache de la afișarea incorectă a verificării vârstei

- Traseu Org: reduce Redis TTL de la 24h la 5min și adaugă vârstaReqTypeMember să se oprească detectarea astfel încât câmpurile de securitate să rămână proaspet...

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