Live Change Log

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

17,933
Total Changes
4,614
Features
4,543
Fixes
32
Projects
Filter by project
All Projects17,933AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService373InitializerService300KBService74KlusterServices546MCPGatewayService43MediaService461RAGService61SecurityService1,523TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,579kamo-login319kamo-marketing585kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,322kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs226Feature4,614Fix4,543Other6,781Performance136Refactor274Revert23Style48Test70Upgrade1
April 15, 2026
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·5mo ago
April 13, 2026
Fixkamo-marketing

Use 24-hour window instead of UTC date for today's changelog count

The server runs in UTC, so at night in US timezones toISOString() returns tomorrow's date and no commits match. Using a 24h rolling window instead.

Kamo·5mo ago
Fixkamo-marketing

Force-dynamic on changelog API routes to prevent stale date caching

Next.js was statically caching these GET route handlers at build time, freezing new Date() to the build date so today's changelog count never updated.

Kamo·5mo ago
Fixkamo-internal

Use systemDocsOnly flag for System Docs tab, show all docs in Original Docs

Original Docs tab now shows all docs for this org/assocType without filtering by assocObjectId. System Docs tab sends systemDocsOnly: true to only get docs with...

kamo·5mo 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·5mo ago
Fixkamo-internal

Default assocObjectId to current member ID for proper doc tab filtering

When no oid URL param is provided, Original Docs and Modified Docs tabs now query by the current member's ID, while System Docs queries with blank assocObjectId...

kamo·5mo 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·5mo ago
April 12, 2026
Fixkamo-internal

Place dropped field at ghost's exact visual position

Use active.rect.current.translated (the DragOverlay ghost's client rect) instead matches the translated rect, so the field now lands precisely where the user re...

kamo·5mo ago
Fixkamo-internal

Route all esig API calls through forwardToApi() to fix save failures

All 10 esig route handlers were pointing to ESIG_SERVICE_URL which resolves to a non-existent kamowsesig-service proxy. Replace every handler with forwardToApi(...

kamo·5mo 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·5mo ago
Fixkamo-internal

Correct rotated thumbnail positioning and restore rotation transform

Two bugs in ThumbnailCanvas: 1. Replaced `height: \`${displayAspect * 100}%\`` (percentage height on abs- positioned element — unreliable when containing bl...

kamo·5mo 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·5mo 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·5mo 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·5mo 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·5mo ago
Fixkamo-internal

Defer setTotalPages until after PDF dim loop to prevent PDF.js worker saturation

On a 50-page PDF, calling setTotalPages before the getPage() dimension loop mounts all 50 ThumbnailCanvas components immediately. Each falls back to PDF.js (ser...

kamo·5mo 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·5mo 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·5mo ago
Fixkamo-internal

Prevent page stacking, fix thumbnail slivers, add server-side thumbnails with PDF.js fallback

- Add flexShrink: 0 to page divs in PdfCanvas so pages don't compress in flex column - Add flexShrink: 0 to thumbnail items in PageThumbnailSidebar for same rea...

kamo·5mo ago
Fixkamo-internal

Eager PDF rendering, natural scale normalisation, no horizontal scroll

- PdfCanvas: replace IntersectionObserver with eager render-all-pages. The observer-based approach was unreliable when the design tab starts with display:no...

kamo·5mo ago
Fixkamo-internal

Eliminate removeChild DOM conflict in PDF thumbnail rendering

Replace container.innerHTML + appendChild pattern in ThumbnailCanvas with a React-managed <canvas> ref. The old approach cleared React-owned DOM nodes directly,...

kamo·5mo ago
Fixkamo-marketing

Handle applicablePlanIds and applicableBillingCycles as string arrays

These fields are typed as string[] but had .split(",") calls on them, causing TypeScript build failures.

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

Redact *** references in changelog display

Kamo·5mo ago
Fixkamo-internal

Revert proxy routes to OTK auth, remove unused esigProxy helper

OTK is the correct auth mechanism — the prior session-header approach bypassed the established security pattern. All esig proxy routes now use generateOTK from ...

kamo·5mo 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·5mo ago
Fixkamo-internal

Use direct session headers instead of OTK for ESigService proxy routes

Read *** session from Redis in Next.js and pass orgId/memberId as trusted headers to ESigService via internal K8s DNS. Removes OTK dependency.

kamo·5mo 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·5mo ago
Fixkamo-internal

Use init endpoint to find-or-create template by imgId on editor load

The create page passes imgId in the URL. The edit page now calls the init endpoint to find or create the ESignTemplate, then uses the returned UUID for design o...

kamo·5mo 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·5mo ago
April 11, 2026
Fixkamo-internal

Correct field name mapping between backend and frontend for access level API

Map backend securityLevelId→accessLevel, isOrganizationOwner→isOwner, memberType→isTeamMember in API route. Fix right check to use EDIT_MEMBER_ACCESS_LEVEL inst...

kamo·5mo ago
Fixkamo-marketing

Update fallback offer end date to 2026-04-26

Kamo·5mo ago
FixInitializerService

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

Kamo·5mo ago
Fixkamo-marketing

Add static fallback for offer page when subscription API unavailable

The **************** table doesn't exist in production yet, so the API returns an error. Fall back to hardcoded promotion and plan data so the offer page works ...

Kamo·5mo ago
Fixkamo-marketing

Update ApiPromotion type to match new List<String> backend response

applicablePlanIds and applicableBillingCycles are now arrays, not JSON strings.

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

Validate Forgejo HMAC-SHA256 signature instead of plain secret header

Forgejo sends webhook secret as X-Gitea-Signature / X-Forgejo-Signature HMAC-SHA256 hash, not as a plain header value. Read body, verify HMAC, then forward to S...

Kamo·5mo ago
Fixkamo-marketing

Redact *** header name in changelog display

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