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 28, 2026
FixESigService

A signing page's logo falls back to theme.kamouniverse.com

EsignBrandingService's asset host of last resort, used for an organization with no live domain of its own, was a private "kamocrm.com" literal. It is **********...

Kamo·9h ago
September 24, 2026
OtherESigService

Redis login

Kamo·4d ago
September 23, 2026
FixESigService

Pin kamo-shared-library 1.6.1, the only version that exists

The library moved to 1.6.1 and this service still asked for 1.6.0. There is no window in which both resolve: the library is never published to a remote, so the ...

Kamo·5d ago
FixESigService

The internal envelope API fails closed and compares its secret in constant time

**************** used String.equals against X-Internal-Auth (a timing side channel on a shared secret) and, when esig.internal-auth-secret was unset, logged a w...

Kamo·5d ago
FixESigService

The staff envelope API now requires a document right, and HR envelopes need an HR one

EsignEnvelopeController's **************** checked org membership only — no document right, no clearance, nothing context-specific. Any authenticated staff memb...

Kamo·5d ago
FixESigService

Thread orgId through every template handler, EDIT_DOCUMENTS on writes

ESignTemplateService's signer/design handlers (getSigners, upsertSigners, reorderSigners, deleteSigner, saveDesign, getLatestDesign, listDesignVersions, getDesi...

Kamo·5d ago
September 16, 2026
OtherESigService

Liveness probe on /actuator/health/liveness, not the DB-aware aggregate

The aggregate /actuator/health includes the DataSource indicator, so restarting the database failed liveness on every pod at once and restarted the whole platfo...

Kamo·1w ago
OtherESigService

Release idle Hikari connections now that YSQL pooling is shared

The connection manager no longer pins sessions **************** so idle app connections no longer each hold a database backend. Keep the pool maximum, but stop ...

Kamo·1w ago
September 13, 2026
FixESigService

Accept OCI image indexes when resolving the built digest [skip ci]

The images are pushed as OCI image indexes, so asking the registry for a single image manifest only answered 404, the digest came back empty and the check faile...

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
September 11, 2026
FeatureESigService

Signature requests for the Docs manager, with new counts per member

The Docs manager gets a Signature Requests tab: every document a collection's templates sent out for signature, in three buckets by signatures (nobody, some, or...

Kamo·2w ago
FeatureESigService

Saving a template's fields is a version of the template

A template is a document with a layer of fields over it, and a version of it is both halves: its bytes and that layer. Its underlying file's saves already reach...

Kamo·2w ago
September 10, 2026
FixESigService

Signing and document-manager links only name a live domain

**************** settled for any active root domain, so an org still setting up its domain had signing links mailed to sign.<that domain>, which answered nothin...

Kamo·2w ago
September 9, 2026
FixESigService

The certificate must not claim a disclosure nobody was shown

Verified against a real completed envelope on the cluster, and the closing paragraph read "Each signer was shown, and accepted, the consumer disclosure required...

Kamo·2w ago
FixESigService

Stop asserting an eIDAS assurance tier this product does not implement

`buildSession` reported `stepUpRequired ? "AES" : "SES"`, so requiring a one-time passcode made every signing session assert an ADVANCED electronic signature — ...

Kamo·2w ago
FeatureESigService

A real Certificate of Completion, and the three copies of a signed record

What the flatten pipeline appended was one page per signature carrying seven lines: name, email, member id, timestamp, capture method, IP, user agent. No routin...

Kamo·2w ago
TestESigService

Prove submit actually writes the signature date, and ignores the wire

The unit tests around this cover the pieces — the format, the type predicate, the required-field exclusion — and none of them can see the wiring. A signature_da...

Kamo·2w ago
FixESigService

Every e-signature email was a silent 403, and a Signature Date field

**No e-sign email had been leaving the cluster.** EmailService gates /api/email/templates/send on the cluster-wide internal-auth secret (mlos-internal-auth -> I...

Kamo·2w ago
September 5, 2026
FixESigService

Prove the deploy by digest, not by tag

The preceding commit stops `set image` being a silent no-op. This asserts the outcome: after the rollout, the tag is resolved to a digest at the registry and th...

Kamo·3w ago
FixESigService

A rebuild of the same commit deployed nothing and reported success

The image is tagged with the commit SHA, so rebuilding the same commit produces an identical image reference. `kubectl set image` then changes nothing, the Depl...

Kamo·3w ago
September 4, 2026
FeatureESigService

Lock the shared sweeps, and run two pods

Every @Scheduled sweep here whose effect is shared now takes a named distributed lease through SingletonTaskRunner before it does anything, so it runs once acro...

Kamo·3w ago
FixESigService

Let a rollout finish what the old pod was doing

Deploys replaced the only pod of each service with nothing to catch the requests in flight. Three settings, applied across the fleet: - preStop sleeps 10s befo...

Kamo·3w ago
September 2, 2026
FixESigService

Redact when the document is served, not only when it is signed

The redaction was applied at flatten time, which is after signing. Everything before that — the whole signing session — was served the raw source: fetchDocument...

Kamo·3w ago
StyleESigService

An em-dash in a comment, not its escape

— is processed by javac before the file is even tokenised, so it compiled to the same character it renders as here — but the source read as the escape.

Kamo·3w ago
FeatureESigService

Put the designer's annotations into the signed document

flatten() applied blank pages, rotations, modifiers, field values, page order and certificates. It never drew the annotations. A rectangle, a highlight or an ar...

Kamo·3w ago
FixESigService

OrgBranding gained a sixth component and this stub kept passing five

Broken on main since e9faf11. The image build runs mvn package -DskipTests, so nothing has been compiling the test tree and no red build ever said so — but it m...

Kamo·3w ago
August 26, 2026
FixESigService

The signer app gets the sender's brand, not Kamo's

Two separate ways the same wrong assumption showed up. The signing page's logo URL was https://<org fqdn>/theme/logo-full.<ext>, which is not a path anything s...

Kamo·4w ago
August 25, 2026
ChoreESigService

Pin kamo-shared-library 1.6.0

The library moved to 1.6.0 while every consumer stayed on 1.5.0. Consumer CI builds the library from a fresh clone into a cold ~/.m2 and ci-settings.xml mirrors...

Kamo·4w ago
August 24, 2026
FixESigService

Stop handing an alias row over as the org's domain

**************** walked org.getDomains() filtering only on isActive. That collection holds the org's root domain AND its alias rows -- api, login, theme and the...

Kamo·1mo ago
August 16, 2026
FixESigService

Size the pod above its own JVM heap ceiling [skip ci]

The image starts the JVM with -XX:MaxRAMPercentage=70 -XX:+AlwaysPreTouch, so the heap alone may take 70% of the container limit and pre-touch keeps every commi...

Kamo·1mo ago
August 14, 2026
FixESigService

Resolve a native PDF's source bytes instead of demanding a rendition

**************** required dat.convertedDat to be non-null. ConversionService only mints a second ImgDat when it actually converts something -- a document that a...

Kamo·1mo ago
August 11, 2026
FixESigService

Declare the object-storage secret the ConfigMap no longer carries

The MinIO key was moved out of the ConfigMap into the minio-app-credentials secret, but the envFrom that supplies it was only ever applied to the live deploymen...

Kamo·1mo ago
FixESigService

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·1mo ago
August 10, 2026
ChoreESigService

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·1mo ago
FeatureESigService

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·1mo ago
August 7, 2026
CIESigService

Rebuild against the fixed shared library, behind a mirror that survives a bad byte

ESigService is CrashLooping for a reason that has nothing to do with e-signatures: it rebuilt against a shared library whose DepartmentService had grown a Mailb...

Kamo·1mo ago
FixESigService

The expiry sweep ran with no transaction

@Transactional is applied by a proxy and sweep() called expireDue() on this, so the annotation was inert. The expiry notices read the envelope's organization do...

Kamo·1mo ago
FixESigService

Close out the signing lifecycle — notices, routing, guards, expiry

Everything after a signer presses Finish was incomplete. Notices: an envelope's last signature produced a flattened PDF in MinIO that only the final signer eve...

Kamo·1mo ago
August 6, 2026
ChoreESigService

Rebuild for the unified imaging bucket

Picks up kamo-shared-library 3045cc3: ImageAssocType.getBucket() now returns the single "imaging" bucket for every association, so a deduplicated file is stored...

Kamo·1mo ago
FixESigService

Put memberId on RecipientSummary, and stop the IP check DNS-resolving

A caller that acts on a recipient's status has to be able to establish WHOSE status it is. DocsService's legal-package Finish writes a WORM attestation on the s...

Kamo·1mo ago
FeatureESigService

Staff-authenticated member signing surface at /api/esig/member/**

OTKAuthFilter bypasses only /actuator, /api/esig/public and /api/esig/internal, so this prefix is behind staff OTK auth with orgId/memberId already on the reque...

Kamo·1mo ago
RefactorESigService

Sign on (envelopeUid, recipientUid, orgId), not a SignerSession

**************** now take the triple. The public controller keeps resolving it from SIGNSESH, so the signer app is unchanged; a staff-authenticated member surfa...

Kamo·1mo ago
FixESigService

Let a send under-fill a template's signer slots, keep rejecting over-fill

The signer-count check added last round demanded an EXACT match against the template's declared slots, which would have silently stopped mortgage disclosures go...

Kamo·1mo ago
FixESigService

Complete delegated envelopes, and reject a bad signer count before sending

envelopeComplete required a literal SIGNED from every recipient, but delegate() leaves the delegator DELEGATED forever and ADDS the replacement instead of subst...

Kamo·1mo ago
FixESigService

Scope a decoder to the recipient who decoderd

Any single recipient declining set the whole envelope DEcoderD, so a counter-signer could destroy signatures the other parties had already given, with no recove...

Kamo·1mo ago
FeatureESigService

Allow a sender to suppress the per-envelope invite email

Creating an envelope unconditionally emailed an invite, so a caller batching many envelopes behind one notification had no way to stay quiet. Null preserves the...

Kamo·1mo ago
FixESigService

Enforce required fields on the server, not just in the browser

submit() validated only consent and step-up; it accepted an empty values list and still marked the recipient SIGNED. Ports validation.ts (esign-core), including...

Kamo·1mo ago
FixESigService

Bind every recipient to a template signer slot

No caller supplied signerUid, so recipients were created without one. buildSession filters a signer's fields by signerUid, so myFields came back empty, completi...

Kamo·1mo ago
FeatureESigService

Apply page operations and modifiers to the signed document

The designer has always offered page rotate, delete, reorder and add-blank, plus watermark, page-number and label modifiers, and the flatten read none of it: it...

Kamo·1mo ago
ChoreESigService

Stop tracking build output

target/ was committed here, alone among the Java services — every other one ignores it. Compiled classes and surefire reports churn on every build and can only ...

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