KamoCRM

Live Change Log

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

17,645
Total Changes
6,069
Features
5,336
Fixes
30
Projects
Filter by project
All Projects17,645AIService260APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService583InitializerService329KBService151KlusterServices744MCPGatewayService261MediaService604RAGService79SecurityService1,872TranslateService62VOIPService250VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,409kamo-login340kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,678kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore775Docs3,257Feature6,069Fix5,336Other998Performance165Refactor278Revert23Style42Test162Upgrade1
April 15, 2026
FixDocsService

Remove auth requirement from backfill-thumbnails endpoint

This is an internal admin maintenance endpoint that needs to be callable from within the cluster without user authentication.

Kamo·6mo ago
Fixkamo-internal

Accettare tutti i tipi di file per caricare, utilizzare server-side blacklist invece di whitelist

Sostituire la whitelist ACCEPTED EXTENSIONs con server-provided extBlackList da assoc-config. Tutti i tipi di file sono ora caricabili a meno che non sia esplic...

kamo·6mo ago
FixDocsService

Use RandomAccessReadBuffer instead of ByteArrayInputStream for PDFBox 3.x

**************** was removed in PDFBox 3.0 — use RandomAccessReadBuffer(byte[]) which implements RandomAccessRead.

Kamo·6mo ago
FixDocsService

Add esign repos to JPA repository scan so ESignTemplateRepository bean is found

DocsService was crashing on startup because ESignTemplateRepository lives in com.kamo.z.shared.esign.repos which wasn't included in the @EnableJpaRepositories s...

Kamo·6mo ago
April 13, 2026
Fixkamo-marketing

Utilizzare la finestra 24 ore al posto della data UTC per il conteggio dei changelog di oggi

Il server viene eseguito in UTC, quindi di notte in fusi orari degli Stati Uniti perISOString() restituisce la data di domani e nessuna corrispondenza di commit...

Kamo·6mo ago
Fixkamo-marketing

Forza-dinamica sulle rotte API di changelog per prevenire il caching della data stala

Next.js era staticamente caching questi gestori di rotta GET al momento della costruzione, congelamento nuovo Data() alla data di costruzione in modo da conta c...

Kamo·6mo ago
Fixkamo-internal

Utilizzare systemDocsOnly flag per System Docs scheda, mostrare tutti i docs in Original Docs

Docs originale scheda ora mostra tutti i docs per questo org/assocType senza filtraggio da assocObjectId. Scheda di System Docs invia systemDocsOnly: true otten...

kamo·6mo ago
FixDocsService

Use **************** for hasDesignVersion, add systemDocsOnly filter

hasDesignVersion now checks if an esign template exists with current_design_version > 0, instead of using isSigTemplate which is true for all uploads through th...

Kamo·6mo ago
Fixkamo-internal

Default assocObjectId all'ID del membro corrente per un corretto filtro della scheda doc

Quando non viene fornito nessun param URL oid, le schede Documenti Originali e Doc Modificati ora query dall'ID del membro corrente, mentre System Docs interrog...

kamo·6mo ago
FixConversionService

Add @JsonIgnoreProperties to UploadTemplateRequest to prevent hash null on unknown fields

The frontend sends accessLevel, description, folderId, docTypeId in the metadata JSON. Jackson was failing to parse the entire metadata object when encountering...

Kamo·6mo ago
April 12, 2026
Fixkamo-internal

Luogo abbandonato campo alla posizione visiva esatta del fantasma

Utilizzare active.rect.current.translated (il client del fantasma di DragOverlay rect) corrisponde al ret tradotto, quindi il campo ora atterra esattamente dove...

kamo·6mo ago
Fixkamo-internal

Percorso tutte le chiamate API esig attraverso forwardToApi() per correggere i guasti di salvataggio

Tutti i 10 gestori di rotta esig puntavano a ESIG SERVICE URL che risolve a un proxy kamowsesig-service non esistente. Sostituire ogni maniglione con forwardToA...

kamo·6mo ago
FixESigService

Replace upsertSigners with full delete+insert to handle frontend temp UUIDs

The frontend assigns temporary crypto.randomUUID() values to newly-added signers before any backend call. The previous upsert-by-uid logic would throw 404 for t...

Kamo·6mo ago
Fixkamo-internal

Posizionamento corretto della miniatura e trasformazione di rotazione del ripristino

Due bug in ThumbnailCanvas: 1. Sostituito `altezza: \`${displayAspect * 100}%\` (altezza percentuale su abs- elemento posizionato — inaffidabile quando contene...

kamo·6mo ago
Fixkamo-internal

Move scroll ownership from PdfCanvas to canvasContainerRef

PdfCanvas root Box previously had overflow-auto + h-full, making it its own scroll container. This meant: - scrollbarGutter: stable on canvasContainerRef had no...

kamo·6mo ago
Fixkamo-internal

Fit to Width calculates actual container width instead of resetting to zoom 1

Reads **************** (which accounts for the stable scrollbar gutter) and the page's natural width via **************** then computes fitZoom = (availableWidt...

kamo·6mo ago
Fixkamo-internal

Replace all hardcoded purple with var(--color-primary) on Settings & Signers page

Signers icon, icon background, count badge, Add Signer buttons, Add First Signer button, empty-state illustration tint, add-another hover, and the ALL_OF_TYPE s...

kamo·6mo ago
Fixkamo-internal

Remove fixed height and scroll bars from field properties panel

The panel had two vertical scrollbars: 1. DesignTab wrapper had height: 200 + overflowY: auto 2. FieldPropertiesPanel root had height: 200 + overflow: hidden, ...

kamo·6mo ago
Fixkamo-internal

Deferire il setTotalPages fino a dopo il ciclo di dim PDF per prevenire la saturazione dei lavoratori PDF.js

Su un PDF di 50 pagine, chiamando setTotalPages prima del getPage() monta loop dimensione tutti i 50 componenti ThumbnailCanvas immediatamente. Ogni rientra in ...

kamo·6mo ago
FixConversionService

Expand component scan and add full datasource/JPA/Redis/MinIO config

ConversionServiceApplication was only scanning com.kamo.ConversionService, missing all shared library beans (ImageService, MinIOStorageService, MemberRepository...

Kamo·6mo ago
FixConversionService

Add kamo-shared-library build stage to resolve missing dependency

The Dockerfile was trying to fetch kamo-shared-library from Maven Central, which doesn't exist there. Mirror the SecurityService pattern: clone the shared libra...

Kamo·6mo ago
Fixkamo-internal

Evitare di impilare la pagina, fissare slivers miniatura, aggiungere miniature lato server con PDF.js fallback

- Aggiungi flexShrink: 0 alla pagina divs in PdfCanvas così le pagine non comprimere nella colonna flex - Aggiungi flexShrink: 0 a thumbnail articoli in PageThu...

kamo·6mo ago
Fixkamo-internal

Eager rendering PDF, normalizzazione scala naturale, nessuna scorrimento orizzontale

- PdfCanvas: sostituire IntersezioneObserver con render-all-pages desiderosi. L'approccio basato sull'osservatore era inaffidabile quando la scheda di progettaz...

kamo·6mo ago
Fixkamo-internal

Eliminare il conflitto DOM bambino nel rendering PDF delle miniature

Sostituire container.innerHTML + append Modello bambino in ThumbnailCanvas con un <canvas> ref. Il vecchio approccio ha cancellato React-owned DOM nodi direttam...

kamo·6mo ago
Fixkamo-marketing

Maniglia applicabilePlanIds e applicabileBillingCycles come array di stringhe

Questi campi sono digitati come string[] ma avevano .split(",") li chiama, causando errori di costruzione di TypeScript.

Kamo·6mo ago
FixESigService

Add CockroachDB transaction retry for template init endpoint

CockroachDB serializable isolation can trigger RETRY_SERIALIZABLE on the read-then-write pattern in initTemplate. Retries up to 3 times with backoff when detect...

Kamo·6mo ago
Fixkamo-marketing

Redact *** riferimenti in display changelog

Kamo·6mo ago
Fixkamo-internal

Revertire i percorsi proxy a OTK auth, rimuovere esigProxy helper non utilizzato

OTK è il meccanismo corretto auth — l'approccio precedente della sessione bypassato il modello di sicurezza stabilito. Tutti i percorsi proxy esig ora utilizzan...

kamo·6mo ago
FixESigService

Correct OTK Redis key format and add imaging template list endpoint

OTK keys use OTK<id> and ***<id> (no colon) matching the Next.js proxy. Added POST /api/esig/templates/list to query imaging templates via shared library ImgRep...

Kamo·6mo ago
Fixkamo-internal

Utilizzare intestazioni di sessione dirette invece di OTK per le rotte proxy ESigService

Leggi *** sessione da Redis in Next.js e passare orgId/memberId come attendibile intestazioni a ESigService tramite DNS K8 interni. Rimuove la dipendenza OTK.

kamo·6mo ago
FixESigService

Replace OTK auth with trusted session headers for internal K8s calls

ESigService is internal — the Next.js backend reads the session from Redis and passes orgId/memberId/userId as X-Org-Id, X-Member-Id, X-User-Id headers. No OTK ...

Kamo·6mo ago
Fixkamo-internal

Utilizzare endpoint init per trovare o creare modello da imgId sul carico dell'editor

La pagina di creazione passa imgId nell'URL. La pagina di modifica ora chiama la init endpoint per trovare o creare il ESignTemplate, quindi utilizza il restitu...

kamo·6mo ago
FixESigService

Scan all shared library repository packages to resolve bean dependencies

ComponentScan picks up shared library services which depend on repos in donotmodify.dao.repos and commerce packages — must scan those too.

Kamo·6mo ago
April 11, 2026
Fixkamo-internal

Mappatura corretta del nome del campo tra backend e frontend per l'API di livello di accesso

Mappa backend securityLevelId→accessLevel, isOrganizationOwner→isOwner, memberType→isTeamMember in API route. Fissare il controllo destro per utilizzare EDIT ME...

kamo·6mo ago
FixInitializerService

Set 18DOFF promotion end date to 2026-04-26

Kamo·6mo ago
Fixkamo-marketing

Aggiungi fallback statico per la pagina offerta quando l'API di abbonamento non è disponibile

Il tavolo non esiste ancora in produzione. così l'API restituisce un errore. Ripiegare i dati di promozione e pianificazione così la pagina di offerta funziona ...

Kamo·6mo ago
Fixkamo-marketing

Aggiornare il tipo di ApiPromotion per abbinare la nuova risposta di backend di Lista

applicabilePlanIds e applicabileBillingCycles sono ora array, non stringhe JSON.

Kamo·6mo ago
FixInitializerService

Extend 18DOFF promotion end date to 2026-12-31

The April 14 end date was causing the offer page to show as expired.

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