Live Change Log

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

17,994
Total Changes
4,654
Features
4,558
Fixes
32
Projects
Filter by project
All Projects17,994AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService386InitializerService303KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,531TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,603kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,328kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,654Fix4,558Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
August 9, 2026
OtherKlusterServices

Make every sweep schema-aware; kamo has 714 tables, not 680

Cross-checking SHOW BACKUP (714 objects) against a table_schema='public' inventory (680) exposed 34 tables living in five other schemas: email_metadata, email_p...

Kamo·4w ago
OtherKlusterServices

Make every sweep schema-aware; kamo has 714 tables, not 680

Cross-checking SHOW BACKUP (714 objects) against a table_schema='public' inventory (680) exposed 34 tables living in five other schemas: email_metadata, email_p...

Kamo·4w ago
OtherKlusterServices

Baseline capture for CockroachDB to YugabyteDB parity checking

Two passes: cheap batched count(*), then an order-independent checksum. The checksum sums per-row md5 hashes as integers rather than the obvious md5(string_agg...

Kamo·4w ago
OtherKlusterServices

Baseline capture for CockroachDB to YugabyteDB parity checking

Two passes: cheap batched count(*), then an order-independent checksum. The checksum sums per-row md5 hashes as integers rather than the obvious md5(string_agg...

Kamo·4w ago
DocsKlusterServices

Implementation plan for the CockroachDB to YugabyteDB migration

15 tasks. The two gates sit before any downtime: Task 5 proves the backups actually restore, and Task 10 diffs the KamoInitializer-built schema against the live...

Kamo·4w ago
DocsKlusterServices

Implementation plan for the CockroachDB to YugabyteDB migration

15 tasks. The two gates sit before any downtime: Task 5 proves the backups actually restore, and Task 10 diffs the KamoInitializer-built schema against the live...

Kamo·4w ago
DocsKlusterServices

Design for the CockroachDB to YugabyteDB migration

Records the measured current state (3.4 GB, 791 tables, 671 FKs, ~30 consumers), the five design decisions, and the cutover sequence. The two findings that sha...

Kamo·4w ago
Featurekamo-internal

Split the access log and its detection rules into sub-tabs

The rules that decide what gets flagged were an accordion below the grid — collapsed by default, so the configuration was something you had to know was there, a...

kamo·4w ago
Fixkamo-internal

Administrator bar panels rendered their key paths, not their copy

TipPanel took the panel's DOM id in a prop called `id` and then built its message keys from that same `id`, so every panel asked for **************** and next-i...

kamo·4w ago
Fixkamo-internal

Let the access log fill its pane and page from the server

The tab bar already says "System Access Logs", so the h4 above the stats was the page's name twice. Dropping it also lets the pane use the shell every other Sec...

kamo·4w ago
Featurekamo-internal

Back-to-home arrow on the main workspace headers

Carries the settings-page arrow across the rest of the app: Accounts, Leads, Commerce, Marketing (all four tabs, via the shared layout), Knowledge Base, HR, Net...

kamo·4w ago
Fixkamo-internal

Stop the list scrolling when it already fits

Three things added height that was not content, so a list short enough to fit still got a scrollbar: - the infinite-scroll sentinel was rendered unconditionall...

kamo·4w ago
Featurekamo-internal

Explanatory panels on every administrator bar link

Somebody who created their organization ten minutes ago meets nine links they have no way to read. Hovering or focusing one now unfurls a panel that answers, in...

kamo·4w ago
Fixkamo-internal

Restore the administrator bar changes reverted by 3926d1d8

3926d1d8 carried AdminQuickLinks.tsx back to its ae45fc9c^ blob, undoing the org plural label, the short Blocks/Logs names and the gap removal. Same content as ...

kamo·4w ago
Fixkamo-internal

String row ids, org-coloured controls, page icon, centred error bar

Creating a book and selecting it answered "Not found". CockroachDB unique_rowid() ids are 64-bit — a real one is 1200081912680906758 — and JSON.parse rounds any...

kamo·4w ago
Featurekamo-internal

Tighten the administrator bar — org label, short audit names, no gap

Three changes to how the bar reads at nine links: The team-members entry now wears the org's own plural label from Behavior & Labeling, so an org that calls th...

kamo·4w ago
FixEmailService

Publish row ids as strings — a new book 404'd the moment you selected it

CockroachDB unique_rowid() produces 64-bit ids. A real one from contact_books is 1200081912680906758; JavaScript's JSON.parse rounds anything past Number.MAX_SA...

Kamo·4w ago
Featurekamo-internal

Back-to-home arrow left of every settings page title

Settings pages had no way back to the launchpad short of the nav rail. SettingsView's optional backHref now defaults to home and renders unconditionally, so the...

kamo·4w ago
Featurekamo-internal

The rest of essential setup on the administrator bar

Security Roles, Departments and Job Titles join the configuration group, left of the audit pair. They are the three Essential Setup tabs the bar was missing — B...

kamo·4w ago
Featurekamo-internal

Access blocks in the administrator bar, audit links to the trailing edge

Access Blocks and System Access Logs are the two screens on the bar that answer 'who got in and who did not' rather than configuring anything, so they group tog...

kamo·4w ago
FixConversionService

Stop renewing the shared *** TTL for idle users

Fifth service holding its own copy of KSessionService, and the fifth sliding the shared *** TTL on every read. Each one alone was enough to keep a session alive...

Kamo·4w ago
FixDocsService

Stop renewing the shared *** TTL for idle users

Caught with redis MONITOR: this pod was issuing GET + PEXPIRE against a *** key whose owner had been idle for over an hour, seconds after SecurityService had co...

Kamo·4w ago
Featurekamo-internal

Name and edit address books, and rebuild the page around them

Adding a book POSTed a hard-coded placeholder name with no prompt, and nothing anywhere could rename one — so every book an org had was called the same thing, p...

kamo·4w ago
FeatureEmailService

Persist and serve the whole contact, not just its name

The REST layer serialised the JPA entities directly. A Contact has no mapping to its emails, phones, addresses, organisations, URLs, IMs or relationships — thos...

Kamo·4w ago
Featurekamo-internal

Administrator bar above the launchpad cards

Five screens an org administrator opens constantly — team members, behavior & labeling, stats & costs, apps & features, system access logs — each two or three c...

kamo·4w ago
Fixkamo-internal

Stop /api/user-info renewing the TTL for idle users

This route writes the *** TTL straight to Redis, so it bypassed the gating in SecurityService, MediaService and ChatService entirely — and useUserInfo polls it ...

kamo·4w ago
StyleMediaService

Restore CRLF endings in KSessionService

The previous commit rewrote the file with LF, turning a 15-line change into a 577-line whole-file diff. Content is unchanged; this puts the endings back so the ...

Kamo·4w ago
FixMediaService

Stop renewing the shared *** TTL for idle users

This service keeps its own copy of KSessionService, and it slid the TTL on every read. Gating SecurityService alone therefore fixed nothing: kamo-internal point...

Kamo·4w ago
FeatureBillingService

Read imaging usage from one deduplicated pass

Follows the shared-library change to one charge per distinct file per organization. Both the summary and the daily snapshot writer take a single imaging pass an...

Kamo·4w ago
Featurekamo-shared-library

Count each file once per organization, not once per upload

Billing was per imgs record, so an organization that uploaded the same file five times was charged five times. The owner's rule is one charge per distinct file ...

Kamo·4w ago
Performancekamo-internal

Hash with BLAKE3 only, so skipping the upload actually saves time

Dedup worked — the server logged 'linked WITHOUT upload' and 358 MB never left the machine — but the member still waited, because computing SHA3-256 alongside B...

kamo·4w ago
PerformanceMediaService

Accept a BLAKE3-only claim so dedup is faster than uploading

The link endpoint demanded both hashes. A browser has no fast SHA3-256, so proving it already had a 358 MB file took ~20 seconds against an 18.8 second upload —...

Kamo·4w ago
Performancekamo-shared-library

Match stored content on BLAKE3 alone, so a browser can afford to ask

Proving possession required both hashes, and a browser has no fast SHA3-256 — js-sha3 is pure JavaScript at ~25 MB/s. Measured on a 358 MB video that was ~20 se...

Kamo·4w ago
Featurekamo-internal

Skip the upload when the platform already has the file

Sending the same video to three people meant three full uploads. Dedup collapsed them into one stored object, but only once each transfer had finished — so the ...

kamo·4w ago
FeatureMediaService

Attach an already-stored file without uploading it again

Forwarding a 2 GB video to three colleagues cost three full uploads. Storage deduplicated them into one object, but only after each transfer had completed and b...

Kamo·4w ago
ChoreBillingService

Rebuild for the generated-previews domain

Picks up the shared-library change that bills thumbnails and tracks to the organization and reads derivative bytes from img_dat_derivatives.

Kamo·4w ago
Featurekamo-internal

Show generated preview storage as its own line

Thumbnails and preview images now count toward the organization's total, so the client should be able to see what they cost rather than find them folded into an...

kamo·4w ago
FeatureSecurityService

Measure the thumbnails and tracks generated from each file

Object keys are content-addressed as **************** so the segment before the first underscore identifies the file a derivative came from. Sizes are summed pe...

Kamo·4w ago
FeatureInitializerService

Schema for measured thumbnail and track storage

img_dat_derivatives records, per stored file, the real byte size of everything Kamo generated from it. It replaces img_dats.THUMB_FILE_SIZE as the source for th...

Kamo·4w ago
Featurekamo-shared-library

Bill generated thumbnails to the organization

Thumbnails and per-channel tracks are storage an organization's uploads cause, so on the owner's instruction they now count toward that organization's total rat...

Kamo·4w ago
Fixkamo-internal

Recover a received attachment whose first request was rejected

A video arriving in a conversation could not be played until the page was reloaded, while a video the member had just sent always played. Both copies were byte-...

kamo·4w ago
Featurekamo-internal

Let a member keep a video or audio attachment, not just play it

The player answers one intention. Wanting the file on disk is a different one, and video and audio were the two attachment kinds with no way to do it — a docume...

kamo·4w ago
ChoreBillingService

Rebuild for the branding and docs-workspace domains

Picks up the shared-library change that reads both from object_storage_days.

Kamo·1mo ago
Featurekamo-internal

Show branding and Docstive document storage

Both are written straight to the object store with no size recorded in the database, so they read as zero until a sweep measures them. They now have their own l...

kamo·1mo ago
FeatureSecurityService

Measure branding and Docstive document storage

These are the only two things an organization stores that carry no size anywhere in the database — branding assets go straight into the public bucket under the ...

Kamo·1mo ago
FeatureInitializerService

Schema for object-store-only storage measurement

object_storage_days records what a sweep reads back from MinIO for the two things that carry no size in the database: branding assets and the docs workspace. Bu...

Kamo·1mo ago
Featurekamo-shared-library

Count branding and Docstive document storage

Almost everything an organization stores records its own size somewhere — an imgs row, a kb_media row, a mailbox measurement. Two things do not. Branding assets...

Kamo·1mo ago
ChoreBillingService

Rebuild for the text message attachment domain

Picks up the shared-library change that measures MMS attachments from the data: URIs stored inline in VOIP_MESSAGES.

Kamo·1mo ago
Featurekamo-internal

Show text message attachment storage

MMS attachments live inline in the database as data: URIs rather than as files, so they had no size record and were never counted. They now have their own line.

kamo·1mo ago
Featurekamo-shared-library

Count text message attachments

MMS attachments are stored, and were not counted. They are also not what they look like: VoipMessageService encodes the attachment as a data: URI and writes it ...

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