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
August 6, 2026
Featurekamo-shared-library

Record package attestation as append-only evidence

The package-level 'I have read and agree' is a different legal instrument from the E-SIGN consent to transact and from any per-document signature, and it is the...

Kamo·1mo ago
Featurekamo-shared-library

Add per-member assignments and per-document progress

The document row is the join that makes N e-sign envelopes read as one package. The badge count comes off the assignment status, not e-sign status: recipient st...

Kamo·1mo ago
Featurekamo-shared-library

Freeze package content into immutable versions

Pins the ImgDat blob id and its SHA-256, not just imgId — a Docs save repoints the same Img at new bytes, so imgId alone would let two members sign different do...

Kamo·1mo ago
Featurekamo-shared-library

Target a package at departments, job types or named members

Shaped on SystemUserAccess. Adds the audience resolver to TeamMemberRepo, which was an empty interface; the ACTIVE + recordState predicate is what keeps termina...

Kamo·1mo ago
Featurekamo-shared-library

Add the legal package template entities

A package is an ordered set of binders plus an audience. Binder references are soft ids because binders are user-deletable and cascade their items. The attestat...

Kamo·1mo ago
Featurekamo-internal

Make the binder store aware of its collection

The store is a module singleton, so it now tracks the active scope, clears on a scope change, and drops stale in-flight responses.

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
FeatureInitializerService

Backfill the collection each existing binder belongs to

Derives the scope from the first DOC item's Img; empty binders fall back to the owner's My Docs. Applies NOT NULL only after the backfill.

Kamo·1mo ago
Featurekamo-shared-library

Narrow binder visibility to one document collection

Replaces findVisibleToMember with a scoped variant and drops the two unreferenced finders that sorted by the dead date_updated column.

Kamo·1mo ago
Featurekamo-shared-library

Give a binder the document collection it belongs to

Binders had no assoc scoping, so every DocManager rendered the same global per-member pool and a binder built under Marketing could be filled with HR documents....

Kamo·1mo ago
Featurekamo-internal

Group the meeting-invite fields by meaning when maximized

Splitting the form into equal halves used the wrong unit. It stretched a date input across half the window and stranded its All-day box at the far edge, left tw...

kamo·1mo ago
Featurekamo-internal

Keep the quoted original out of the editable body

Replying dropped the whole quoted message into the Quill editor as body text. Quill can only model a simple grid, so every layout table in the quote was flatten...

kamo·1mo ago
Featurekamo-internal

Pair the meeting-invite fields into two columns when maximized

The invite form stacks eight full-width rows, which in a maximized compose window pushed the body editor most of the way off screen while leaving half the windo...

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
Featurekamo-internal

Give every popup tool window 40px more room in both axes

Each tool's defaultSize and minSize in the registry grows by 40x40, and the geometry that was hardcoded alongside it moves with it rather than drifting out of a...

kamo·1mo ago
Featurekamo-internal

Drag, cut, copy and paste recipient chips between To, Cc and Bcc

Moving someone from To to Bcc meant deleting the chip and typing the address again from memory. Chips are now selectable and can be dragged or carried on the cl...

kamo·1mo ago
Featurekamo-internal

Rotate the field overlay with the page, flag unread imports, order fields for reading

Three things that only start to matter once a document arrives carrying forty detected fields instead of two hand-placed ones. Page rotation: rotating a page t...

kamo·1mo ago
August 5, 2026
Featurekamo-internal

Read Acrobat format actions when detecting fillable fields

Acrobat stores a field's intended format as JavaScript in /AA, which pdf.js surfaces as actions.Format. That is the author's declaration rather than a guess off...

kamo·1mo ago
Featurekamo-internal

Insert a new meeting link at the coder from the composer

Adds a footer action to the compose window that creates a meeting with the organization's configured provider and writes its join link into the body wherever th...

kamo·1mo ago
Featurekamo-internal

Rebuild a fillable PDF's AcroForm fields as native Kamo fields

Opening an editable PDF in the document editor now reads its AcroForm widget annotations off the pdf.js document and recreates each one as a DesignField on the ...

kamo·1mo ago
FeatureInitializerService

Create the email search_vector column and its inverted index

**************** never existed. EmailService's own V1__email_metadata_schema.sql declares it, but that migration never ran -- the table came from this service's...

Kamo·1mo ago
Featurekamo-internal

A contact card behind every name on a message

Every person shown in a read view was a dead end. To and Cc rendered as displayNameFor(a).join(', ') — a comma wall of display names with no address, no hover, ...

kamo·1mo ago
FeatureEmailService

Resolve the people behind the addresses on a message

A message header knows an address and whatever display name the sender chose to put beside it. The organization already knows far more — colleagues, address boo...

Kamo·1mo ago
Featurekamo-internal

Resources tab is the org's HR document library

Replaces the Resources placeholder with DocManager on a document collection of its own — ImageAssocType.HR_RESOURCE, bucket imaging-hr-resources — org-scoped th...

kamo·1mo ago
Featurekamo-shared-library

HR_RESOURCE assoc type for the org HR resource library

The /hr Resources tab publishes handbooks, policies, forms and reference material to the whole team, and no existing assoc type fits: MY_DOCS is a person's own ...

Kamo·1mo ago
Featurekamo-internal

Human Resources module shell with five route-backed tabs

Adds /hr with the accounts-page chrome in its route-backed form (the same one /marketing already uses): a layout owning the gradient hero and underlined tab bar...

kamo·1mo ago
Featurekamo-internal

Complete the Communications tab

Each sub-tab now holds its own data, and All interleaves every channel by date. Notes keeps MediaStream, because notes are authored here — but readOnlyChrome s...

Kamo·1mo ago
FeatureSecurityService

Unified communications timeline API

GET **************** returns one date-ordered page across notes, calls, voicemails, texts, e-mails and chat; ?channel= narrows it. Three sources are merged. Ca...

Kamo·1mo ago
FeatureDaemonService

Drive the mail-to-lead association sweep

Five-minute tick against EmailService's internal sweep endpoint, mirroring VoipGlobalSyncJob. The schedule lives here because EmailService runs several pods and...

Kamo·1mo ago
FeatureEmailService

Associate lead correspondence, and fix the dead push indexer

Adds the mail half of the lead Communications tab, plus the ingestion it needed to exist at all. The platform has no working mail push: IMAP IDLE is hardcoded ...

Kamo·1mo ago
FeatureVOIPService

Persist calls and associate calls, texts and voicemail with leads

Calls were never recorded anywhere — VoipCallEventService published a NATS event for the browser and kept nothing, and RECORDINGS only exists when audio was cap...

Kamo·1mo ago
FeatureInitializerService

Schema and contact-point seed for lead communications

Hibernate creates the three new tables from the shared-lib entities; this adds what it cannot express — the partial unique index that keeps at most one open con...

Kamo·1mo ago
Featurekamo-shared-library

Point-in-time contact-point index and lead communication links

Adds the spine the lead Communications tab reads from. LEAD_CONTACT_POINTS records every phone number and e-mail a lead has ever had, as a window with activeFr...

Kamo·1mo ago
FeatureMediaService

Capture the demo lead before the booking step

The marketing site's demo form collected name, email, company, company size, industry and a message, then advanced to scheduling without telling anyone. Lead cr...

Kamo·1mo ago
Featurekamo-shared-library

Public demo-request lead capture primitives

A visitor who fills in the marketing site's demo form but never books a time left no trace: the lead was only ever written inside the booking transaction. Captu...

Kamo·1mo ago
Featurekamo-internal

Register Provider Setup in navigation, and write the quick tips

The Provider Setup tab rendered inside SettingsView but was reachable only by typing the URL — it was missing from both places that list settings destinations: ...

Kamo·1mo ago
Featurekamo-internal

Enforce geo and IP access rules on page loads

checkAccess evaluated the rules itself and matched nothing for its entire life: it compared rule types against **************** while the publisher writes the e...

kamo·1mo ago
FeatureAPIService

Enforce tenant access rules at the gateway

This filter has been inert since it was written. resolveOrgId read org:domain:<host> from Redis, nothing ever wrote that key, and the null return fell through t...

Kamo·1mo ago
FeatureSecurityService

Actually enforce geo and IP access rules

The rules were stored, cached to Redis and never consulted. AccessCheckController was the only caller of the evaluation and nothing called AccessCheckController...

Kamo·1mo ago
Featurekamo-internal

Platform registration card for the Zoom Marketplace app

Completes Zoom's one-click connect path. The backend already resolves PlatformOAuthProviderType.ZOOM, but with no card here a platform operator had nowhere to e...

Kamo·1mo ago
Featurekamo-internal

Microsoft Teams Phone provider, front to back

Adds Teams to **************** and wires the whole path through: provider selection, the Entra + Azure Communication Services config, tenant admin consent, the ...

kamo·1mo ago
FeatureVOIPService

Microsoft Teams Phone as a provider

Teams is not one API, so the provider glues three control planes together: • Graph, app-only — call history (getPstnCalls), presence reads, directory and...

Kamo·1mo ago
Featurekamo-internal

Provider Setup tab and capability-gated meeting settings

Adds the Provider Setup tab to /settings/features/meets and makes every other tab honest about the provider it is configuring. useMeeting no longer builds meet...

Kamo·1mo ago
Featurekamo-shared-library

MICROSOFT_TEAMS provider type

Appends MICROSOFT_TEAMS to VoipProviderType. The enum persists as ORDINAL on **************** so the position is load-bearing and the constant goes last; the cl...

Kamo·1mo ago
FeatureAPIService

Route the meeting provider OAuth callback

Zoom and Microsoft redirect the browser to this gateway after an org authorises Kamo's app. The popup lands here with no tenant session — the org travels in ?st...

Kamo·1mo ago
FeatureMediaService

Meeting provider abstraction with Zoom and Microsoft Teams

Meetings were Kamo Meets by construction — MeetService persisted a Meet room name and nothing else. This introduces the abstraction and two remote providers beh...

Kamo·1mo ago
FeatureInitializerService

Schema for the multi-provider meeting layer

Creates **************** and org_meeting_oauth_tokens, adds the provider-identity columns to MEETING_RECORDS and MEETING_RECORDINGS and the Zoom/Teams-capable s...

Kamo·1mo ago
Featurekamo-shared-library

Model meetings as provider-agnostic

Kamo Meets was the only possible backend: OrgMeetConfig was a flat Meet settings bag and a MeetingRecord held nothing but a room name. This adds the schema for ...

Kamo·1mo ago
Featurekamo-internal

Allow-list countries on the geo-blocking card

The card could only deny countries, so an org that serves one country had to enumerate every other one. It now has both lists: a mode toggle picks which list th...

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