Live Change Log

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

17,865
Total Changes
4,581
Features
4,512
Fixes
32
Projects
Filter by project
All Projects17,865AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService348InitializerService299KBService74KlusterServices539MCPGatewayService43MediaService460RAGService61SecurityService1,519TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,553kamo-login318kamo-marketing584kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI522Chore670Docs226Feature4,581Fix4,512Other6,781Performance136Refactor273Revert23Style48Test68Upgrade1
August 11, 2026
FixEmailService

Stop shipping a shared credential as a config default

The platform's shared password was baked in as the fallback for DB_PASSWORD and MINIO_ROOT_PASSWORD, so it lived in this repo and in the built image as well as ...

Kamo·4w ago
August 10, 2026
FeatureEmailService

Manage an event's guest list

The dialog could show who was already on an event but never add or remove anyone; the only guest operation was re-notifying people who were somehow already ther...

Kamo·4w ago
FeatureEmailService

Let the conflicts endpoint exclude the event being edited

ConflictDetectionService has always taken an excludeEventId; this endpoint passed null. Without it an event overlaps itself, so the moment the event dialog star...

Kamo·4w ago
FeatureEmailService

Sync the organisation calendar to phones, without opening a hole

The shared calendar has no owner, so the account-scoped DAV listing could never return it: company events were plainly there on the web and invisible on every p...

Kamo·4w ago
FixEmailService

Take the caller from the session, not from the query string

GET /api/calendar/calendars took userId as a request parameter, so changing a number in the URL read anyone's calendars — and because calendars carried no organ...

Kamo·4w ago
FixEmailService

Make MKCOL create a book that can actually be stored

mkCol built a ContactBook carrying neither an organisation nor an owner and returned 201 regardless, so creating an address book from a CardDAV client failed at...

Kamo·4w ago
FixEmailService

CockroachDB-only SQL that PostgreSQL rejects

CockroachDB spells the text type STRING; PostgreSQL and YugabyteDB use TEXT. 25 casts across native queries were still emitting CAST(x AS STRING) and ::STRING, ...

Kamo·4w ago
FixEmailService

Scope address books to the member who owns them

Contacts were scoped by organisation alone. listBooks(orgId) was findByOrganizationId(orgId), and the contact list query opened WHERE c.contactBook.organization...

Kamo·4w ago
ChoreEmailService

Rebuild against shared-library @Lob LONGVARCHAR fix

Hibernate's PostgreSQL dialect read @Lob String columns as OIDs via getLong(). Affects notes, contacts, calendar, OAuth tokens, IMAP passwords, email campaign b...

Kamo·4w ago
FeatureEmailService

Point at YugabyteDB and use PostgreSQLDialect

CockroachDB has been replaced by YugabyteDB. Connection strings move from cockroachdb-public:26257 to yb-tserver-service:5433, and the Hibernate dialect from **...

Kamo·4w ago
August 9, 2026
FixEmailService

Publish row ids as strings — a new book 404'd the moment you selected it

CockroachDB unique_rowid() produces 64-bit ids. A real one from contact_books is 1200081912680906758; JavaScript's JSON.parse rounds anything past Number.MAX_SA...

Kamo·4w ago
FeatureEmailService

Persist and serve the whole contact, not just its name

The REST layer serialised the JPA entities directly. A Contact has no mapping to its emails, phones, addresses, organisations, URLs, IMs or relationships — thos...

Kamo·4w ago
FeatureEmailService

Measure each org's own KamoMail mailboxes

Walks every mailbox Kamo hosts and records, per arrival day, the RFC822 bytes it holds — headers, body and encoded attachments, across every folder including Tr...

Kamo·4w ago
FixEmailService

Record message sizes instead of writing zero

SearchIndexService wrote sizeBytes = 0 for every message it ever indexed, under the comment "Not available from envelope". It was available — the fetch profile ...

Kamo·4w ago
CIEmailService

Retry the shared-library build, which the LAN uplink keeps corrupting

Three builds died today on "Tag mismatch" pulling a jar — and the mirror added an hour ago did not help, because kbservice, mcpgatewayservice and ragservice hit...

Kamo·4w ago
CIEmailService

Mirror Maven Central through the Google GCS copy

Every Docker stage starts from a cold ~/.m2 and refetches the whole dependency tree, so Central sees the full weight of every concurrent service build. It answe...

Kamo·4w ago
August 7, 2026
FeatureEmailService

Let /sendable drop the alias group for callers that open mailboxes

The /messages mailbox switcher offers the same set as the composer's From field, minus one thing: an alias cannot be opened. Mail addressed to it lands in the m...

Kamo·1mo ago
FeatureEmailService

Preview variables for the e-signature templates

The admin template editor renders every placeholder blank for a key with no sampleVariables arm, so the seven esign templates previewed as a page of empty gaps ...

Kamo·1mo ago
FeatureEmailService

Searchable, paged endpoint for the addresses a member can send from

GET /api/email/mailboxes/sendable answers the same question as /accessible — every address the member may send as — but as one merged stream that is searched an...

Kamo·1mo ago
FeatureEmailService

Name a primary mailbox after the member who holds it

A mailbox someone holds as their primary is that person's address, so presenting it under whatever the mailbox was labelled at provisioning time — "Sales Desk" ...

Kamo·1mo ago
FeatureEmailService

Act on a whole folder, not just the page you scrolled

Mark all read and Empty folder are folder-wide operations the client cannot express by batching uids: it only ever holds the page it has scrolled, so a folder w...

Kamo·1mo ago
August 6, 2026
FixEmailService

Restore the files 2b23346 dropped, and answer an oversized send with 413

2b23346 was committed through a private index that was never seeded from HEAD, so its tree held only the three files staged into it and the commit deleted the o...

Kamo·1mo ago
FixEmailService

Stop capping every send at 1MB, so a pasted image can actually go out

Composing with a pasted image failed with a bare "Failed to send email". The composer inlines the paste into the body HTML as a base64 data URI, which rides in ...

Kamo·1mo ago
FeatureEmailService

Publish mailbox-change events so the mail views stop polling

The folder tree, conversation list and message list each ran their own 30-second timer, reloading on the chance that something had moved. The WebSocket already ...

Kamo·1mo ago
FeatureEmailService

Push INBOX unread counts over NATS/WebSocket instead of polling

The nav-top mail badge in kamo-internal refreshed itself by calling /api/email/folders every 30 seconds, per browser tab. That endpoint walks the entire folder ...

Kamo·1mo ago
August 5, 2026
FixEmailService

Stop Hibernate mangling the "::" casts in the native SQL

Hibernate's native-query parser treats "::" as an escaped colon and forwards a single ":". CockroachDB received **************** ARRAY[]:text[]), ' ') and r...

Kamo·1mo ago
FixEmailService

Keep retrying the indexer's durable NATS consumer after a deploy

A rolling deploy overlaps pods and the outgoing one still holds the durable consumer, so the incoming pod's bind to "email-metadata-indexer" fails with [SUB-900...

Kamo·1mo ago
FixEmailService

Adapt the metadata indexers to array-typed columns

Follows the kamo-shared-library change that maps conversations/search_index array columns as String[]/UUID[] rather than List<T>, which is what stopped every in...

Kamo·1mo ago
FixEmailService

Bound the bulk folder index and stop it on structural failure

Uncommitted work from a concurrent session, swept in so the tree is clean. The bulk index walked pages with totalPages set to Integer.MAX_VALUE and no ceiling,...

Kamo·1mo ago
FeatureEmailService

Resolve the people behind the addresses on a message

A message header knows an address and whatever display name the sender chose to put beside it. The organization already knows far more — colleagues, address boo...

Kamo·1mo ago
FixEmailService

Never match a lead against the company's own addresses

A lead whose e-mail was set to noreply@kamocrm.com matched every message that address had ever sent — one lead record surfaced the company's entire outbound mai...

Kamo·1mo ago
FixEmailService

Page the lead sweep until the window is covered

A single fixed page silently lost mail whenever a mailbox took more than pageSize messages between ticks — a newsletter burst, a busy shared inbox, or just the ...

Kamo·1mo ago
FeatureEmailService

Associate lead correspondence, and fix the dead push indexer

Adds the mail half of the lead Communications tab, plus the ingestion it needed to exist at all. The platform has no working mail push: IMAP IDLE is hardcoded ...

Kamo·1mo ago
FixEmailService

Address replies at Reply-To, and stop leaking SMTP exceptions to the UI

A quick reply to a KamoCRM notification failed with `{"error":"Invalid Addresses"}` rendered verbatim in the reply box. That string is Jakarta Mail's own wordin...

Kamo·1mo ago
FixEmailService

Stop classifying a multipart/related HTML root as an attachment

Every transactional email we send with an inlined org logo arrived in our own /messages viewer with a correct subject and a completely empty body. isAttachment...

Kamo·1mo ago
FeatureEmailService

Preview samples for the nine opportunity notifications

Without an arm here the admin Email Templates editor renders every placeholder blank, so anyone customising these nine would be editing an empty skeleton. One ...

Kamo·1mo ago
August 4, 2026
FeatureEmailService

Preview variables for PHI_ACCESS_ALERT

Without a sampleVariables arm the admin Email Templates preview renders every placeholder blank, so whoever is asked to approve the wording of a security alert ...

Kamo·1mo ago
August 3, 2026
FixEmailService

Scan the shared MFA repositories

MfaEnrollmentService is a @Service in kamo-shared-library, so the wildcard @ComponentScan("com.kamo") in this application constructs it whether or not this serv...

Kamo·1mo ago
FixEmailService

Merge duplicate kamo key that crashlooped EmailService

The new EmailService pod has been in CrashLoopBackOff since 16e8a05 — 22 restarts, never once started. snakeyaml raises DuplicateKeyException on a repeated top-...

Kamo·1mo ago
ChoreEmailService

Commit outstanding work in progress

Staged and committed as-is so nothing is left uncommitted in the working tree. 1 file changed, 12 insertions(+)

Kamo·1mo ago
FixEmailService

Harden the kubectl download against flaky egress [skip ci]

dl.k8s.io over the runner's egress intermittently drops mid-transfer: curl: (56) OpenSSL SSL_read: decryption failed or bad record mac which fails the deploy ...

Kamo·1mo ago
FeatureEmailService

Avatar endpoints; fix unauthenticated reachability and contact tenancy

Adds the mailbox side of sender avatars, and fixes three pre-existing holes this work would otherwise have built on top of. AUTHENTICATION. OTKPreAuthFilter us...

Kamo·1mo ago
FixEmailService

Add missing CampaignController REST endpoints for /api/email/campaigns

The bulk-email workspace/editor call GET/POST /api/email/campaigns etc., but only CampaignService (the @Service) was ever created — no @RestController exposed i...

Kamo·1mo ago
July 28, 2026
FixEmailService

Remove ambiguous unsubscribe requestMatcher that crashed startup

EmailService mounts two servlets (MVC DispatcherServlet + Spring-WS MessageDispatcherServlet at /services/*), so a bare string requestMatchers( "/api/email/unsu...

Kamo·1mo ago
July 27, 2026
FeatureEmailService

Bulk email campaign backend — provider, dispatcher, compliance, realtime

Backend for org-level bulk email campaigns, entirely separate from the everyday email provider so it can't be throttled/blocklisted alongside business mail: - ...

Kamo·1mo ago
July 23, 2026
ChoreEmailService

Rebuild to pick up **************** canonical keys

No source change. EmailService bundles kamo-shared-library at build time, so the CANONICAL_KEYS fix (shared-lib c028131) only reaches its runtime self-heal afte...

Kamo·1mo ago
July 22, 2026
FeatureEmailService

Sample variables for the LEADS_ASSIGNED template

Without a case here the admin template editor's Preview renders the new template with every placeholder blank, which reads as a broken template rather than an u...

Kamo·1mo ago
July 16, 2026
FeatureEmailService

Accept X-***-Token for mobile clients in OTKPreAuthFilter

per-tab session id as X-***-Token (matching **************** When present (and no X-OTK), resolve the session non-consumingly and set the same request attribute...

Kamo·1mo ago
July 14, 2026
FeatureEmailService

Support "unblock forever" remote-image consent

Adds a wildcard consent (allowAll / isAlwaysAllowed) so a member can opt to display external images in every message. Reuses the existing consent table via a re...

Kamo·1mo ago
FeatureEmailService

Inline-CID org logo (SVG->PNG) so it renders in Gmail; remove message content; preserve From-domain case

- FIX (security): notification emails carry no message body — remove messagePreview from template vars, ledger, samples and the settings toggle. - FIX (logo):...

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