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
May 15, 2026
Featurekamo-shared-library

Pipeline state machine, conditions, templates, NATS events

Sub-project 4 (LOS pipeline & workflow) backend: - New enum LoanConditionStatus (OPEN/CLEARED/WAIVED) - New entities: LoanPipelineMilestone (append-only transi...

Kamo·4mo ago
Featurekamo-shared-library

URLA service layer (repos, DTOs, services, lookups)

Adds the full backend service layer for the URLA package introduced in the previous commit: repos/applications/ 20 JpaRepositories scoped per entity ...

Kamo·4mo ago
Featurekamo-shared-library

URLA 2021 schema foundation for residential mortgage

Refactor AppMortgage into a full URLA package root supporting multiple 1003s per loan with up to two borrowers per pair (married/joint or unmarried). Replaces t...

Kamo·4mo ago
May 11, 2026
Fixkamo-shared-library

Guard admin-essential rights + re-seed roles on template edit

HIGH: **************** now refuses to persist a NUKE or FORCE_NUKE setting on any of the ADMINISTRATOR template's admin-essential rights (CONFIGURE_SYSTEM, MANA...

Kamo·4mo ago
Otherkamo-shared-library

Revert "feat(member): **************** for idempotent role promotion"

This reverts commit ****************

Kamo·4mo ago
Featurekamo-shared-library

**************** for idempotent role promotion

Adds a public, transactional ensureRoleAssigned(memberId, roleId) that: - No-ops if the role is already on the member. - Looks up the OrgRole and saves a ne...

Kamo·4mo ago
Featurekamo-shared-library

Chunked recalc + cross-model fan-out + typeTemplate non-force fallback

Adds three things needed for template edits to actually reach existing members without forcing a logout/login cycle: 1. **************** — walks every org po...

Kamo·4mo ago
May 10, 2026
Fixkamo-shared-library

Drop CountryTypeConverter from EmbAddress.country

The converter writes the enum name (e.g. "UNITED_STATES") as a String, but every table embedding EmbAddress (orgs, users, members, user_addresses, account_addre...

Kamo·4mo ago
May 1, 2026
Fixkamo-shared-library

Add attachments and event fields to ChatMessageDto; ignore unknown fields

ChatMessageDto was missing `attachments`, `readMemberId`, `msgIdLastViewed`, `dateLastViewed`, `addedMemberId`, `objImgId`, `transitMemberId`, and `isJoin` fiel...

Kamo·5mo ago
Fixkamo-shared-library

Split findChatSessionsForMemberPaged into First/After to fix empty Chats tab

HAVING CAST(null AS TIMESTAMP) IS NULL did not evaluate as expected in CockroachDB,

Kamo·5mo ago
Fixkamo-shared-library

Switch MediaObjTransit to @MapsId derived-identity pattern

@IdClass combined with @Id @OneToOne is not reliably supported in Hibernate 6 — JpaRepository<MediaObjTransit, UUID> initialization fails with "does not define ...

Kamo·5mo ago
Fixkamo-shared-library

Add @IdClass for MediaObjTransit so Spring Data JPA can expose its derived ID

Spring Data's metamodel requires @IdClass for entities whose primary key is a @Id @OneToOne derived identifier. Without it, JpaRepository<MediaObjTransit, UUID>...

Kamo·5mo ago
Featurekamo-shared-library

Add countUnreadAfter(guid, memberId, since) to MediaObjRepository

Needed by paged chat-list endpoint to compute per-session unread counts when ownLastViewedAt is a LocalDateTime pointer rather than a message UUID.

Kamo·5mo ago
Featurekamo-shared-library

Add **************** to MediaSessionMuteRepository

Kamo·5mo ago
Featurekamo-shared-library

Add MediaObjImgDownloadRepository with existsByObjImgIdAndMemberId

Required by ImagingProxyService (Task 10) to deduplicate per-member download tracking without a full table scan.

Kamo·5mo ago
Featurekamo-shared-library

Add isAccessRevoked flag for per-attachment access control

Kamo·5mo ago
April 30, 2026
Featurekamo-shared-library

Translation cache for chat messages

Adds the MediaObjMsgTranslation entity (one row per (message, language) pair) and an optional sourceLanguageId column on MediaObjMsg so chat messages can be tra...

Kamo·5mo ago
April 29, 2026
Revertkamo-shared-library

Remove @PostConstruct COMP provisioner — fix existing orders directly in DB

approveOrder() already handles new COMP orders. One-time data gap for existing orders is corrected directly in the database.

Kamo·5mo ago
Featurekamo-shared-library

Self-heal unprovisioned COMP orders on startup

On @PostConstruct, scan all APPROVED COMP orders and provision any that lack an AccountSubscription. Idempotent — find-or-create means safe to run repeatedly.

Kamo·5mo ago
Fixkamo-shared-library

Use CommerceMarket.getId() instead of getUid() in provisionCompSubscription

CommerceMarket uses @Id UUID id (not uid), so Lombok generates getId().

Kamo·5mo ago
Featurekamo-shared-library

COMP order approval auto-provisions AccountSubscription and assigns license

- SubscriptionOrder: add targetOrganization (nullable FK to orgs) - **************** add targetOrganizationId string - AccountRepository: add findByPrimaryMembe...

Kamo·5mo ago
Fixkamo-shared-library

Serialize customerMemberId as string to preserve Long precision

- AccountSummaryDTO: annotate uid with **************** and add primaryMemberId string field populated from primary_member_id - CreateSubscriptionOrderRequest: ...

Kamo·5mo ago
Featurekamo-shared-library

Add MemberUiPreference entity for per-member UI prefs

Generic per-member UI preference store (memberId, prefKey, JSONB value) for small persisted UI settings. First consumer is the hex-head popover size selector.

Kamo·5mo ago
Fixkamo-shared-library

Handle legacy ordinal strings for CountryType via AttributeConverter

DB rows had country stored as ordinal integers (e.g. "186" for UNITED_STATES) instead of enum names, causing IllegalArgumentException on findAll(). CountryTypeC...

Kamo·5mo ago
Featurekamo-shared-library

Add CDR caller-ID fields to Recording entity

Adds callerIdNum, callerIdName, callDirection, and callResult columns to the Recording entity so kamo-asterisk-support can store Asterisk CDR metadata alongside...

Kamo·5mo ago
April 28, 2026
Fixkamo-shared-library

Widen commit_log_translations.title to TEXT to match DB column

The column was VARCHAR(512) in both the annotation and the DB, causing translation inserts to fail for long translated titles. The DB column is now STRING (appl...

Kamo·5mo ago
Featurekamo-shared-library

Paginated Recording lookup by (instance, extension, isVm)

Used by the softphone tabs as the canonical source of truth for call recordings and voicemails when the upstream provider can't list them — e.g. FreePBX 17 has ...

Kamo·5mo ago
Chorekamo-shared-library

Drop stale BillingGroup-era comment + unused SubscriptionMember query

Strips the leftover doc block in AppliedModelEnforcementService that referred to the long-gone BillingGroup concept, and removes **************** after consolid...

Kamo·5mo ago
Fixkamo-shared-library

Top-level org bypass + Free baseline fallback for orgs without subs

The org-level entitlement check **************** walks subscriptions targeting an org. With the new target_org model, orgs that don't yet have a targeting Accou...

Kamo·5mo ago
Refactorkamo-shared-library

Split account-level admins from per-sub members; subs gain target_org

Adds SubscriptionMember (per-subscription licensee + sub-manager flags) so an Account on the KamoCRM org can hold multiple subscriptions, each targeting a diffe...

Kamo·5mo ago
April 27, 2026
Otherkamo-shared-library

AccountGroup -> AccountTier (customer segmentation, not billing)

The retail customer-segmentation entity (with discountPercentage, used by PriceList for tier-based pricing) collided in name with the now-removed billing-group ...

Kamo·5mo ago
Refactorkamo-shared-library

Make Account the group; replace User-set with Member-set + AccountMember

The Account is now itself the "group" — there's no separate billing-group concept. Members (org-scoped) belong to the Account directly via the new AccountMember...

Kamo·5mo ago
Refactorkamo-shared-library

Migrate from BillingGroup to Account as billing principal

Account is now the single Stripe customer principal. A Member needing to pay (e.g. for a subscription) auto-creates an Account; that Account then holds one or m...

Kamo·5mo ago
Featurekamo-shared-library

Map external customer address blocks into AccountAddress on pull

Add AdapterAddressMapper helper that converts a JSON address node from any provider into an EmbAddress and attaches it to an Account as a typed AccountAddress (...

Kamo·5mo ago
Refactorkamo-shared-library

Orient live records to Account address profile, snapshot historical addresses

Orient live commerce records to reference the Account profile's primary shipping/billing addresses, with snapshots taken only when records become historical (pl...

Kamo·5mo ago
Refactorkamo-shared-library

Switch Account.java to embeddables; add AccountAddress entity for shipping/billing lists

- Add AccountAddressType enum (SHIPPING, BILLING) - Add AccountAddress entity (account FK, type, label, EmbAddress, timestamps) - Add AccountAddressRepository -...

Kamo·5mo ago
Featurekamo-shared-library

Provider lookup keys on Recording, voicemail archive, MinIO range streaming

- Recording: add providerInstanceId + providerExternalId for joining provider call-history / voicemail rows back to imaging assets - PhoneVoicemail: add isArchi...

Kamo·5mo ago
Featurekamo-shared-library

Add lead-history audit log — entity, registry, service, DTO, LeadService hooks

- LeadHistory entity (UUID PK, plain Long FKs — no FK constraints to allow lead deletion/conversion) - LeadHistoryEventType enum with human-readable labels - Le...

Kamo·5mo ago
Featurekamo-shared-library

Add international support — Lead country/subdivision/timezone, Org language, CountryType isProvince

- CountryType: add PROVINCE_NAMES set, isProvince(), getSubdivisionLabel() - Organization: add language (LanguageType) field - Lead: add country (CountryType), ...

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