KamoCRM

Live Change Log

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

15,120
Total Changes
5,169
Features
4,935
Fixes
30
Projects
Filter by project
All Projects15,120AIService197APIService161BillingService143ConversionService107DaemonService129DocsService215ESigService88EmailService518InitializerService318KBService105KlusterServices697MCPGatewayService85MediaService546RAGService71SecurityService1,658TranslateService55VOIPService205VectorService11kamo-apps25kamo-asterisk-support24kamo-capcha17kamo-capcha-widget4kamo-internal6,937kamo-login330kamo-marketing625kamo-nowww20kamo-register213kamo-shared-library1,455kamo-signer-monorepo53kamolos108
Filter by type
All TypesBuild11CI523Chore738Docs2,167Feature5,169Fix4,935Other986Performance157Refactor274Revert23Style42Test94Upgrade1
April 18, 2026
Featurekamo-register

Add /api/capcha/challenge proxy route

Kamo·5mo ago
FixSecurityService

Resolve duplicate emailTemplateServiceClient bean conflict

**************** and **************** were identical @Components with the same default bean name, causing **************** at startup. Delete the duplicate in r...

Kamo·5mo ago
FixVOIPService

Bump kamo-shared-library to 1.4.0

Docker Stage 1 builds kamo-shared-library main (now 1.4.0) and installs it to the local .m2; the service pom still referenced 1.0.0 which Maven could not find, ...

Kamo·5mo ago
Fixkamo-register

Apply SP6 correctness and implementation quality fixes

C1: use NEXT_PUBLIC_H***_SITE_KEY env var instead of hardcoded placeholder C2: change RegisterResponse.userId and all API params from number to string (Cockroac...

Kamo·5mo ago
Featurekamo-register

SP6 register wizard refactor — split PersonalInfo, add real registration API

- Replace FormPersonalInfo with FormName (name fields) and FormAvatar (Avatar Creator generator with generate/upload/skip modes for 13+) - Delete FormRecoveryEn...

Kamo·5mo ago
FeatureInitializerService

SP5 migrate KamoCRM agereq to ALL_WORK_ELIGIBLE

Add KamoCRMAgeReqUpdateRunner (order 10) — conditional idempotent UPDATE on startup; WHERE clause checks old value so re-runs are no-ops. Errors are swallowed s...

Kamo·5mo ago
FixSecurityService

Address 4 code-review findings in registration and login paths

- Hide raw exception message in /register 500 path; log instead - Fail-closed (503) on email-verified DB check failure in login - verifyEmailToken throws if use...

Kamo·5mo ago
FeatureSecurityService

Implement SP4 email verification and registration wiring

- Delete legacy email/VerificationEmail.java (hardcoded SMTP stub) - Add **************** (mirrors recovery package pattern) - Add **************** — token gene...

Kamo·5mo ago
Featurekamo-marketing

Add trademark disclaimer to footer legal text

Kamo·5mo ago
Featurekamo-internal

Add account settings pages for phone + security questions (SP3)

Adds **************** with API wiring to SecurityService /api/account/*. Syncs nav across all 3 locations.

kamo·5mo ago
Featurekamo-login

Wire real API calls into /recover page (SP3)

Replaces all fakeSubmit() stubs with recoveryApi calls. Adds SMS OTP verify phase, seed email input, new-password step, and token landing via ?token= URL param.

Kamo·5mo ago
FeatureSecurityService

Add AccountSettingsController + Service for phone + security questions (SP3)

Allows logged-in users to set/verify phone and configure 3 security questions. Routes to /api/account/* (session-authenticated via KSESSION_DATA).

Kamo·5mo ago
FeatureSecurityService

Add BulkTextSmsClient + EmailTemplateServiceClient + PasswordRecoveryController (SP3)

Full password recovery flow: email-link, SMS OTP, security questions, seed phrase. Routes to /api/recover/* (unauthenticated). Uses SP1 email pipeline + VOIPSer...

Kamo·5mo ago
Featurekamo-shared-library

Add recovery entities + repos; bump to 1.3.0 (SP3)

Adds PasswordResetToken, SmsOtp, RecoverySession, AccountVerificationCode JPA entities with corresponding repositories for SP3 recovery flow.

Kamo·5mo ago
Featurekamo-internal

Route preview through Browser's backend-rendered modal (part of SP2)

The EmailTemplateBrowser now owns the Preview modal directly, so the Manager no longer needs to intercept row-level preview requests and redirect to edit mode.

kamo·5mo ago
Featurekamo-internal

Wire EmailTemplateEdit to real API

Hydrates from templateApi.get, saves via templateApi.update. Category dropdown is API-driven with inline category-create affordance. Variables picker reads from...

kamo·5mo ago
Featurekamo-internal

Wire EmailTemplateBrowser to real API + add System Defaults tab

Replaces ~140 lines of mock data with templateApi.list() calls. Conditional fifth tab 'System Defaults' appears only for top-level-org admins and renders from r...

kamo·5mo ago
Featurekamo-internal

Add EmailTemplateDuplicateDialog (part of SP2)

kamo·5mo ago
Featurekamo-internal

Add EmailTemplatePreview modal

Opens on row-action Preview. Backend-rendered via templateApi.preview(); result displayed in a sandboxed iframe for style isolation. Matches the exact code path...

kamo·5mo ago
Chorekamo-internal

Delete unused EmailGeneralManager.tsx (~560 lines of dead code)

Component was never imported anywhere. Its toggles (bounce handling, unsubscribe, delivery tracking, default from email) had no backend and were purely cosmetic...

kamo·5mo ago
Featurekamo-internal

Add templateApi + categoryApi + variableContracts client modules

Wraps SP1's /api/email/templates/* and **************** endpoints with typed TypeScript helpers. variableContracts mirrors SP1's TemplateKeys Javadoc so the edi...

kamo·5mo ago
FeatureSecurityService

Wire EmailTemplateSeedClient into ****************

Thin RestTemplate client that POSTs to EmailService's **************** after an org + owner TeamMember are persisted. Retries twice with backoff; failure throws...

Kamo·5mo ago
FeatureEmailService

Add EmailTemplateCategoryController REST endpoints

**************** CRUD. Delete response includes reassignedCount — the number of templates that became uncategorized as a result of removing the category. Sessio...

Kamo·5mo ago
FeatureEmailService

Add EmailTemplateController REST endpoints + DTOs

Exposes /api/email/templates/* CRUD + preview + duplicate + reset-to-default + service-to-service /send + /seed-org/{orgId}. Top-level orgs (no parent) addition...

Kamo·5mo ago
FeatureEmailService

Add InternalAuthFilter for service-to-service endpoints

Validates X-Internal-Auth header on /api/email/templates/send and /api/email/templates/seed-org/* paths. Other paths bypass this filter (user session auth handl...

Kamo·5mo ago
FeatureEmailService

Add EmailTemplateCategoryService — CRUD for org-scoped categories

Case-insensitive name uniqueness per org enforced at service layer (matches the partial unique index in the DB). Deletion nulls category_id on affected template...

Kamo·5mo ago
FeatureEmailService

Add EmailTemplateService — CRUD + send + seed + reset-to-default

Core orchestrator for transactional email. sendToUser resolves the template, renders subject/body, picks the org's primary domain from Organization.domains, and...

Kamo·5mo ago
FeatureEmailService

Add NoReplySenderService for 'NoReply@{domain}' from-address

Single source of truth for transactional-email from addresses. Accepts a domain string, lowercase-normalizes it, returns "NoReply@<domain>". Callers must resolv...

Kamo·5mo ago
FeatureEmailService

Add TemplateRenderer for {{var}} substitution

Stateless regex-based renderer. Missing vars substitute empty string and emit a WARN log with templateKey + orgId for attribution. No HTML escaping in v1 — valu...

Kamo·5mo ago
FixSecurityService

Append Z to dateCommitted so JS parses it as UTC

LocalDateTime.toString() produces no timezone designator, causing JavaScript's new Date() to treat the UTC value as local time and display timestamps 7-8 hours ...

Kamo·5mo ago
FeatureInitializerService

Add EmailTemplateSeedRunner for SYSTEM + per-org seeding

Runs at @Order(20) on KamoInitializerService startup. Loads canonical templates from kamo-shared-library resources; upserts SYSTEM rows (no clobber); backfills ...

Kamo·5mo ago
FixSecurityService

Convert PT midnight cutoff to UTC for today-count query

Commits are stored in UTC but the cutoff was a naive LocalDateTime in PT, causing yesterday-evening PT commits (00:00–06:59 UTC) to be counted as today.

Kamo·5mo ago
FeatureInitializerService

Add partial unique indexes + CHECK constraints for email_templates

Hibernate ddl-auto can't generate partial unique indexes or computed-CHECK constraints. This commit adds them via the existing idempotent DDL runner pattern aft...

Kamo·5mo ago
Chorekamo-shared-library

Bump kamo-shared-library version to 1.2.0 for SP1 additions

Adds EmailTemplate, EmailTemplateCategory, TemplateStatus, TemplateKeys, CanonicalTemplate, CanonicalTemplateLoader, and canonical HTML resources.

Kamo·5mo ago
Featurekamo-shared-library

Add CanonicalTemplateLoader + CanonicalTemplate record

Reads the three REQUIRED templates (WELCOME, PASSWORD_RESET, EMAIL_VERIFICATION) from classpath resources at **************** Consumed by KamoInitializerService...

Kamo·5mo ago
Featurekamo-shared-library

Add canonical HTML + JSON for WELCOME, PASSWORD_RESET, EMAIL_VERIFICATION

Source-of-truth content for SYSTEM rows. Loaded at KamoInitializerService startup by CanonicalTemplateLoader and UPSERTed into email_templates. Part of SP1.

Kamo·5mo ago
FixEmailService

Rename mailboxId→id and providerStatus→status in mailbox list response

Align field names with frontend expectations for member mailbox listings.

Kamo·5mo ago
Featurekamo-shared-library

Add EmailTemplate entity + repository

Stores one SYSTEM row per template_key (org_id NULL, is_system TRUE) plus one clone per org per template_key. Soft-reference org_id/category_id. DB- driven time...

Kamo·5mo ago
Featurekamo-shared-library

Add EmailTemplateCategory entity + repository

Org-scoped categories for email templates. Soft BIGINT org_id (no FK) matches existing patterns. Case-insensitive name uniqueness per-org is enforced via a part...

Kamo·5mo ago
Featurekamo-shared-library

Add TemplateStatus enum + TemplateKeys constants for transactional templates

Declares the REQUIRED/CUSTOM/ARCHIVED lifecycle states and the three required template keys (WELCOME, PASSWORD_RESET, EMAIL_VERIFICATION). Variable contracts fo...

Kamo·5mo 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