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 7, 2026
Featurekamo-internal

Download the executed document, and choose a real signing order

The sender had no route to the finished document at all. EnvelopeSummary advertised a signedDocumentUrl pointing inside the kamo-signer app's own BFF, authentic...

kamo·1mo ago
FixSecurityService

Keep co-borrowers on one routing order

deriveSigners numbered borrowers 1, 2, 3… as a display index. ESigService now ENFORCES routing order instead of merely reporting it, so leaving the counter in p...

Kamo·1mo ago
FixESigService

Close out the signing lifecycle — notices, routing, guards, expiry

Everything after a signer presses Finish was incomplete. Notices: an envelope's last signature produced a flattened PDF in MinIO that only the final signer eve...

Kamo·1mo ago
FeatureEmailService

Preview variables for the e-signature templates

The admin template editor renders every placeholder blank for a key with no sampleVariables arm, so the seven esign templates previewed as a page of empty gaps ...

Kamo·1mo ago
Featurekamo-shared-library

The five envelope-lifecycle email templates that were never written

An e-signature envelope had exactly two templates: the invite and the step-up code. Nothing existed for anything that happens AFTER a signer signs — which is wh...

Kamo·1mo ago
Featurekamo-internal

Rebuild the mortgage market settings into seven coherent tabs

The MORTGAGE market page carried fifteen tabs, twelve of them lender config, and several answered the same question in two places: hedging was switched on under...

kamo·1mo ago
Featurekamo-internal

Pick the From address from a searchable dialog, not a dropdown

A select cannot hold this list. Everything the /messages switcher offers is sendable, and for a member with ACCESS_ALL_MEMBER_MAILBOXES that is every mailbox in...

kamo·1mo ago
FeatureEmailService

Searchable, paged endpoint for the addresses a member can send from

GET /api/email/mailboxes/sendable answers the same question as /accessible — every address the member may send as — but as one merged stream that is searched an...

Kamo·1mo ago
FeatureMediaService

Report the caller's claimable ticket queue

Kamo·1mo ago
Fixkamo-internal

Match the TypeScript DTOs to the Java ones they proxy

/api/webinar/* is a passthrough, so every TS field name that drifted from the Java DTO silently read as undefined instead of failing to compile. The settings ta...

kamo·1mo ago
FeatureMediaService

GET /types/{typeId}/slots so the settings editor can list slots

The settings UI has always fetched this path, but only POST/PUT/DELETE were mapped, so the Availability Slots tab got a 405 and rendered empty. Unlike /slots/av...

Kamo·1mo ago
Docskamo-internal

Record the compatibility bridge and what retires it

The bridge is invisible from the code that will eventually delete it -- the field looks like a real part of the request. Name the condition that ends it: Securi...

kamo·1mo ago
Featurekamo-internal

Assign a mailbox to a department and to the organization

The department dialog's contact email was free text, so it could name an address the org does not own. It becomes a picker over the org's real mailboxes -- the ...

kamo·1mo ago
FeatureInitializerService

Mailbox pointers for departments and orgs, and backfill the departments

DEPTS.MAILBOX_ID and ORGS.CONTACT_MAILBOX_ID, both plain UUID with no FK to email_provider.mailboxes: mailboxes sync from external providers and can be removed ...

Kamo·1mo ago
Fixkamo-internal

Populate the Quick Tips and use the shared help primitives

The scheduled-support tips rendered four placeholder strings ("How Step1"…); replace them with real guidance covering the type → presenters → slots → reminders ...

kamo·1mo ago
Fixkamo-internal

Compose from the mailbox you have open, and offer every one you can access

New Message opened the composer on the member's default mailbox: only onBehalfOf was passed, and only for another member's mailbox, so a personal or shared mail...

kamo·1mo ago
Featurekamo-shared-library

Let a department and an org point at one of their mailboxes

A department's contact email was free text, so it could name an address the org does not own -- two of the three departments with one set today do exactly that....

Kamo·1mo ago
Featurekamo-internal

A Manager field on Position, and one people picker for the whole app

The Position card gains Manager, optional. It is a search, not a dropdown: an org can hold thousands of names, and the only thing a select with all of them guar...

kamo·1mo ago
FeatureSecurityService

Set a manager, and search the directory a page at a time

GET **************** answers one page of the session org's directory. Search, ordering and paging happen in the database; a hostile ?size= is capped. Words are ...

Kamo·1mo ago
Featurekamo-shared-library

A manager, and a directory search that survives a big org

TeamMember gains an optional self-reference for who it reports to. columnDefinition is pinned to INT8 so Hibernate cannot copy Member.ID's DEFAULT unique_rowid(...

Kamo·1mo ago
FeatureInitializerService

Give a team member a manager

Adds MANAGER_ID to member_team_member, a nullable self-reference for the reporting line. Nothing is backfilled: no manager is a complete answer, both at the top...

Kamo·1mo ago
FeatureInitializerService

Add DEPTS.PARENT_DEPT_ID for nested departments

Nullable with no backfill -- null means top level, which is what every existing department was and most will stay. Declared plain UUID with an explicit DROP DE...

Kamo·1mo ago
FeatureSecurityService

Thread the parent department through create and update

DepartmentService now takes its request DTO instead of eight positional arguments, so the parent joins the payload rather than becoming a ninth in a row of same...

Kamo·1mo ago
Featurekamo-internal

Draw departments as an org chart with a parent picker

The departments tab was a flat list, so an org with Operations > Customer Success > Onboarding had no way to say so and no way to see it. Add/edit gets a Paren...

kamo·1mo ago
Featurekamo-shared-library

Let a department sit under a parent department

Departments were a flat list, so an org chart with Operations > Customer Success > Onboarding had no way to say so. Department gains an optional self-referencin...

Kamo·1mo ago
Featurekamo-internal

Grow the To/Cc/Bcc fields to three rows, then scroll

The recipient fields in the compose tool window were a single nowrap row that had to be dragged sideways to read, and the window is 360px wide and not resizable...

kamo·1mo ago
FixSecurityService

Stop losing organizations to swallowed exceptions, and accept the full create payload

createOrganization could destroy a customer's signup and report nothing useful. Transaction integrity: - Five Docstors ran behind try/catch that only looked sa...

Kamo·1mo ago
Featurekamo-internal

Make org creation survivable, and offer every branding option up front

The wizard could fail a customer in ways nothing on screen explained, and it asked for a fraction of what Settings → Behavior & Labeling exposes. Creation reli...

kamo·1mo ago
FixAPIService

Encode the decoded token exactly once on the way upstream

21670e5 routed SocialWebhookController through UpstreamUri's FULLY-PRE-ENCODED entry point, but its URL is a hybrid: `token` is an @PathVariable, so Spring hand...

Kamo·1mo ago
Fixkamo-internal

Make the create-account form tell you what happened

Creating an account from a lead appeared to do nothing. The server was returning a 500 (see the AccountAddress fix in kamo-shared-library), but the only error U...

kamo·1mo ago
Fixkamo-internal

Make the create-account form tell you what happened

Creating an account from a lead appeared to do nothing. The server was returning a 500 (see the AccountAddress fix in kamo-shared-library), but the only error U...

kamo·1mo ago
FixSecurityService

Make account creation atomic, org-scoped and rights-gated

createCustomer saved the Account before writing its addresses, and was not transactional — so when the address insert failed, the half-built Account stayed comm...

Kamo·1mo ago
Fixkamo-internal

Keep the right-click menus inside the viewport

Right-clicking a folder low in the sidebar opened its menu below the fold. The flip-at-the-edge logic was there but never ran: the component returns null until ...

kamo·1mo ago
Fixkamo-shared-library

Stamp AccountAddress dates so an address can actually be saved

DATE_CREATED is NOT NULL with a DEFAULT now(), but nothing ever set the field. Hibernate names every insertable column in its INSERT, so it sent an explicit NUL...

Kamo·1mo ago
FixAPIService

Forward the caller's query bytes on the public-facing proxies

The gateway stopped double-encoding forwarded query strings in 3c24d32, but four other proxies in this service still concatenated already-percent-encoded bytes ...

Kamo·1mo ago
Featurekamo-internal

Send the editor's back button where the member came from

The wallpaper editor was a dead end — no way out but the nav rail. Both entry points (the home top-bar chip and the member profile header shortcut) now stamp th...

kamo·1mo ago
Fixkamo-internal

Stop a menu click on an open settings page from bouncing back, and repair the dead tab links

Clicking Apps & Features (or Stats & Costs) while /settings/account was already open landed on the tab you came from. Next.js swaps the query string without rem...

kamo·1mo ago
Featurekamo-internal

Show a primary mailbox under its member's profile name

A mailbox held as somebody's primary is that person's address, so suggesting it as "Sales Desk" — whatever it happened to be labelled when it was provisioned — ...

kamo·1mo ago
FeatureEmailService

Name a primary mailbox after the member who holds it

A mailbox someone holds as their primary is that person's address, so presenting it under whatever the mailbox was labelled at provisioning time — "Sales Desk" ...

Kamo·1mo ago
Fixkamo-internal

Stop the tab content overflowing and touching the walls

Two causes, both mine. No padding. TabPanel deliberately supplies none — every tab pads itself, and I had not. The shell now uses p:{xs:3,md:4}, matching MyAcc...

kamo·1mo ago
Fixkamo-internal

Float the label off the placeholder on name prefix/suffix selects

MUI derives InputLabel shrink from `filled || focused || adornedStart`, and `isFilled({value: ''})` is false. Any select that still paints something while empty...

kamo·1mo ago
Fixkamo-internal

Send the timeline provider filter as repeated params, not a CSV

socialTimelineApi.timeline set providers to a joined CSV. A comma in a query VALUE travels as %2C, and any hop that re-encodes turns that into %252C — APIServic...

kamo·1mo ago
FixMediaService

Accept the timeline provider filter as repeated params

The web client sent ?providers=facebook,x as one CSV value. A comma in a query VALUE has to travel as %2C, and a hop that re-encodes turns that into %252C; we d...

Kamo·1mo ago
FixAPIService

Forward the caller's query bytes instead of encoding them twice

Every URL this gateway builds is assembled from getRequestURI() and getQueryString() — both already percent-encoded — and was then handed to RestTemplate as a S...

Kamo·1mo ago
Fixkamo-internal

Ask before any bulk action, not just the folder ones

Emptying and deleting a folder already confirmed. Everything else that moves mail or rewrites its read state did not — it ran the moment the icon was hit. The s...

kamo·1mo ago
Fixkamo-internal

Stop money fields loading a value that fails their own validation

The API stores money as NUMERIC(19,4) and serialises it with toPlainString(), so the shipped $50.00 minimum withdrawal arrived as "50.0000". Both money inputs a...

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