Live Change Log

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

17,987
Total Changes
4,647
Features
4,558
Fixes
32
Projects
Filter by project
All Projects17,987AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService386InitializerService302KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,528TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,600kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,328kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,647Fix4,558Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
September 5, 2026
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
FixSecurityService

The lockout warning promised the wrong rung, and the wrong count

The strike meter on the sign-in screen was telling people something the server then did not do. tierFor starts the five-second delay at the SIXTH failure, but a...

Kamo·1w ago
FeatureSecurityService

Expose what a seat change will cost before it is made

Raising a subscription's seat count now raises an invoice — a per-seat startup fee follows the person, so ten hires on a $99 plan is $990 and a large account ru...

Kamo·1w ago
FeatureEmailService

Send an organization's mail as its own domain when its SPF says we may

The From address was chosen by asking who hosts the organization's MAILBOXES. That is a different question from the one that matters, and it was wrong in both d...

Kamo·1w ago
Fixkamo-internal

Point the seat, payment-method and add-on calls at routes that exist

Four calls in posApi addressed REST-shaped URLs — /seats, /payment-method, /addons, DELETE /addons/{id} — and POSController exposes none of them. It has change-...

Kamo·1w ago
Featurekamo-shared-library

Let the console ask what a seat change costs before making it

changeSeats now raises an invoice for the startup fee on new heads, which turns a number in a dialog into a charge — ten hires on a $99 plan is $990, and on a l...

Kamo·1w ago
Fixkamo-marketing

Remove the last "$0 setup" claim, and quote the fee only where it is fixed

Rendering the calculator turned up a claim the first pass missed: its "Included Free!" panel led with "Setup & Implementation — $0", struck through against a co...

Kamo·1w ago
FeatureSecurityService

Record which domains authorize us, so their mail can go out as them

Transactional mail currently picks its From address by asking who hosts an organization's MAILBOXES. That is the wrong question. Whether we may send as chinilaw...

Kamo·1w ago
Featurekamo-shared-library

Record whether a domain's SPF authorizes us to send as it

Two columns beside the ownership and SSL flags, answering the third DNS question about a domain: may we put its name on the From line of the transactional mail ...

Kamo·1w ago
FixSecurityService

A catalog-version bump must not read as "this host has no organization"

Org resolution funnels every lookup through one query helper that swallows the exception and answers Optional.empty(). For an organization that genuinely is not...

Kamo·1w ago
Featurekamo-internal

A put-away terminal's hexhead says whether it wants you

A member with six terminals minimized has one question about each: is that one waiting for me? The head now answers it in a colour. green working — nothing ...

Kamo·1w ago
FeatureSecurityService

Carry a terminal's activity state to the console

TerminalSummary gains `state`: busy, or waiting for its member. Read off the session's transcript — neither of which is knowable from here, which is why it trav...

Kamo·1w ago
Featurekamo-internal

Give a head the app's own tooltip, placed from where it sits

The label was the browser's native `title` box: unstyled, and put wherever the other 291 hover targets in this chrome use, arrow and all. A head is not a norma...

Kamo·1w ago
Featurekamo-marketing

State the startup fee, and stop claiming there isn't one

The site said "$0 setup fees" three times in the pricing page's metadata and listed "No mandatory onboarding fees" as an advantage over HubSpot. All of it is no...

Kamo·1w ago
Featurekamo-internal

Show the startup fee before it is charged, and where a deal overrides it

calculate-price has always returned a setupFee and the order wizard printed it nowhere, so a charge that runs to four figures on a large order reached the custo...

Kamo·1w ago
FeatureInitializerService

Seed the $99 per-seat startup fee on every paid tier

The loader passed null for setupFee on all four plans, so a freshly seeded environment priced onboarding at nothing while production charges $99 a seat — the ki...

Kamo·1w ago
FeatureBillingService

Bill the startup fee on both routes to a plan, and record negotiated terms

Two routes reach the same plan and only one of them was going to charge the new per-seat startup fee. A sales-written order bills through SubscriptionService, w...

Kamo·1w ago
Featurekamo-shared-library

Charge the startup fee, per seat, and let one customer out of it

The startup fee has been half-built for as long as the model has existed. SubscriptionPlan carried a setupFee, SubscriptionOrder carried a setupFee, OrderLineTy...

Kamo·1w ago
Featurekamo-shared-library

Retry the database errors Yugabyte expects a client to retry

Applying DDL bumps the catalog version, and every physical backend still holding the old one fails its next statement with SQLState 40001 — "schema version mism...

Kamo·1w ago
Fixkamo-internal

Retire the SMS provider's test verdict when its credentials change

The same defect as the phone server's Overview tab, one screen across: saving new credentials left the previous Test Connection result on display, so a "Test fa...

Kamo·1w ago
FeatureKlusterServices

Say whether a terminal is working or waiting for its member

Every terminal in the listing now carries `state`: busy, or waiting. It is the one question somebody asks of a window they cannot see, and it is what a minimize...

Kamo·1w ago
FixSecurityService

Restore SpfAdvisoryService, which main no longer compiles without

45829a6 deleted this file. Nothing in that commit wanted it gone — it was a staged deletion of mine that a concurrent `git add -A` picked up, and the same commi...

Kamo·1w ago
Fixkamo-internal

Catch the app credentials pasted into RingCentral's JWT box

Two things went wrong on the same screen, and together they produced a settings page showing a green "Credentials complete" chip above a red "RingCentral instan...

Kamo·1w ago
FixVOIPService

Tell a RingCentral JWT from the app credentials pasted into its box

An org pasted its RingCentral app's credentials JSON — the {"clientId": …, "clientSecret": …, "server": …} blob the developer console shows on the same page as ...

Kamo·1w ago
Featurekamo-internal

Pick the model and effort before starting a coder session, once

Send To AI dialog has, and the two are the SAME choice rather than two. Somebody who has settled on Sonnet at High has settled on it. Re-picking in the other p...

Kamo·1w ago
FeatureSecurityService

Carry the member's model and effort to a coder session

and deliberately not examined here. `coder_flags` on the agent is the one thing that decides what a session runs with — its own comment calls it "the security ...

Kamo·1w ago
FeatureKlusterServices

Let a coder session run at the model and effort the member picked

for a new session and for a resumed one alike, since `--model` and `--effort` are per-session flags either way. They are the ONLY part of the command a caller ...

Kamo·1w ago
Featurekamo-internal

Name a hexhead after the window it stands for

A hexhead's tooltip read "User w12" — the head id, which is the window id, in a string written for member avatars. A dock of six minimized windows was six ident...

Kamo·1w ago
Fixkamo-internal

Point the integrations proxy at the path EmailService serves

The Manage Sources dialog forwarded to /api/settings/integrations, which EmailService does not map — its controller is at **************** Every request from th...

Kamo·1w ago
FixAPIService

Drop the /api/settings forward, which pointed at nothing

EmailService serves the sync-integration controller at **************** not /api/settings/integrations — so that forward reached a path the service does not map...

Kamo·1w ago
Fixkamo-internal

Say why a mailbox sync failed, and what key is on file

Two silences that made a working Google Workspace connection read as broken. The mailbox sync caught the provider's rejection and dropped it. Google refuses th...

Kamo·1w ago
FixEmailService

Stop a provider config save from discarding another form's fields

Every config panel posts only the fields it owns, flat, alongside the provider type -- the Google Workspace panel sends nothing but serviceAccountJson. PUT /api...

Kamo·1w ago
FixAPIService

Route /api/contacts, /api/calendar and /api/settings to EmailService

KamoMobile's contacts and calendar screens 404'd on every request. Neither path was routed at the api host, so nothing reached EmailService and the service logg...

Kamo·1w ago
FixKlusterServices

Send To AI must not open a tab in sage's editor

A Send-to-AI hand-off is hosted in a Remote Terminal the operator is already watching in the console. On top of that, the agent also handed the session to VS Co...

Kamo·1w ago
FeatureSecurityService

Refuse a sign-in whose host names no organization

Such a host could sign in until now. It fell through to the workspace-choice path and succeeded on membership alone, which made it a door where none of the tena...

Kamo·1w ago
FixKlusterServices

Restarting the agent must not kill every member's shells

mid-work today, and would have taken every other member's terminals with it. systemd's default is KillMode=control-group: on stop or restart it SIGKILLs every ...

Kamo·1w ago
FeatureKlusterServices

A coder terminal wears the name coder gave the conversation

running had long since been titled "Startup fee implementation and Harmony account adjustment". Two separate things were swallowing that name. **The listing.**...

Kamo·1w ago
Featurekamo-internal

Show the sign-in lockout as a rule that cannot be switched off

SecurityService now applies a progressive sign-in lockout to every organization whether or not a row exists for it — five free attempts, then five seconds, then...

Kamo·1w ago
FixSecurityService

Name the constructor Spring should use, or the context will not start

My own regression, and the second context-startup break on this service today: Error creating bean with name 'terminalTicketRegistry': Failed to inst...

Kamo·1w ago
FixSecurityService

Let Spring pick the terminal registry's constructor

SecurityService has been crash-looping on every new pod since the shared handoff store landed: "No default constructor found" for TerminalTicketRegistry, which ...

Kamo·1w ago
Featurekamo-login

Show the progressive lockout, so a held sign-in explains itself

The server now refuses sign-ins on a ladder — five free attempts, then five seconds, then locks of five, fifteen and thirty minutes, then a permanent block. Wit...

Kamo·1w ago
Chorekamo-meet

Rebuild now the registry's stale blob-descriptor cache is cleared

ROOT CAUSE, for the next person who sees "short read: expected N bytes but got 0: unexpected EOF". The registry runs storage.cache.blobdescriptor: inmemory. Bl...

Kamo·1w ago
Chorekamo-marketing

Rebuild — the previous run never produced an image

f0edd01 was pushed with the rest of the fleet-wide rollout-safety work and is the only one of that batch whose image never appeared: the deployment is still run...

Kamo·1w ago
FeatureSecurityService

Progressive sign-in lockout, escalating to a permanent IP block

A wrong password now costs something, and the cost climbs. Counted since the subject's last successful sign-in: the first five failures are free, the sixth and ...

Kamo·1w ago
Chorekamo-meet

Rebuild after clearing the registry's dangling layer links

The previous two builds (2862548, dd323bc) both produced images that could not be pulled: short read: expected 3985350 bytes but got 0: unexpected EOF Cause...

Kamo·1w ago
Fixkamo-register

Tell the server which organization the resend is for

The verification screen's Resend button has been reporting success and sending nothing for every organization except the platform's own. `host` already rides i...

Kamo·1w ago
FixSecurityService

Resend the verification e-mail under the organization the member is actually on

Nobody at a white-labelled organization has been able to ask for a second verification e-mail. The screen said the letter was on its way every time, and no lett...

Kamo·1w ago
September 4, 2026
ChoreSecurityService

Say out loud when a registrant is left with no verification token

The register endpoint caught a failed verification send and logged warn(e.getMessage()). For the fault it kept hitting — EmailService raising a Yugabyte read re...

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