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 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·5mo 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·5mo ago
Featurekamo-marketing

Add /calculator and /pricing/offer to all sitemaps; i18n HTML sitemap labels

- app/sitemap.ts: add /pricing/offer and /calculator entries with locale alternates - app/api/sitemap/route.ts: add Pricing Calculator and Special Offer entries...

Kamo·5mo ago
Chorekamo-marketing

Delete translation hash to force full re-translation of expanded en.json

All page body content has been extracted to en.json (4 parallel agents added ~500+ new keys across features, home, about, security, privacy, terms, gdpr, cookie...

Kamo·5mo ago
Chorekamo-marketing

Update locale translations and hash [skip ci]

Kamo CI·5mo ago
Featurekamo-marketing

Wire locale through dynamic fetches and add hash-based translation skip

- Forward locale param to SecurityService changelog API (page + route + client) - Forward locale param to KBService article/tree fetches (section + slug pages) ...

Kamo·5mo ago
Featurekamo-marketing

Wire useTranslations into all client components

Replaces all hardcoded strings in every (pages)/*Client.tsx with t("key") calls using next-intl useTranslations. Covers 25 files: security, contact, demo, prici...

Kamo·5mo ago
Featurekamo-marketing

Expand messages/en.json with full page body copy coverage

Grew the translation catalogue from 172 keys (~12 namespaces) to 300+ keys across 26 namespaces, extracting every user-visible hardcoded English string from all...

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

Add tooltips and fix scroll behaviour on language selector

- Add englishName to LOCALE_CONFIG for all 22 locales - Add title={englishName} to each language button (desktop + mobile) so hovering shows the English name ...

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

Upgrade Dockerfile to node:24-alpine

ships npm 10 which can't read the lock file and fails npm ci with a missing @swc/helpers@0.5.21 error.

Kamo·5mo ago
CIkamo-marketing

Bump Node.js to 24 to match local dev environment

npm ci under Node 22 / npm 10 fails because the two versions resolve transitive deps (e.g. @swc/helpers) to different versions.

Kamo·5mo ago
CIkamo-marketing

Add concurrency group to prevent duplicate workflow runs

When a push triggers a workflow and workflow_dispatch is also fired (or two pushes arrive in quick succession), both runs would execute simultaneously. Adding a...

Kamo·5mo ago
Chorekamo-marketing

Commit package-lock.json with next-intl and tsx dependencies

next-intl and tsx were installed but package-lock.json was not committed alongside the i18n implementation, causing Docker builds to fail with Cannot find modul...

Kamo·5mo ago
Featurekamo-marketing

Replace offer badge with language selector in nav

Add a 2-column flag+name dropdown to the header navigation allowing users to switch between all 22 supported locales. Locale switching uses next-intl router.rep...

Kamo·5mo 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·5mo 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·5mo 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·5mo 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·5mo 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·5mo 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·5mo 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·5mo ago
April 15, 2026
April 13, 2026
Fixkamo-marketing

Use 24-hour window instead of UTC date for today's changelog count

The server runs in UTC, so at night in US timezones toISOString() returns tomorrow's date and no commits match. Using a 24h rolling window instead.

Kamo·5mo ago
Fixkamo-marketing

Force-dynamic on changelog API routes to prevent stale date caching

Next.js was statically caching these GET route handlers at build time, freezing new Date() to the build date so today's changelog count never updated.

Kamo·5mo ago
April 12, 2026
Fixkamo-marketing

Handle applicablePlanIds and applicableBillingCycles as string arrays

These fields are typed as string[] but had .split(",") calls on them, causing TypeScript build failures.

Kamo·5mo ago
Fixkamo-marketing

Redact *** references in changelog display

Kamo·5mo ago
April 11, 2026
Fixkamo-marketing

Update fallback offer end date to 2026-04-26

Kamo·5mo ago
Fixkamo-marketing

Add static fallback for offer page when subscription API unavailable

The **************** table doesn't exist in production yet, so the API returns an error. Fall back to hardcoded promotion and plan data so the offer page works ...

Kamo·5mo ago
Fixkamo-marketing

Update ApiPromotion type to match new List<String> backend response

applicablePlanIds and applicableBillingCycles are now arrays, not JSON strings.

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