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
September 13, 2026
FixMediaService

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
FixMCPGatewayService

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
FixKBService

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
Fixkamolos

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
FixESigService

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
FixDocsService

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
FixDaemonService

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
FixConversionService

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
FixAPIService

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
FixAIService

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
FixEmailService

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

Kamo·2w ago
Fixkamo-marketing

Book the "Schedule a KamoCRM Product Demo" webinar, matched by title

The page took the first webinar type the org publishes. Types come back sorted by title, so that was "Affiliate Partner Demonstration" and every demo booking la...

Kamo·2w ago
Fixkamo-shared-library

Accept the demo page's extra fields on public schedule/join requests

MediaService reads PublicScheduleWebinarRequest with a bare ObjectMapper, where FAIL_ON_UNKNOWN_PROPERTIES is true. The demo page also sends ***Payload, so ever...

Kamo·2w ago
FeatureKlusterServices

Sign Feedback-ID in DKIM signatures

Gmail counts a campaign message toward its Feedback Loop only when the Feedback-ID header is covered by the sending domain's DKIM signature. local.d/dkim.conf k...

Kamo·2w ago
FeatureKlusterServices

Receive postmaster@/abuse@stack.loans on k3m1 for the bulk IP's checks

47.181.8.87's reverse DNS is mail.stack.loans and the router forwards its port 25 to k3m1, but nothing there accepted mail, so a provider verifying who runs the...

Kamo·2w ago
FeatureEmailService

Name the recipient in a header that headers-only complaint reports keep

Microsoft's feedback-loop reports now carry only the original message's headers, with anything shaped like an address masked. Every campaign message carries X-K...

Kamo·2w ago
Featurekamo-internal

Open and click rates, tracking choices, 10,000+ outbox counts, person-asked on leads

- Campaign card: opened and clicked, as a share of delivered mail (or "Not tracked"). - Deliverability > Campaign rules: open and click tracking, the platform's...

Kamo·2w ago
FeatureEmailService

Open and click tracking, complaint reports by email, capped outbox counts

- Tracking: the composer wraps a campaign's web links in a signed redirect (<base>/c/<token>?u=&s=) and adds an open pixel (<base>/o/<token>), as each org c...

Kamo·2w ago
FeatureSecurityService

Lead opt-out panel passes personAsked to the ledger

The lead page's opt-out update takes an optional personAsked flag and hands it to the ledger, which now refuses to lift a person's own unsubscribe, complaint or...

Kamo·2w ago
Featurekamo-shared-library

The ledger keeps a person's unsubscribe unless they asked to rejoin

An unsubscribe, a complaint or a pause is the person's own choice. A member may now lift one only when the change says the person asked to be emailed again (Opt...

Kamo·2w ago
FeatureKlusterServices

Route fbl@/abuse@hello.kamocrm.com complaint reports to EmailService

Spam-complaint feedback-loop reports (ARF, RFC 5965) and abuse reports sent to fbl@ and abuse@hello.kamocrm.com are rewritten to complaints-mail.invalid and han...

Kamo·2w ago
FeatureEmailService

One eligibility engine decides who a campaign may mail

Every list add (a member's, an audience's, a copy) and the send itself ask one engine whether an address may receive the campaign, cheapest check first: syntax,...

Kamo·2w ago
Featurekamo-internal

See who a campaign reaches, and why not everyone

- Campaign preflight card: "1,000 selected · 742 eligible · 258 skipped", with each reason (unsubscribed, bounced before, disposable, role address…) opening...

Kamo·2w ago
Featurekamo-internal

An organizations-created icon beside every member and team member

The Members and Team Members tabs on /account get a column beside Name: a filled building in the brand colour with a count for somebody who has created organiza...

Kamo·2w ago
FeatureSecurityService

The organizations each member created, on the member lists

GET **************** and /team-members-contractors now carry createdOrgs per person: the names of the organizations they own (orgs.user_id_owner, set once by PO...

Kamo·2w ago
FeatureSecurityService

An organization's and a member's own page transition

The page transition is now chosen at three levels, resolved member, then organization, then platform — for the choice of transition and, one transition at a tim...

Kamo·2w ago
Featurekamo-internal

An organization's and a member's own page transition

The page transition is now chosen at three levels. The platform's stays on Platform Administration → Transitions; an organization can choose its own on Behavior...

Kamo·2w ago
FeatureInitializerService

Page_transition_overrides, an organization's and a member's own page transition

One row per owner (ORG with the org id, MEMBER with the member id): a catalogue token or NULL to follow the level above, and properties for only the transitions...

Kamo·2w ago
Featurekamo-internal

Five more page transitions, each with its own properties

Aperture, Curtain Split, Venetian Blinds, Liquid Wipe and Shatter join Tile Dissolve. Every transition is now an effect in app/lib/transitions/effects, drawn by...

Kamo·2w ago
September 12, 2026
Featurekamo-internal

Add recipients and Send to latest on a campaign that has gone out

- A campaign's progress page has Add recipients: the recipients step in a dialog (upload, IDs, the All boxes, addresses), saved in slices as the editor save...

Kamo·2w ago
FeatureEmailService

Running campaign counts, and Send to latest

Counts: - Every status change moves a campaign's counts by exactly what it changed: a send +1 sent, a later bounce report -1 sent +1 bounced, an add +n, a r...

Kamo·2w ago
Fixkamo-shared-library

Saving a campaign never writes back its counts

The five counters are running totals now, moved only by EmailService with relative updates ("sent_count = sent_count + 1"). Mapped updatable = false, so a campa...

Kamo·2w ago
Featurekamo-internal

Tile Dissolve's tile size and tile colour, set per transition on the Transitions tab

Each transition now carries its own properties, stored per transition beside the active one, so switching transitions keeps each one's choices. Tile Dissolve ha...

Kamo·2w ago
FeatureSecurityService

Tune each page transition, tile size and colour to start

GET and PUT /api/security/page-transition answer options for every catalogue id, normalised from PAGE_TRANSITION_OPTIONS: a missing, unreadable or out-of-range ...

Kamo·2w ago
FeatureInitializerService

**************** beside the transition

A TEXT column holding each transition's properties as JSON keyed by transition id. No backfill: null means every transition's defaults, like page_transition bes...

Kamo·2w ago
Featurekamo-shared-library

Each page transition's properties, kept per transition

**************** maps PAGE_TRANSITION_OPTIONS, a JSON object keyed by transition id, e.g. **************** Keyed by transition so tuning one survives switching ...

Kamo·2w ago
Fixkamo-internal

A remounted shell no longer leaves the page cover standing on reload and sign-in

On every reload and every first document after sign-in the cover stayed up over the page, while in-app navigation revealed it fine. PresenceWrapper renders bare...

Kamo·2w ago
Fixkamo-internal

The recipient list's last page is the last page, and addresses sit level with their rows

Last reads a full page back from the end, so when a list does not divide into whole pages it overlaps the page before — and was numbered from the start, as page...

Kamo·2w ago
Featurekamo-internal

Shorten admin bar labels to Billing, Stats, Roles, Block, Log

The panel heading keeps each screen's full name via titleKey, as White Labeling and Apps already do.

kamo·2w ago
Featurekamo-internal

The page cover and its Tile Dissolve reveal, in place of the loading screen

Between pages the main view area (never NavTop or NavPri) is now covered in the organization's primary colour with its full logo centred on it, painted with the...

Kamo·2w ago
Featurekamo-internal

A Transitions tab to choose and preview the page transition

Platform Administration → Configuration → Transitions, gated by the new MANAGE_PLATFORM_TRANSITIONS platform right and registered everywhere a console tab is: t...

Kamo·2w ago
Featurekamo-internal

The campaign recipient list is paginated, with totals

The recipients grid on a campaign now pages like a list of billions should: First, Previous, Next and Last, rows per page, "101–150 of 3,916" and "Page 3 of 79"...

Kamo·2w ago
FeatureEmailService

A campaign's recipient list pages both ways, with totals, at any size

The list was already read a page at a time, but only forwards, as an endless scroll with no total — and a status filter found its rows by walking the list in ad...

Kamo·2w ago
Featurekamo-shared-library

The page transition setting, and the right that chooses it

**************** holds a catalogue token, NULL meaning the shipped default. MANAGE_PLATFORM_TRANSITIONS gates Platform Administration → Configuration → Transiti...

Kamo·2w ago
FeatureInitializerService

**************** ahead of every reader

A catalogue token, NULL meaning the shipped TILE_DISSOLVE, so nothing is backfilled. Order 0 because the entity maps the column from this build on, and an earli...

Kamo·2w ago
FeatureSecurityService

Every tab reads the page transition, and an operator chooses it

GET /api/security/page-transition answers any signed-in session, since every tab needs it to uncover a page; an unset or unknown value reads as TILE_DISSOLVE. T...

Kamo·2w ago
FixEmailService

Saving a campaign no longer fails with "Restart read required"

The bulk-provider row (hosts, send window, warm-ups, campaign audiences) was read inside callers' longer transactions. A campaign save writes the row's audience...

Kamo·2w 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