KamoCRM

Live Change Log

Every feature, fix and improvement, posted as it ships. Nothing is held back for a launch.

17,374
Total Changes
5,891
Features
5,258
Fixes
30
Projects
Filter by project
All Projects17,374AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,822TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,321kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,631kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,891Fix5,258Other993Performance165Refactor278Revert23Style42Test159Upgrade1
October 18, 2026
FixESigService

A template above the caller's clearance cannot be read or sent, and a staff employment offer takes an HR right (SITP TP19)

The envelope door already hid an envelope whose template sits above the session's clearance and an EMPLOYMENT_OFFER envelope from a member without an HR right, ...

KamoΒ·5d ago
FixESigService

Sending for signature takes EDIT_DOCUMENTS and reading a template takes VIEW_DOCUMENTS (SITP TP02)

POST /api/esig/envelopes (create and send) checked no right, so any org session could send any template out for signature; it now takes EDIT_DOCUMENTS, the righ...

KamoΒ·5d ago
FixESigService

Stop logging the database password at startup

com.zaxxer.hikari at DEBUG makes HikariConfig print its whole configuration on every start, including dataSourceProperties {password=...} and password......; Pr...

KamoΒ·5d ago
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Β·3w ago
September 24, 2026
OtherESigService

Redis login

KamoΒ·4w 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Β·4w 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Β·4w 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Β·4w 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Β·4w 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·1mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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Β·2mo 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