Live Change Log

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

17,984
Total Changes
4,645
Features
4,557
Fixes
32
Projects
Filter by project
All Projects17,984AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService385InitializerService302KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,528TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,599kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,327kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,645Fix4,557Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
September 5, 2026
FixAPIService

A rebuild of the same commit deployed nothing and reported success

The image is tagged with the commit SHA, so rebuilding the same commit produces an identical image reference. `kubectl set image` then changes nothing, the Depl...

Kamo·1w ago
FixAIService

A rebuild of the same commit deployed nothing and reported success

The image is tagged with the commit SHA, so rebuilding the same commit produces an identical image reference. `kubectl set image` then changes nothing, the Depl...

Kamo·1w ago
Featurekamo-internal

Start a coder session from the Linux Desktop menu, at a model and effort you keep

The icon already opened a remote desktop and a remote terminal. The third thing people actually go to that machine for was reachable only by opening the Interac...

Kamo·1w ago
FixEmailService

A rebuild of the same commit deployed nothing and reported success

The image is tagged with the commit SHA, so rebuilding the same commit produces an identical image reference. `kubectl set image` then changes nothing, the Depl...

Kamo·1w ago
Fixkamo-internal

Make Add Source actually connect Google and Microsoft

The Manage Sources dialog on the Contacts page had the same defect as the CalDAV/CardDAV settings tab, on a screen ordinary members reach rather than one behind...

Kamo·1w ago
Featurekamo-internal

Finish the personal calendars panel, and put it where a member can reach it

PersonalProviderSection was scaffolding that nothing rendered, and it would not have worked if it had: it read GET /member/{id}, a route that did not exist, so ...

Kamo·1w ago
FeatureEmailService

Let a member connect their OWN calendars and contacts

The personal calendars panel asked for GET **************** which was never mapped -- so it failed on every open -- and for Google and Microsoft it had no way t...

Kamo·1w ago
FixSecurityService

Merge the digest output instead of declaring a second outputs block

The previous commit added an `outputs:` key to a job that already had one. Forgejo's parser rejects a duplicate mapping key and skips the workflow entirely, so ...

Kamo·1w ago
FixSecurityService

A rebuild of the same commit deployed nothing and reported success

The image is tagged with the commit SHA, so rebuilding the same commit produces an identical image reference. `kubectl set image` then changes nothing, the Depl...

Kamo·1w ago
Fixkamo-shared-library

Bring the organization inside the retried read instead of leaving it to fire later

Member.organization is LAZY, so findById left a proxy behind and the real SELECT happened whenever something first dereferenced it. Under open-in-view that is t...

Kamo·1w ago
FixMediaService

Build the sender's avatar URL from their org, not the request host

A chat notification's senderAvatar was resolved from X-Forwarded-Host, falling back to the server name. Both kamo-internal's BFF and APIService reach this servi...

Kamo·1w ago
FixKlusterServices

Four workers on a node that can hold them, not two on one that cannot

Correcting the previous commit, which was half right and caused a short outage. The memory diagnosis was correct: four workers, each loading its own ~3GB copy ...

Kamo·1w ago
Featurekamo-internal

Gate the user account on platform rights, not on which org owns it

Authored in a concurrent session on this machine and committed here at the user's request; recorded so the provenance is not guessed at later. The user account...

Kamo·1w ago
Fixkamo-internal

A 404 costs 1.45 MB, which is how a scanner took the site down

Next's not-found is a PAGE. It renders through the root layout, which resolves the tenant's organization over the network and serializes the whole app shell and...

Kamo·1w ago
FixTranslateService

Stop working on translations whose caller has already given up

Three attempts of ninety seconds plus backoff is up to 274 seconds of work per translation, and every caller we have gives up long before that — KBService's cli...

Kamo·1w ago
FixKBService

Stop the sweep re-translating the twenty locales that already worked

An article holding 20 of its 21 locales is "incomplete", so the ten-minute sweep re-queued it — and the translator then re-translated all 21, paying twenty time...

Kamo·1w ago
FixKlusterServices

Give the translation models room to stay resident, and refuse a scanner

libretranslate ran 4 gunicorn workers against a 12Gi limit, and each worker loads its own ~3GB copy of the argos model set — 11.8GB resident, 98% of the limit, ...

Kamo·1w ago
Fixkamo-internal

Map a provider's own folders onto the standard ones, wherever they sit

The last fix pinned a folder by the role the server gave it and still left a member on Google Workspace looking at "[Gmail]" among their own folders with their ...

Kamo·1w ago
FeatureEmailService

Give every provider's folder tree the same shape before any client sees it

Reporting a folder's SPECIAL-USE attribute was not enough, because a server only sends one if it is configured to — and the KamoMail Dovecot in production sends...

Kamo·1w ago
Fixkamo-internal

Say whether a DAV server's credentials are already stored

The Apple iCloud / custom CalDAV panel shows four empty boxes whether or not a username and password are on file. It cannot do otherwise -- a stored password is...

Kamo·1w ago
FixEmailService

Stop one member reaching another's calendar integration, and stop the endpoints handing out the credential

Two defects on the /settings/integrations/member endpoints, both live and both reachable by any signed-in member. The id was the only access control. Every /me...

Kamo·1w ago
Fixkamo-internal

Keep the folder in the path too, wherever it can survive there

The endpoints prefer the query parameter, but they are deployed separately from this code, and a browser that loads the new bundle a minute before EmailService ...

Kamo·1w ago
FixVOIPService

Stop a bad service-user JWT from disabling every member's softphone

Minting from a member's own JWT called configFactory.require(inst), which insists the phone server's SERVICE-USER JWT is present and well-formed. That credentia...

Kamo·1w ago
Testkamo-internal

Cover the arrangement the Gmail sidebar actually asks for

The classification is tested in folderTargets; this is the call the sidebar makes with it. None of Gmail's well-known folders is a root and none is named anythi...

Kamo·1w ago
FixEmailService

Create a subfolder under its parent, not beside it with a dot in its name

createFolder joined a parent to a new folder's name with a hardcoded ".". On Gmail, which separates its hierarchy with "/", that produced a top-level folder lit...

Kamo·1w ago
Fixkamo-internal

A role with no slot in the pinned block leaves the folder unpinned

indexOf answers -1, and -1 is not null, so a role that ever lost its place in PINNED_ROOT_ORDER would have pinned its folder ahead of the inbox rather than fall...

Kamo·1w ago
FixVOIPService

Bound the sign-in failure message carried back in the redirect

The RingCentral callback puts the server's own sentence in the query string so the member's tab can say what actually went wrong — nearly always an unregistered...

Kamo·1w ago
RefactorVOIPService

Keep "is this member connected" in one place

RingCentralMemberOAuthService had its own hasConnection and connectedExtensionNumber, and both answered only for the sign-in half. A member can hold either cred...

Kamo·1w ago
FixEmailService

Take the folder from the query, so a Gmail folder can be addressed at all

The folder travelled as a path segment, and Gmail separates its hierarchy with "/" — its Sent folder is `[Gmail]/Sent Mail`. There is no way to put that in one ...

Kamo·1w ago
TestEmailService

Pin the two rules that let an OAuth grant and typed-in DAV credentials share a row

An org-level ContactIntegration holds either a typed-in DAV URL and password or an OAuth grant, and the CalDAV/CardDAV tab writes to that one row from two indep...

Kamo·1w ago
FixVOIPService

Revoke a reassigned member's RingCentral sign-in, don't just forget it

Offboarding deleted the member's credential row when they were moved off a phone server. That was the whole job while the credential could only be a JWT — Kamo ...

Kamo·1w ago
Stylekamo-internal

Restore FolderSidebar's CRLF line endings

The previous commit rewrote the file through a text-mode tool, which flattened every line ending and turned a 66-line change into a 2755-line diff. Content is b...

Kamo·1w ago
Featurekamo-internal

Make Connect via OAuth on the CalDAV/CardDAV tab actually connect

The button raised alert('OAuth flow not yet implemented - configure credentials manually via the API'). It now opens the real Google Workspace / Microsoft 365 c...

Kamo·1w ago
ChoreVOIPService

Make the RingCentral member redirect URI configurable

The sign-in hop's redirect URI was only the @Value default. It belongs beside the other two redirect properties: unlike them it is never re-hosted onto the tena...

Kamo·1w ago
Fixkamo-internal

Make Gmail's folders open, and list them as folders rather than paths

Two faults, both from the client deciding for itself things only the mail server knows. **"Failed to load messages."** The folder travelled as a path segment, ...

Kamo·1w ago
FeatureEmailService

Connect Google and Microsoft calendars over OAuth, on the app the mailbox already uses

The CalDAV/CardDAV tab's Connect via OAuth button raised an alert saying the flow was not implemented and to configure credentials through the API. It now runs ...

Kamo·1w ago
Fixkamo-internal

Offer a RingCentral sign-in, not a JWT box, on every member

The per-member credential card had exactly one control: paste a RingCentral JWT. A RingCentral JWT is minted per user inside the developer console, by a user wh...

Kamo·1w ago
FixVOIPService

Let a RingCentral member sign in instead of minting a JWT

A member's phone-settings tab asked for a JWT credential, and that was the only way to connect them. A RingCentral JWT belongs to one user and is minted by that...

Kamo·1w ago
Stylekamo-internal

Double the scrollback bar's width

16px to 32px. A terminal scrollbar is not chrome to be tucked out of the way — it carries four buttons that get pressed deliberately and a grip dragged over a l...

Kamo·1w ago
Featurekamo-shared-library

Retry the member reads that fail first after a DDL

The member-by-id load is close to the first statement an authenticated request performs, so a catalog-version bump hits it before it hits anything else. That is...

Kamo·1w ago
FeatureMediaService

Send the sender's avatar with the message and its push

The chat notification carried `senderAvatar: ""` with the comment "avatar resolved on frontend", and the push carried no avatar at all. A browser can resolve on...

Kamo·1w ago
FixEmailService

Report the folder separator and special-use role so Gmail's folders are recognisable

A member on Google Workspace saw every one of their folders listed under "My folders" with its raw path for a label — "[Gmail]/Sent Mail", "[Gmail]/Spam" — and ...

Kamo·1w ago
Fixkamo-internal

Make the scrollbar scroll the shell, because the scrollback is not here

The bar moved xterm's own buffer, and under tmux that buffer never grows: tmux sends the client only the lines that end up visible and keeps the history itself....

Kamo·1w ago
FixKlusterServices

The terminal had no scrollback to scroll, so turn tmux's mouse on

for anything else. I built it against a bare xterm.js writing its own output and never against the real pipeline, which is the whole of the mistake. tmux is a ...

Kamo·1w ago
Featurekamo-shared-library

Retry a transactional method in a NEW transaction, and stop rights failing open

Two fixes that only make sense together. @RetryOnDbConflict retries a method OUTSIDE its transaction, so each attempt begins a fresh one. Retrying inside the t...

Kamo·1w ago
Featurekamo-marketing

Say what the Free plan does not charge, beside what the paid ones do

Now that Starter and Business each carry a one-time charge on the card, a Free card that says nothing about it invites exactly the wrong inference — the reader ...

Kamo·1w ago
PerformanceKlusterServices

Narrow the window a DDL leaves behind for stale backends

Applying DDL bumps the catalog version, and backends still holding the old one fail their next statement with SQLState 40001 until they are recycled. The last o...

Kamo·1w ago
Fixkamo-marketing

Make the startup fee findable — discreet is not the same as hidden

The note shipped at #8c8c8c with no spacing, wedged between the bright green term line and the plan description. That is DARKER than the body copy beneath it, s...

Kamo·1w ago
Fixkamo-internal

The end-terminal confirm was unreadable over the row behind it

Two things, both about the seam between a navigator and what is beside it. ## The confirm had no surface of its own A terminal row's actions sit OVER the row ...

Kamo·1w ago
Fixkamo-login

Make the strike meter agree with its own caption, and read aloud

Three things the screen was getting wrong, all found by looking at it rather than by running it. The bar was a TALLY of failures, wrapping every five segments....

Kamo·1w 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