KamoCRM

Live Change Log

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

18,871
Total Changes
6,814
Features
5,696
Fixes
30
Projects
Filter by project
All Projects18,871AIService287APIService179BillingService166ConversionService121DaemonService152DocsService275ESigService103EmailService651InitializerService350KBService163KlusterServices778MCPGatewayService280MediaService629RAGService79SecurityService2,060TranslateService62VOIPService266VectorService11kamo-apps29kamo-asterisk-support29kamo-capcha17kamo-capcha-widget4kamo-internal8,878kamo-login346kamo-marketing642kamo-nowww20kamo-register216kamo-shared-library1,890kamo-signer-monorepo73kamolos115
Filter by type
All TypesBuild23CI528Chore798Docs3,294Feature6,814Fix5,696Other1,007Performance175Refactor286Revert23Style45Test181Upgrade1
April 17, 2026
FixInitializerService

Update kamo-shared-library version from 1.0.0 to 1.1.0

Needed to resolve the new billing entities in the commerce.billing package added to shared library 1.1.0.

Kamo·7mo ago
FixBillingService

Update kamo-shared-library version from 1.0.0 to 1.1.0

The shared library is published as 1.1.0, not 1.0.0. This was causing the Docker build to fail with "artifact not found" since Maven could not resolve the depen...

Kamo·7mo ago
FixBillingService

Add -U flag to maven build steps to resolve shared library from local repo

The dependency:go-offline step was trying Maven Central first, getting a cached failure for kamo-shared-library (which is local-only), and that poisoned the sub...

Kamo·7mo ago
April 16, 2026
Fixkamo-marketing

Reduce translation chunk size to 50 keys with exponential backoff

150 keys still too large for some providers (long paragraph values in privacy/terms/GDPR). Now: 50 keys per chunk, 4 retries with exponential backoff (2s→4s→8s→...

Kamo·7mo ago
Fixkamo-marketing

Chunk translation requests to prevent fetch timeouts on large payloads

With 1500+ keys, the single batch request payload was causing connection timeouts for some translation providers. Now splits into chunks of 150 keys with 3 retr...

Kamo·7mo ago
FixSecurityService

Inject translate-service-secrets into pod env

Kamo·7mo ago
FixSecurityService

Add translate service config to K8s configmap

Kamo·7mo ago
Fixkamo-marketing

Resolve DYNAMIC_SERVER_USAGE 500 errors and missing calculator route

- Add force-dynamic to [locale]/layout.tsx (getMessages() uses headers() internally) - Remove generateStaticParams from [kbSection]/page.tsx (KB content is dyna...

Kamo·7mo ago
FixKlusterServices

Remove --load-only restriction from LibreTranslate

All needed language packages are pre-installed on the hostPath volume. --load-only was preventing some packages from loading. Without the flag, LibreTranslate l...

Kamo·7mo ago
FixKlusterServices

Use startupProbe for LibreTranslate to handle long model downloads

startupProbe with 60 attempts x 30s = 30min startup window for initial model downloads. After startup completes, normal liveness and readiness probes take over ...

Kamo·7mo ago
FixKlusterServices

Restrict LibreTranslate to only load supported language models

Use --load-only with the 22 supported language codes instead of downloading all available models (~hundreds of GB). Removes --update-models flag which would dow...

Kamo·7mo ago
FixKlusterServices

Remove invalid --load-awesome-ai-models flag from LibreTranslate

Flag does not exist in current libretranslate image. Replace with --update-models to ensure language packs are downloaded on startup.

Kamo·7mo ago
FixKlusterServices

Add LibreTranslate permission init container, scale Bergamot to 0

LibreTranslate was crashing with PermissionError on packages subdir. Added busybox init container to mkdir + chmod 777 the mounted hostPath before the main cont...

Kamo·7mo ago
FixTranslateService

Fall through to LibreTranslate when Bergamot is unavailable

ProviderRouter now catches exceptions per provider and tries the next. BergamotProvider throws on failure instead of silently returning original text, so LibreT...

Kamo·7mo ago
Fixkamo-marketing

Widen language selector dropdown to prevent horizontal scrollbar

260px was too narrow for entries like 'Bahasa Indonesia'. Increase to 310px and add overflow-x: hidden to eliminate the scrollbar entirely.

Kamo·7mo ago
Fixkamo-marketing

Port-forward TranslateService to reach it from CI runner

The Forgejo runner runs on k0m1 which cannot resolve .svc.cluster.local DNS. Use kubectl port-forward to tunnel kamowstranslate-service:80 to localhost:18080 du...

Kamo·7mo ago
Fixkamo-marketing

Remove pre-i18n app/(pages)/ and app/page.tsx

These were accidentally restored by git checkout -- app/ during a previous vendor fix. Both old and new route structures existing caused Next.js to try generati...

Kamo·7mo ago
FixTranslateService

Exclude ****************

Excluding SecurityAutoConfiguration leaves Actuator's **************** without an HttpSecurity bean, crashing startup. Exclude it explicitly.

Kamo·7mo ago
FixTranslateService

Add autoconfigure exclusions to k8s configmap

application.yml is for local only — k8s uses the configmap. Move the Spring autoconfiguration exclusions for JPA, Redis, Security, and OAuth2 into k8s/configmap...

Kamo·7mo ago
FixTranslateService

Exclude all transitive Spring autoconfiguration from shared library

kamo-shared-library pulls in JPA, Redis, Security, and OAuth2 starters which cause Spring Boot to attempt autoconfiguring DataSource, Hibernate, Redis/Lettuce, ...

Kamo·7mo ago
FixTranslateService

Exclude DataSource autoconfiguration

kamo-shared-library transitively pulls in JPA which causes Spring Boot to attempt DataSource autoconfiguration. TranslateService is stateless with no database, ...

Kamo·7mo ago
Fixkamo-shared-library

Replace removed DocumentNotFoundException with ImagingException in ImageService

DocumentNotFoundException was deleted as part of the Document entity removal but ImageService still referenced it in 9 places. Replaced with the existing Imagin...

Kamo·7mo ago
FixDocsService

Gracefully cancel superseded reconversion jobs on rapid saves

When a document is saved multiple times quickly, each save registers its ImgDat UUID in a ConcurrentHashMap. The async reconversion task checks this at 6 checkp...

Kamo·7mo 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·7mo 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·7mo 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·7mo 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·7mo ago
FixInitializerService

Use 18DOFF promo code with April 30 2026 expiry

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