KamoCRM

Live Change Log

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

17,395
Total Changes
5,910
Features
5,260
Fixes
30
Projects
Filter by project
All Projects17,395AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,830TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,328kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,637kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,910Fix5,260Other993Performance165Refactor278Revert23Style42Test159Upgrade1
April 16, 2026
FeatureDaemonService

Add Quartz job for automated lead intake payload processing

Adds LeadIntakeProcessingJob that runs every minute to process queued raw payloads from 3rd-party vendors. Applies configured field mappings, transformations (t...

Kamo·6mo ago
FeatureSecurityService

Add lead intake management and public receive controllers

Adds two controllers for the automated lead intake system: - LeadIntakeController: authenticated CRUD for intake endpoints, field mappings, payload queue mana...

Kamo·6mo ago
FeatureAPIService

Add public lead intake endpoint for 3rd-party lead submission

Adds LeadIntakePublicController at /api/public/lead-intake/{token} that accepts lead data in any format (JSON, form-urlencoded) from 3rd-party vendors and forwa...

Kamo·6mo ago
Featurekamo-shared-library

Add Lead Intake system entities, repos, DTOs, and service

Adds the complete data layer for the automated lead intake system: - 4 entities: LeadIntakeEndpoint, LeadIntakeFieldMapping, LeadIntakeRawPayload, LeadIntakePro...

Kamo·6mo ago
ChoreEmailService

Bump version to trigger rebuild with updated kamo-shared-library

Rebuilds the Docker image with the fixed Member entity (memberType field removed) so the Hibernate SQL no longer selects security_level from the member_team_mem...

Kamo·6mo ago
FeatureSecurityService

Add GET **************** endpoint using SQL count

Kamo·6mo ago
Featurekamo-shared-library

Add **************** to CommitLogRepository

Kamo·6mo ago
Fixkamo-marketing

Chat *** — fix verify timing and improve banner copy

- ***Provider: triggerVerify effect now depends on challengeUrl so verify() is only called after the widget is mounted; uses rAF to ensure the DOM has paint...

Kamo·6mo ago
Featurekamo-marketing

Integrate kamo *** (proof-of-work) into contact form, demo form, and chat widget

- Add ***Provider reusable component wrapping Capcha-widget with dark theme styling - Contact form: auto-verify on focus, gate submission until verified - Demo ...

Kamo·6mo ago
Fixkamo-shared-library

Remove memberType field entirely to prevent Hibernate duplicate column

The previous fixes (@Transient on field, @Access(AccessType.FIELD) on class) were insufficient. Bytecode inspection revealed Lombok's @Setter generated a public...

Kamo·6mo ago
FixInitializerService

Email as paid add-ons, not included free

- KamoMail Hosting: $5/user/mo add-on on all plans - 3rd Party Email Integration: $2/user/mo add-on on all plans - Email hosting feature reverted to "Add-on" in...

Kamo·6mo ago
Fixkamo-marketing

Email as paid add-on, update all fallback pricing data

- KamoMail Hosting: $5/user/mo add-on (not free — liability concern) - 3rd Party Email Integration: $2/user/mo add-on - Updated calculator page fallback data (w...

Kamo·6mo ago
Featurekamo-marketing

Add animated cookie consent banner with glassmorphism design

Floating bottom-left card with spring animations, essential/analytics cookie toggles, localStorage persistence, and a Cookie Settings link in the footer to re-o...

Kamo·6mo ago
FixInitializerService

Use 18DOFF promo code with April 30 2026 expiry

Kamo·6mo ago
Fixkamo-marketing

Use 18DOFF promo code, update expiry to April 30, 2026

Reverted promo code from EARLYBIRD back to 18DOFF to match nav headers. Updated nav text from "Prelaunch" to "Early Bird" for consistency. Set offer expiry to 2...

Kamo·6mo ago
Fixkamo-marketing

Update fallback pricing data to match new production prices

The API returns 401 so the marketing site uses hardcoded fallback data. Updated all fallback plans, addons, bundles, and comparison table to match the new prici...

Kamo·6mo ago
Featurekamo-marketing

Update marketing site for new production pricing

- Added eSignatures to addon icon maps and calculator toggle - Email hosting shown as "Included Free" instead of paid add-on toggle - Updated FAQs: added TCO co...

Kamo·6mo ago
FeatureInitializerService

Update KamoCRM pricing to production go-to-market rates

- Starter: $34/mo ($28 annual), Business: $72/mo ($59 annual), Enterprise: from $109/mo ($99 annual) - Business plan expanded from 50 to 100 users - Added eSign...

Kamo·6mo ago
Fixkamo-shared-library

Add @Access(AccessType.FIELD) to Member to stop Hibernate mapping getMemberType() as a column

The previous fix (@Transient on the memberType field) was insufficient. Hibernate 6 was still discovering the public getMemberType() method via property scannin...

Kamo·6mo ago
Fixkamo-internal

Show uploader name, widen date column, merge extension icon into file name

- Uploaded By: was always empty — field name was correct but backend never set createdByName; now resolved on the backend side - File Name column: prepend fil...

kamo·6mo ago
FeatureDocsService

Populate createdByName in DocumentMetadata from uploader member

convertToMetadata() now reads **************** and sets createdByName so the Uploaded By column in the doc manager shows the actual uploader's name.

Kamo·6mo ago
Featurekamo-shared-library

Track uploaded-by member on Img entity

Add createdByMember (ManyToOne) field to Img so the uploader is persisted at upload time. ImageService.uploadDocument() now sets it from the calling member. Hib...

Kamo·6mo ago
Fixkamo-shared-library

Resolve security_level SQL error caused by duplicate MEMBER_TYPE column in Hibernate 6

Member.java mapped MEMBER_TYPE both as @DiscriminatorColumn and as an explicit @Column field. Hibernate 6 selected the column twice in the parent table projecti...

Kamo·6mo ago
FeatureDocsService

Expose thumb and converted file sizes in DocumentMetadata

Adds thumbFileSize, convertedFileSize, and convertedThumbFileSize to the DocumentMetadata DTO and populates them in convertToMetadata() from the ImgDat and its ...

Kamo·6mo ago
Featurekamo-internal

Add stored size tooltip to Size cell in doc manager

Tooltip shows the breakdown of actual storage used per document: original file, thumbnails (original + converted combined), and converted doc — plus a total. Th...

kamo·6mo ago
Fixkamo-internal

Skip loading screen for file downloads in NavigationInterceptor

Blob URLs and links with the download attribute never cause page navigation, so the global click handler now returns early for these — preventing the "Loading K...

kamo·6mo ago
Fixkamo-internal

Surface save errors and revert optimistic update in email provider selector

When saving a non-configurable provider (KamoMail, ParentOrg, NotConfigured) failed, the error was set in state but never displayed in the list view, and the op...

kamo·6mo ago
Featurekamo-internal

Move doc manager action buttons to toolbar search row

- Removed Create Document, Upload Document, Bulk Upload, and Refresh from the gradient hero header - Hero header is now title/description only - Create Document...

kamo·6mo ago
FixSecurityService

Correct security_level column reference in login SQL

security_level is on the members table (m), not member_team_member (e). The wrong alias e.security_level caused the entire SQL to fail silently, so memberType w...

Kamo·6mo ago
Fixkamo-internal

Restore team-member/member permission model for share dialog

Team members (memberType=TEAM_MEMBER) bypass all gates. Regular members are gated by SHARE_DOCS_* rights. Legacy sessions without memberType get temporary full ...

kamo·6mo ago
Fixkamo-internal

Allow any authenticated member to share documents

Remove role-based gate on share dialog — any logged-in member can share. The previous check required isTeamMember (from session memberType) or specific SHARE_DO...

kamo·6mo ago
FixDocsService

Correct member name access in resolveAlias endpoint

member.getNameFirst() doesn't exist — name is on User.getName(). Use getMemberDisplayName() helper which correctly navigates the member -> user -> EmbNameFull p...

Kamo·6mo ago
FeatureSecurityService

Store memberType in Redis session at login

Adds CASE WHEN e.id IS NOT NULL THEN 'TEAM_MEMBER' ELSE 'MEMBER' END to the login SQL query and passes the result through createSession into Redis, so frontend ...

Kamo·6mo ago
Fixkamo-internal

Import blake3 from blake3/browser to initialize WASM correctly

blake3/esm/browser requires manual WASM provisioning; blake3/browser does it automatically.

kamo·6mo ago
FeatureDocsService

Add document sharing endpoints to ImagingController

Adds: shares/by-image, shares/create, shares/update/{id}, shares/delete/{id}, shares/shared-with-me, **************** **************** shares/resolve-alias

Kamo·6mo ago
Featurekamo-login

Add ?next= forward parameter support for post-login redirect

Captures ?next=/path from URL and carries it through both manual login and auto-login flows, appending it to the OTK redirect URL so kamo-internal can redirect ...

Kamo·6mo ago
Featurekamo-internal

Implement document sharing system with share dialog, Shared With Me tab, and shareable links

- Add ShareDocumentDialog with permission-based member/team/dept/jobTitle recipient picker - Wire Share button in DocManager toolbar (MY_DOCS only) - Add Shared...

kamo·6mo ago
Featurekamo-shared-library

Add doc sharing security rights (SHARE_DOCS_SEARCH_MEMBERS, SHARE_DOCS_ALIAS_MEMBERS, SHARE_DOCS_SEARCH_TEAM_MEMBERS, SHARE_DOCS_ALIAS_TEAM_MEMBERS)

New RoleRightType entries (IDs 108-111) under ServiceType.DOCS to control member document sharing permissions with search vs alias-only access patterns.

Kamo·6mo ago
April 15, 2026
Featurekamo-internal

Real BLAKE3 hashing and pre-upload dedup check in doc manager

- Replace BLAKE3 placeholder with real blake3 WASM in fileHashing.ts - Add check-hashes and register-existing API proxy routes - MultiFileUploader now checks se...

kamo·6mo ago
FeatureConversionService

Add check-hashes and register-existing endpoints for upload dedup

- POST /check-hashes: client sends hashes before upload, server returns whether file exists - POST /register-existing: creates Img record pointing to existing I...

Kamo·6mo ago
Featurekamo-shared-library

Add real BLAKE3 hashing, pre-upload dedup check, and org-scoped dedup

- Replace BLAKE3 placeholder with real BouncyCastle Blake3Digest in HashUtils - Add dedupScope column to ImgOrgAssoc (GLOBAL or ORG, default GLOBAL) - Add org-s...

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