Live Change Log

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

17,859
Total Changes
4,576
Features
4,511
Fixes
32
Projects
Filter by project
All Projects17,859AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService347InitializerService299KBService74KlusterServices539MCPGatewayService43MediaService460RAGService61SecurityService1,519TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,550kamo-login318kamo-marketing582kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI522Chore670Docs226Feature4,576Fix4,511Other6,781Performance136Refactor273Revert23Style48Test68Upgrade1
September 11, 2026
FeatureBillingService

Active and Void tabs in the platform org directory

The console's Organizations tab now splits into Active and Void sub-tabs. A voided organization is orgs.is_active = FALSE (set by SecurityService's void endpoin...

KamoΒ·1h ago
September 6, 2026
FeatureBillingService

A plan's startup fee, and the live offer, on the wire

PlanDto carried only the recurring rate, so every surface quoting a plan quoted a price the customer would not be charged: KamoCRM's startup fee is $99 a seat, ...

KamoΒ·5d ago
FeatureBillingService

One endpoint behind the customer's own plan page

GET /api/billing/self/plan answers everything /myplan renders: the plan, what the organization can actually use, the catalogue to compare against, seats and the...

KamoΒ·5d ago
September 5, 2026
FeatureBillingService

Bill the startup fee on both routes to a plan, and record negotiated terms

Two routes reach the same plan and only one of them was going to charge the new per-seat startup fee. A sales-written order bills through SubscriptionService, w...

KamoΒ·6d ago
September 4, 2026
FeatureBillingService

Lock every money-moving sweep, and run two pods

BillingService ran one pod and its seven scheduled sweeps were correct only because of it. There is no ShedLock anywhere on this platform, so a second replica w...

KamoΒ·6d ago
August 31, 2026
FeatureBillingService

Serve the running offer, and say whether a seat is actually PAID for

Adds GET /markets/{id}/promotion. There was no way for an in-app buying surface to know an offer was running at all β€” the marketing site read promotions through...

KamoΒ·1w ago
FeatureBillingService

Bill the three-year term, and quote its rate to the console

BillingCycles gains TRIENNIAL, expressed to Stripe as three YEARs rather than thirty-six MONTHs so the renewal tracks the signup anniversary β€” the same reason A...

KamoΒ·1w ago
August 27, 2026
FeatureBillingService

Per-server lines on the extensions summary

The phone server's extensions tab showed the organization-wide figure and nothing else, so an empty KamoPBX server displayed "21 billable extensions β€” $63.00 / ...

KamoΒ·2w ago
FeatureBillingService

Refuse a self-serve Enterprise subscription

Enterprise is negotiated. Hiding the price is presentation; this is the boundary. A request naming the Enterprise plan is refused unless the caller holds ******...

KamoΒ·2w ago
FeatureBillingService

Bill phone service by the extension

PricingModel.PER_EXTENSION, its own reserved quantity key, an allocator, a nightly reconciler, a removal gate and the summary API - the phone twin of the per-ma...

KamoΒ·2w ago
August 26, 2026
FeatureBillingService

Expose mailbox counts, entitlement and cost mode

KamoΒ·2w ago
FeatureBillingService

Bill e-mail per mailbox, reconciled nightly

Quantity is server-computed under a reserved key a request body cannot reach, and pushed through the existing amend path β€” so Stripe's CREATE_PRORATIONS charges...

KamoΒ·2w ago
August 25, 2026
FeatureBillingService

Make a replayed Stripe event a no-op

Adds BillingWebhookEventClaimService on its own bean, with REQUIRES_NEW on every method, and wires it into processEvent ahead of the dispatch switch. A losing c...

KamoΒ·2w ago
August 20, 2026
FeatureBillingService

Publish the paid conversion for tracked organizations

Both paths that stamp BillingSourceType.PAID now publish marketing.visitor.paid, because hooking only one silently misses half the traffic β€” AccountSubscription...

KamoΒ·3w ago
August 15, 2026
FeatureBillingService

Decide platform access with the shared resolver

@PlatformAdminOnly now names the platform right it requires (defaulting to MANAGE_ORGANIZATIONS, which is what this service's platform surface is about) and the...

KamoΒ·3w ago
August 12, 2026
FeatureBillingService

Carry the renewal date on the coverage and group payloads

Both surfaces now report currentPeriodEnd and cancelAtPeriodEnd. The date is what a cancel confirmation actually needs to say β€” "you keep your seat until the en...

KamoΒ·4w ago
FeatureBillingService

One plan per organization, a 25-seat Enterprise ceiling, and a way to stop paying

The plan is now an organization-level decision and nothing else can override it. Letting a self-payer or a group manager pick their own reads like a kindness an...

KamoΒ·4w ago
August 11, 2026
FeatureBillingService

Let a group's plan be cancelled, and stop double-paying for one person

Three gaps in what shipped last: A group with a plan could never be removed. delete() refuses while a live subscription exists β€” correct, since the group row i...

KamoΒ·4w ago
FeatureBillingService

Make billing groups work end to end, and stop self-pay charging for nothing

A group can now gather people, buy a plan on its manager's own card, and hand its seats out. None of that existed: the only operations were create, approve and ...

KamoΒ·4w ago
FeatureBillingService

Tell people their payment failed, and stand the subscription down

The dunning that did not exist. invoice.payment_failed wrote a row and returned: no email, no flag, no state change, and billing.email-service-url was configure...

KamoΒ·4w ago
FeatureBillingService

Let a member buy their own seat, and close a body-parameter hole

Self-pay had no route inside the console. Everything on the billing surface is account-shaped β€” you must already hold an AccountMember row before Plans & Billin...

KamoΒ·4w ago
FeatureBillingService

Org policy and billing group APIs

Who inside an organization may pay Kamo is now answerable and settable. Both routes are org-scoped and therefore deliberately outside /api/billing/accounts/** a...

KamoΒ·4w ago
FeatureBillingService

Default a new subscription's target org to the caller's

A first purchase has no existing subscription to copy targetOrganizationId from, and requiring it unconditionally is what made creating one from the console imp...

KamoΒ·4w ago
FeatureBillingService

Buy a block when an opted-in org runs out of room

Runs shortly after the nightly snapshot sweep, because that is what produces the usage figure it decides on β€” expanding against yesterday's number would buy a b...

KamoΒ·4w ago
FeatureBillingService

Let a catalog price change actually reach Stripe

Stripe Prices are immutable and the mapping holds one row per (org, type, code, cycle) behind a unique key, so once a price existed it could never change. A pri...

KamoΒ·4w ago
FeatureBillingService

Report capacity alongside usage

The storage panel reported bytes stored against nothing at all β€” no allowance, no percentage, no money β€” so an owner looking at 400 GB had no way to tell whethe...

KamoΒ·4w ago
FeatureBillingService

Make a first plan purchasable, and return real plan prices

Two things stopped an organization ever buying a first subscription. Plan lists were reachable only through sub.marketId on a subscription the org already held...

KamoΒ·4w ago
FeatureBillingService

Bill per-unit add-ons by units bought, not by headcount

Threads the new add-on quantity through create and update: a FLAT add-on now takes its Stripe quantity from what the subscription actually bought, so four 10 GB...

KamoΒ·4w ago
August 10, 2026
FeatureBillingService

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
FeatureBillingService

Read imaging usage from one deduplicated pass

Follows the shared-library change to one charge per distinct file per organization. Both the summary and the daily snapshot writer take a single imaging pass an...

KamoΒ·4w ago
FeatureBillingService

Let a platform admin run the snapshot sweep on demand

The sweep is what makes period removals and lifetime totals for the hard-deleting domains answerable at all, so days lost to an outage are lost permanently unle...

KamoΒ·4w ago
FeatureBillingService

Report what an organization is storing

The account stats tab has always said "No usage data available for this period", for every organization, because getCurrentUsage() in kamo-internal is a stub re...

KamoΒ·4w ago
August 8, 2026
FeatureBillingService

Serve the org directory as a filtered, sorted, paginated page

GET /orgs takes page/size/q/sort/dir plus seven filters and returns the house page envelope with estate-wide aggregates. GET /orgs/{orgId} serves full detail fo...

KamoΒ·4w ago
FeatureBillingService

Batched page hydration at a constant query count

Parent titles, primary domain, the plan/market behind the entitlement and the subscription-catalog flag are each one batched IN (:ids) over the whole page, so a...

KamoΒ·4w ago
FeatureBillingService

Directory row/page DTOs and the native query repository

PlatformOrgRow carries the two facets separately: entitlement (inbound subs targeting the org -- what governs it) and billing held (accounts the org owns -- non...

KamoΒ·4w ago
FeatureBillingService

Org directory SQL with per-facet CTEs

Held accounts, inbound subscriptions, members, licensees and children each aggregate in their own CTE before being joined to orgs. Joining them in one pass woul...

KamoΒ·4w ago
FeatureBillingService

Validated, clamped org directory request

Size clamps to [1,100] and an unrecognised sort falls back to title, so a hand-edited URL can neither request the whole estate nor reach the SQL as free text. T...

KamoΒ·4w ago
FeatureBillingService

Derive entitlement mode through one shared, deterministic resolver

TrialAdminService picked its trial subscription with findFirst() over an unordered list, so an org holding both a pending and an active trial could report eithe...

KamoΒ·4w ago
July 1, 2026
FeatureBillingService

TRIAL_PENDING mode for a not-yet-started trial

SageΒ·2mo ago
June 10, 2026
FeatureBillingService

E-sign usage metering + consumer self-serve checkout

#4 metering: - EsignMeterSubmissionService (@Scheduled daily): aggregates API-origin EsignUsageRecords per org+period; first 40/period included, the rest subm...

KamoΒ·3mo ago
FeatureBillingService

Manage Organization.isPlatformProduct from Platform β†’ Orgs

PlatformAccountSummary exposes isPlatformProduct + hasSubscriptionMarket; new PUT **************** (platform-admin gated) sets the flag and invalidates the org'...

KamoΒ·3mo ago
April 23, 2026
FeatureBillingService

Rewrite BillingService around BillingGroups

Deletes the org-level **************** controllers, services, and DTOs. Introduces: - BillingGroupController mounting groups, members, subscriptions, licenses,...

KamoΒ·4mo ago
April 20, 2026
FeatureBillingService

Add PlatformAdmin controller + service for comp plan grants

- PlatformAdminController at /api/billing/platform (class-level @PlatformAdminOnly) - GET /orgs, GET /orgs/{orgId} - POST /orgs/{orgId}/grants, PATCH|DELET...

KamoΒ·4mo ago
April 19, 2026
FeatureBillingService

Enforce team-member pay-fees setting at Stripe customer creation

Bumps kamo-shared-library dependency to 1.5.0 so BillingService can resolve the new AppliedModelEnforcementService, and wires team-member vs org pay-fees enforc...

KamoΒ·4mo ago
April 17, 2026
FeatureBillingService

Initial BillingService β€” Stripe-integrated billing for KamoCRM

Complete Spring Boot service for managing KamoCRM billing via Stripe: - Stripe Customer, Subscription, PaymentMethod, Invoice lifecycle management - Credit sys...

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