Live Change Log

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

17,989
Total Changes
4,649
Features
4,558
Fixes
32
Projects
Filter by project
All Projects17,989AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService386InitializerService302KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,529TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,601kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,328kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,649Fix4,558Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
August 14, 2026
Fixkamo-internal

Stop the page scrollbar's two halves cancelling each other out

The main content scroller declared both **************** and a block of `::-webkit-scrollbar` rules, on the theory that whichever the browser understood would w...

kamo·4w ago
Fixkamo-internal

Draw the main content scrollbar, in the org's colour

html/body are pinned to height:100%, so the element that actually scrolls a page is the main content div in layout.tsx — and it carried no scrollbar styling at ...

kamo·4w ago
Fixkamo-internal

Hold a launchpad card's pin chip back until its pane arrives

The panes reveal themselves on scroll (whileInView, opacity 0 -> 1), but the pin control is a sibling overlay rather than part of that animation — it has to be,...

kamo·4w ago
Fixkamo-internal

Solid sticky paper, and a scrollbar in the note's own colour

The note's background faded to `rgba(0,0,0,0.045)` at one corner. That is not a shade — it is 95% TRANSPARENT, so the corner of a sticky showed the page scrolli...

kamo·4w ago
Fixkamo-internal

Stop the docket flickering a scrollbar, and centre the step counter

THE FLICKER. The docket row set `overflow-x: auto` and left the other axis alone — but CSS computes `overflow-y: visible` to `auto` the moment the other axis is...

kamo·4w ago
FixInitializerService

Match the enum-whitelist CHECK sweep to the YugabyteDB rendering

dropStaleEnumWhitelistChecks() looked for '% IN (%', which is how CockroachDB stored a @Enumerated(EnumType.STRING) whitelist. PostgreSQL and YugabyteDB normali...

Kamo·4w ago
Fixkamo-internal

Catch npm silently dropping Next's native SWC binary

The image build died in `next build` with Downloading swc package @next/swc-linux-x64-gnu... unhandledRejection TypeError: terminated (UND_ERR_SOCKET)...

kamo·4w ago
FixSecurityService

Stop copying lead details onto the calendar event

The event carried the lead's name, number, email and best time to call, copied into its description when the call was booked. A copy of a record that is still b...

Kamo·4w ago
FixSecurityService

Stop writing the lead path into the callback's description

It read "Open the lead: /leads/view/123" and was not a link. It could not be: a description is edited in a textarea, where text is text — and outside the applic...

Kamo·4w ago
Fixkamo-shared-library

Stop an omitted date window failing every event lookup

The calendar page could never list anything. It asks for every event a member has, with no window, and these queries took the range as nullable and tested it wi...

Kamo·4w ago
FixEmailService

Put a callback on a calendar the member can actually see

Callbacks were not reaching the calendar at all. This service picked the target calendar by account — findPrimaryByUser — and a user is global while a member is...

Kamo·4w ago
Fixkamo-internal

Stop the event dialog throwing "Invalid time value" on open

wallClockToInstant called toISOString() on a date it had not checked, so any unreadable input threw RangeError instead of returning something unusable. The dia...

kamo·4w ago
Fixkamo-internal

Let "not established" be a value the images gate can see

Follows EmailService boxing **************** A folder listing now reports null for it rather than a primitive's false, so the types here admit null and the gate...

kamo·4w ago
FixEmailService

Stop envelopes claiming a consent answer nobody asked for

remoteImagesAllowed was a primitive boolean, and only the three endpoints that fetch a whole message ever assign it. The folder listing does not — answering it ...

Kamo·4w ago
FixEmailService

Make event reminders actually notify someone

Three faults, one symptom. Members reported that calendar notifications did not work, and all three reasons were on this side. Reminders were never written. Th...

Kamo·4w ago
Fixkamo-internal

Stop flashing the external-images prompt at members who allow them

Opening a message showed the "display external images" banner for a moment and then withdrew it, for anyone who had already chosen to allow images everywhere. ...

kamo·4w ago
Fixkamo-internal

Stop storing which side a message is on

The mirrored rule was right; what was wrong is that the answer was computed once, when a message arrived, and kept. Placement needs three things — the sender, t...

kamo·4w ago
Fixkamo-internal

Keep the session document name as the consent card's fallback heading

Extracting FieldLayer dropped detailTitleFor, and with it the fallback to session.documents[0].name — a document with a null fileName would have headed its cons...

kamo·4w ago
Fixkamo-internal

Render the document the wizard was measuring into a node that did not exist

The execution wizard showed a blank surface for every signable document — no pages, no field overlays, no PDF request, and nothing in any log. DocumentStep mea...

kamo·4w ago
FixEmailService

Record all three IMAP flags, and say why the index cannot serve a list yet

The migration has run, so is_answered exists and SearchIndexService now writes it alongside is_read and is_starred. The index has recorded two of the three flag...

Kamo·4w ago
FixEmailService

Do not read or write is_answered before its column exists

Follows the shared-library change unmapping the field. Nothing in the deployed path now touches a column that KamoInitializer has not yet created. The index-ba...

Kamo·4w ago
Fixkamo-shared-library

Unmap is_answered until its migration has run

Mapping the column ahead of the migration that creates it is armed, and I armed it. SearchIndexEntity is hydrated from fullTextSearch, which is a native SELECT ...

Kamo·4w ago
Fixkamo-internal

Only the requestor is asked how the support went

Closing a ticket put "How was your experience?" in front of every agent in the conversation — the people who did the work, invited to score themselves. Since a ...

kamo·4w ago
Fixkamo-internal

A read clears the indicators immediately, not on the next reload

Reading a conversation updated the server and then waited for the news to come back: PUT /read commits, MediaService broadcasts a fresh count over core NATS, th...

kamo·4w ago
Fixkamo-analytics

Stop listing every visitor twice

Performance (web vitals) events were saved with no hostname — the collector's performance branch never passed one, unlike the pageview branch. All 803 stored pe...

Kamo·4w ago
FixESigService

Resolve a native PDF's source bytes instead of demanding a rendition

**************** required dat.convertedDat to be non-null. ConversionService only mints a second ImgDat when it actually converts something -- a document that a...

Kamo·4w ago
FixMediaService

The ticket list survives a broken indicator

The unread read threw and took the whole ticket list with it — the page came back empty, which is a far worse outcome than a page with no markers on it. It is g...

Kamo·4w ago
Fixkamo-shared-library

Bind the system-event pattern — a brace in native SQL never reaches the database

Hibernate scans native SQL text for its legacy {alias.path} placeholders, so the inlined '{"systemEvent"%' raised QueryException: Unmatched braces for alias pat...

Kamo·4w ago
FixDocsService

Connect DocsService to NATS so the badge lights without a refresh

LegalPendingCountPublisher takes its NATS Connection as required=false and returns quietly when it is null. The shared NatsConfig is **************** and this C...

Kamo·4w ago
Fixkamo-internal

Remove the payroll registration fields nothing reads

Six fields on the payroll cards were never consumed by anything. A registration field nobody loads is worse than a missing one: an operator fills it in, believe...

kamo·4w ago
Fixkamo-shared-library

ADP takes per-org credentials, not a platform registration

ADP shipped classified PLATFORM_OAUTH on the strength of ADP publishing a Marketplace ISV model, where Kamo would hold one partner client id, secret and certifi...

Kamo·4w ago
Fixkamo-internal

The needs-attention mark stops lying when you open a ticket

Clicking a row cleared its amber dot while the badge beside it stayed put, and a refresh brought the dot back. The badge was right and the dot was wrong. A tic...

kamo·4w ago
Fixkamo-internal

Mark the items the navtop badge is actually counting

The badge read "5 support items need attention" and the list marked none of them. Both numbers were right about their own question and neither was the question ...

kamo·4w ago
FixMediaService

The ticket list marks the same items the badge counts

countForMember sized a set it built privately, so the list had no way to ask which tickets were in it and approximated instead — it flagged unread chat messages...

Kamo·4w ago
August 13, 2026
Fixkamo-internal

Side a message by which side sent it, not by who is reading

A support conversation has exactly two sides, and they are not "me" and "everyone else". One side is the person who asked for help — always exactly one member. ...

kamo·4w ago
FixMediaService

A ticket can never be answered by the member who raised it

A support conversation has two sides — someone asking and someone answering — and nothing enforced that they were different people. A member holding ACCEPT_SUPP...

Kamo·4w ago
FixMediaService

Send an outbound attachment to the endpoint its type belongs to

Every social attachment went out through the adapter's sendImage, which on Telegram is /sendPhoto. A PDF or a zip posted there is rejected by the provider, and ...

Kamo·4w ago
Fixkamo-internal

Department speed dial hung on Loading forever

The loader effect listed departmentsState in its deps and set it to 'loading' on entry, so React tore that effect instance down immediately, the cleanup flipped...

kamo·4w ago
Fixkamo-internal

Make Delete actually delete, and select exactly one pill

Delete did nothing. The handler was hung off the pill's focus, and the pill never had focus: preventDefault() in the pointerdown handler — which is there to sto...

kamo·4w ago
Fixkamo-meet

Size the org logo to 80% of the join column

The join screen capped the branding logo at 40px tall with objectFit contain, so it rendered letterboxed inside the 300px column and looked undersized no matter...

Kamo·4w ago
FixKlusterServices

Repair the kamouniverse backup, broken since the Yugabyte cutover

Renaming the dead CockroachBackupMissing alert in the previous commit made it fire immediately: no universe backup had succeeded since the 2026-08-09 migration....

Kamo·4w ago
FixInitializerService

Point at YugabyteDB, and stop `mvn test` migrating production

The datasource still named port 26257. That is the retired CockroachDB, which is still running and still answering, so a run against it succeeds completely and ...

Kamo·4w ago
August 12, 2026
FixInitializerService

Start again, and stop the billing migration deleting its own index

KamoInitializer could not start at all. Hibernate detects CockroachDialect, whose supportsInsertReturning() and **************** are both false, so an @Id carry...

Kamo·4w ago
Fixkamo-internal

Open at the newest message, and scroll up for the rest

Opening a long conversation showed the oldest loaded message first and then travelled down to the present while the member waited. Both chat surfaces scrolled t...

kamo·4w ago
Fixkamo-shared-library

Quote the feed queries' aliases, and stop counting your own support messages against you

Two independent defects in the Chats feed, both invisible from the Java side. The native chat/support/social queries aliased columns in camelCase without quoti...

Kamo·4w ago
Fixkamo-internal

Make the option strip yield the room instead of the clusters colliding

The left cluster carried minWidth: 0 while its contents (correctly) refuse to shrink or wrap, so a crowded bar shrank the box below its own content and the cont...

kamo·4w ago
Fixkamo-internal

Skeleton tracks the shared grid helpers; test jsonBody's 204 guard

The loading skeleton in app/hr/overview/page.tsx still hand-wrote the 1800px breakpoint that OverviewPillars and friends extracted into primitives.tsx (WIDE_BRE...

kamo·4w ago
Fixkamo-internal

Follow the approval figure into currentPeriod, and stop null reading as zero

SecurityService 7c55054 moved awaitingApproval inside currentPeriod, where the window it describes actually is, and omits it entirely when there is no open peri...

kamo·4w ago
Fixkamo-internal

Two-up figure rows so no card label wraps

The figure labels are Operator Labels — uppercase, 11px, 0.12em tracking — which puts "Execution incomplete" at 158px, "Blocking exceptions" at 150px and "Await...

kamo·4w 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