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
August 6, 2026
FixDocsService

Resolve the document bucket from ImageAssocType.BUCKET

DocumentService hardcoded "imaging-mydocs" while every other read path went through ImageAssocType.getBucket(). Now that storage is one bucket, point it at the ...

Kamo·1mo ago
FixDocsService

Wire DocsService to ESigService so Deliver stops 503ing

LegalEsignClient.isConfigured() was false in the cluster: neither internal.auth.secret nor legal.esig.service-url was supplied, so Deliver refused every package...

Kamo·1mo ago
FixDocsService

Prove WHOSE signature Finish counts, and report the live one

verify() compared the caller to assignment.teamMemberId but never to the ENVELOPE RECIPIENT's member — it trusted the recipientUid the delivery fan-out wrote. A...

Kamo·1mo ago
FeatureDocsService

Mount the member surface at /api/docs/legal/member/**

A separate controller with a separate funnel, because authorization here is identity and not an HR right. Routing these through guarded() would mean either lock...

Kamo·1mo ago
FeatureDocsService

Package attestation on finish, and the EXECUTED/AWAITING_OTHERS split

Writes the WORM LegalPackageAttestation: attestationTextSha256 from the FROZEN version (the package's draft wording is mutable and may already have been reworde...

Kamo·1mo ago
FeatureDocsService

Identity-authorized member read surface for assignments

LegalAssignmentOwnership is a SEPARATE guard from LegalPackageAccess on purpose: a member executing their own agreement holds no HR right, and widening the HR r...

Kamo·1mo ago
FeatureDocsService

Manifest canonical form and a spoof-resistant client IP

manifestSha256 hashes the ordered [{documentUid, contentSha256, orderIndex}] the member was actually shown, length-prefixed so a crafted uid cannot imitate a fi...

Kamo·1mo ago
FixDocsService

Commit before the fan-out, and stop redeliver reissuing nothing

Redeliver published the new version row, flipped every OPEN assignment to SUPERSEDED, and submitted the reissue from inside that same uncommitted transaction. T...

Kamo·1mo ago
FeatureDocsService

Org-scoped, paged, filterable legal package assignment listing

Built on the EntityManager rather than a shared-lib repository method: the filter set is dynamic and adding it to kamo-shared-library would force a shared-artif...

Kamo·1mo ago
FeatureDocsService

Void legal package assignments, org-wide or for named members

Per-assignment outcomes — voided, skipped-executed, not-found — because an admin voiding a package for six named people needs to know which had already executed...

Kamo·1mo ago
FeatureDocsService

Redeliver a changed package, superseding the open assignments

Refused unless the live fingerprint differs from the published one. Binder.dateUpdated is dead and Img has no revision counter, so that fingerprint is the only ...

Kamo·1mo ago
FeatureDocsService

Deliver a legal package to its audience, off the request thread

Plan on the request thread (two cheap queries, so the response is exact about who is included and who was skipped and why), write off it: 200 members x 8 docume...

Kamo·1mo ago
FeatureDocsService

Delivery planner — incremental targeting, email pre-filter, due dates

Deliver is the new-hire path and is meant to be re-run, so members who already hold an assignment are subtracted rather than given a second copy of the same ins...

Kamo·1mo ago
FeatureDocsService

ESigService internal client for legal package delivery

DocsService's first outbound service-to-service client. Posts to **************** (origin MANUAL, never metered) with suppressInvite=true — HR sends one notific...

Kamo·1mo ago
FixDocsService

Widen the read gate to match hrTabs.ts, make a cleared due date actually clear

LegalPackageAccess.requireRead demanded VIEW_EMPLOYEES alone while hrTabs.ts admits the Legal & Compliance tab on VIEW_EMPLOYEES || EDIT_EMPLOYEES || MANAGE_HRS...

Kamo·1mo ago
FixDocsService

Enforce HR rights and make the fingerprint see the e-sign design

All seven /api/docs/legal mappings authorized on org membership alone, so any authenticated member could list, edit, delete and publish legal packages — and aud...

Kamo·1mo ago
FeatureDocsService

Audience resolution preview

Resolves a saved or draft audience through TeamMemberRepo.findAudience, which is the only reader carrying the mandatory ACTIVE + recordState eligibility predica...

Kamo·1mo ago
FeatureDocsService

Publish freezes a version with byte-pinned documents

Pins img_dat_id plus a content hash, not img_id: saveImgContent repoints the same Img at new bytes on every Docs save, and resolveSource walks to the dat live a...

Kamo·1mo ago
FeatureDocsService

Legal package CRUD at /api/docs/legal/packages

List, create, get, update and delete, with ordered binder refs and audience rows replaced as a set. Org comes from the session on every path — DocsService is pe...

Kamo·1mo ago
FeatureDocsService

Legal package wire contract and request normalization

Ids cross as strings (unique_rowid exceeds MAX_SAFE_INTEGER). Binder order is the list order, de-duplicated, and a non-numeric entry 400s rather than being skip...

Kamo·1mo ago
FeatureDocsService

Content fingerprint for legal packages

Binder.dateUpdated never moves after INSERT, so a package's content has no change signal to compare. Adds a SHA-256 over the canonical ordered binder/item tuple...

Kamo·1mo ago
FixDocsService

Enforce document/binder collection scope in addItem

BinderService.addItem checked read access and refused VAULT/LOAN documents, but never compared the document's own collection to the binder's, so a hand-crafted ...

Kamo·1mo ago
FeatureDocsService

List and create binders within one collection

Scopes the visible-binder query to the DocManager's (assocType, assocObjectId), stamps the scope on create, inherits it on duplicate, and bumps last_modified fr...

Kamo·1mo ago
August 5, 2026
FixDocsService

Mirror Maven Central and retry, so a corrupt transfer stops killing the build

The HR_RESOURCE rebuild failed on hibernate-core:6.5.3.Final with 'Tag mismatch' — a transfer corrupted in flight, not a missing artifact. The shared-lib stage ...

Kamo·1mo ago
ChoreDocsService

Rebuild for ImageAssocType.HR_RESOURCE

**************** resolve the assoc type with values()[ordinal]; without this rebuild values()[13] throws on the stale 13-constant array as soon as the HR Resour...

Kamo·1mo ago
August 3, 2026
FeatureDocsService

Persist this service's PHI audit trail to the database

DocsService serves document bytes, so its trail is what an accounting of disclosures under §164.528 is actually assembled from. It was writing to a 14-day log s...

Kamo·1mo ago
FeatureDocsService

Audit WOPI content endpoints and close the last byte-serving gaps

WOPI serves whole documents to Docs and recorded nothing. GET /wopi/files/{id}/contents is the same disclosure as /download, relayed the same way through APISer...

Kamo·1mo ago
FixDocsService

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
FeatureDocsService

Record byte access on the four document paths that recorded nothing

/download already logged through **************** and it was the platform's only byte-access injection site. The sibling endpoints serving the exact same bytes ...

Kamo·1mo ago
August 2, 2026
FixDocsService

Require a session on POST ****************

The handler took an HttpServletRequest but never used it, carrying the comment "No auth required — internal admin maintenance endpoint". APIService relays /api/...

Kamo·1mo ago
July 22, 2026
FixDocsService

Stop pinning the expired wildcard-kamocrm-com secret

wildcard-kamocrm-com was a legacy multi-SAN secret that cert-manager orphaned when its Certificate was repointed at a per-host secret. Nothing renewed it and it...

Kamo·2mo ago
July 9, 2026
FixDocsService

Folder create/rename 500 on root folders (Map.of null value)

createFolder/renameFolder built the response with Map.of(..."parentId", parentId), which throws NullPointerException when parentId is null (a root folder) — the...

Kamo·2mo ago
July 8, 2026
FixDocsService

Bounds-check assoc-type ordinal lookups (fixes Materials list 500)

DocsService was running a shared-lib built before ImageAssocType.MATERIALS (ordinal 11) was added, so listDocuments' ImageAssocType.values()[11] threw ArrayInde...

Kamo·2mo ago
July 7, 2026
FixDocsService

Serve e-sign editor PDF for any converted doc, incl native PDFs

The e-sign editor (DocumentEditor → PdfCanvas / PageThumbnailSidebar) opens any converted document, not only files uploaded through the sig-template flow. It fe...

Kamo·2mo ago
July 6, 2026
FixDocsService

Generic byte endpoints refuse MLOS per-party docs (vault/loan)

The generic imaging byte endpoints (download / stream / bulk-download / thumbnail) and the binder aggregation authorized only on org + a numeric clearance ceili...

Kamo·2mo ago
FixDocsService

Don't serve soft-deleted documents on /stream and /bulk-download

getDocumentMetadata (used by the stream + bulk-download byte paths) does not filter trashed rows the way downloadDocument does, and a soft delete leaves the Min...

Kamo·2mo ago
July 1, 2026
FixDocsService

URI-encode WOPISrc + trust all api.* WOPI hosts (multi-tenant)

Opening a doc for a non-kamocrm tenant failed with 'unauthorized WOPI host'. Docs's alias_groups only trusted api.kamocrm.com (the Docs-deployment env hardcoded...

Sage·3mo ago
ChoreDocsService

Rebuild against latest kamo-shared-library

Sage·3mo ago
June 30, 2026
FixDocsService

Node-local MinIO + failover template read + ImgDat dedup (fixes new-doc about:blank)

New-document creation hung ~5 min and the new tab stayed at about:blank. Root cause: DocsService pods scheduled on k3m1 read the blank template from MinIO at th...

Sage·3mo ago
June 25, 2026
FixDocsService

Point Docs deployment at k1m1 registry

The Docs-online image host was the bogus **************** (Redis DNS, never a registry), so every DocsService deploy re-applied an unpullable image. Point it at...

Kamo·3mo ago
June 13, 2026
May 21, 2026
FeatureDocsService

Add POST ****************

Deep-copies a binder the requester can see (owned, shared, or template) into a fresh binder owned by the requester. Copies every item (DOC, SEPARATOR, GENERATED...

Kamo·4mo ago
FixDocsService

Include com.kamo.z.shared.binder in @EnableJpaRepositories

DocsService boots with an explicit basePackages list, not classpath scanning, so BinderRepository wasn't being discovered — startup failed with "No qualifying b...

Kamo·4mo ago
FeatureDocsService

Add Organizer backend — CRUD, render, generated docs

New REST surface under /api/docs/binders for the Organizer feature: - BinderController: CRUD, item add/update/remove/reorder, share, render - BinderService: org...

Kamo·4mo ago
May 16, 2026
May 1, 2026
April 29, 2026
CIDocsService

Scope concurrency to build jobs, not Kubernetes deploys

Workflow-level concurrency serialized the whole pipeline (including kubectl rollouts). Move the group to the build job only so deploy jobs from different runs c...

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