Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

18,042
Total Changes
4,671
Features
4,589
Fixes
32
Projects
Filter by project
All Projects18,042AIService114APIService140BillingService133ConversionService87DaemonService109DocsService191ESigService80EmailService392InitializerService304KBService76KlusterServices550MCPGatewayService45MediaService466RAGService63SecurityService1,532TranslateService47VOIPService175VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,606kamo-login319kamo-marketing590kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,332kamo-signer-monorepo50kamolos104
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,671Fix4,589Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
April 18, 2026
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·4mo 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·4mo 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·4mo ago
Featurekamo-internal

Add EmailTemplateDuplicateDialog (part of SP2)

kamo·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo 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·4mo ago
FixEmailService

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

Align field names with frontend expectations for member mailbox listings.

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

Seed KamoCRM with ALL_WORK_ELIGIBLE on fresh installs

The createOrg() helper applies this single argument to both ageReqTypeMember and ageReqTypeTeamMember; consistent with platform convention. Pairs with KamoCRMAg...

Kamo·4mo ago
RefactorInitializerService

Tighten KamoCRMAgeReqUpdateRunner per review

- Restore Javadoc paragraph explaining @Order(10) rationale. - Test now references the UPDATE_SQL constant directly instead of duplicating the SQL string, so ...

Kamo·4mo ago
FeatureInitializerService

Add one-time runner to migrate KamoCRM agereq to ALL_WORK_ELIGIBLE

Conditional idempotent UPDATE runs on service startup; WHERE clause checks the expected old value so re-runs are no-ops. Errors are logged and swallowed — start...

Kamo·4mo ago
Fixkamo-marketing

Replace all CSS-filter logo instances with white SVG

Navigation, SubNavigation, Footer, SubFooter, and Preloader all used the same broken filter brightness-0 invert pattern. Replaced with logo-full-white.svg acros...

Kamo·4mo ago
Fixkamo-marketing

Use white SVG logo in footer instead of CSS filter

Same fix as the nav — CSS filter on img inside backdrop-filter is unreliable on iOS Safari.

Kamo·4mo ago
Fixkamo-marketing

Guard color-scheme with !important against theme CSS override

DynamicMetaLoader can inject remote CSS that wins the cascade. Adding !important ensures color-scheme: dark can never be overridden by theme stylesheets.

Kamo·4mo ago
Fixkamo-marketing

Exclude footer and nav links from TouchOptimized min-height enforcement

TouchOptimized was setting minHeight:44px on all <a> elements shorter than 44px, including footer nav links (~20px tall). This ran during hydration on hard refr...

Kamo·4mo ago
Fixkamo-marketing

Use pre-rendered white SVG logo instead of CSS filter

CSS filter on img inside backdrop-filter is unreliable on iOS Safari. Generate logo-full-white.svg with all fills set to #ffffff and load it directly — no filte...

Kamo·4mo ago
Fixkamo-marketing

Lock Tailwind dark mode variant to class-based, never OS media query

Tailwind v4 defaults dark: utilities to respond to prefers-color-scheme (OS preference). The @variant override ensures dark: classes only activate when a .dark ...

Kamo·4mo ago
Fixkamo-marketing

Use inline filter style on logo link for reliable white rendering

Tailwind filter classes on img elements are inconsistent across mobile browsers. Inline style on the anchor element guarantees brightness(0) invert(1) applies e...

Kamo·4mo ago
Fixkamo-marketing

Force dark color-scheme so browser never applies light mode rendering

Changing from 'light only' to 'dark' in globals.css, generateViewport, and the html element style — this stops the browser from rendering SVGs and native UI in ...

Kamo·4mo ago
Fixkamo-marketing

Prevent logo from rendering behind nav row on mobile

The div wrapper with CSS filter created a new stacking context that conflicted with the header's backdrop-filter on mobile browsers, causing the logo to paint b...

Kamo·4mo ago
Fixkamo-marketing

Resolve scrollbar and mobile clipping on JumpToBar and PreviewBanner

- Add overflowY: hidden to JumpToBar inner container to prevent vertical scrollbar - Allow PreviewBanner content to wrap on mobile so text isn't clipped on port...

Kamo·4mo ago
Fixkamo-marketing

Replace space-y-4 with inline flex gap on footer link lists

Tailwind space-y-4 uses :where() (specificity 0) which races with CSS loading on hard refresh causing inconsistent vertical spacing. Inline styles are embedded ...

Kamo·4mo ago
Featurekamo-meet

Add Powered by KamoCRM backlink to /welcome landing page

The actual meet.{domain} landing page is welcome/index.html — a static HTML page served directly by nginx that handles the pre-auth flow (capture display name /...

Kamo·4mo ago
Stylekamo-meet

Make PoweredByKamo match kamo-login — white on brand color

The KamoMeet welcome page already had the PoweredByKamo backlink wired up, but its styling was still the original low-opacity currentColor treatment that was vi...

Kamo·4mo ago
Chorekamo-marketing

Update locale translations and hash [skip ci]

Kamo CI·4mo ago
FixKlusterServices

Set Traefik externalTrafficPolicy=Local to preserve client IP

With the default "Cluster" policy, kube-proxy SNATs external traffic to the node IP before forwarding to Traefik. That caused Traefik to see the node IP as the ...

Kamo·4mo ago
Otherkamo-analytics

Log IP and headers for geo lookup diagnostics

Kamo·4mo ago
Fixkamo-marketing

Add missing requestIntegration i18n key across all locales

The "Submit a request" button under the "Need a custom integration?" CTA on /integrations was falling back to the raw key **************** because the key wasn'...

Kamo·4mo ago
Featurekamo-marketing

Integration logos + accurate /integrations metadata

Integration pages and hub now display vendor logos (reusing the existing **************** assets that the homepage TechStackBanner already uses). Removed stale ...

Kamo·4mo ago
Featurekamo-marketing

Expand /integrations to all homepage-listed providers

Aligns the /integrations page with the actual integrations exposed by the homepage (TechStackBanner). Adds 28 new integration pages matching what the product ac...

Kamo·4mo ago

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing