Live Change Log

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

September 5, 2026
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Β·9m 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Β·12m 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Β·13m 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Β·14m 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Β·14m 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Β·15m 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Β·16m 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Β·16m 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Β·17m 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Β·18m 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Β·19m 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Β·19m 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Β·19m 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Β·20m 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Β·20m 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Β·21m 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Β·21m 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Β·23m 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Β·28m 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Β·38m 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Β·46m 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Β·55m 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Β·55m 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Β·1h 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Β·3h 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Β·3h 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Β·3h 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Β·3h 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Β·3h 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Β·3h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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Β·4h 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