Live Change Log

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

17,933
Total Changes
4,614
Features
4,543
Fixes
32
Projects
Filter by project
All Projects17,933AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService373InitializerService300KBService74KlusterServices546MCPGatewayService43MediaService461RAGService61SecurityService1,523TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,579kamo-login319kamo-marketing585kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,322kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs226Feature4,614Fix4,543Other6,781Performance136Refactor274Revert23Style48Test70Upgrade1
August 6, 2026
FixDocsService

Guard the destructive imaging paths and make the repair reachable

DELETE /imaging/delete/{imgId} is the one destructive imaging path and was not wired to the issued-document guard. ImageService.deleteDocument authorizes on org...

Kamo·1mo ago
Fixkamo-internal

Restore the profile header wallpaper and wire its controls to the editor

The band behind the avatar on **************** had gone flat gradient. Not the wallpaper feature — ae85a8ae routed the header's photos through next/image + safe...

kamo·1mo ago
Fixkamo-internal

Sit the head tabs on the header's bottom edge and flatten the identity row

The tab strip was vertically centred in a row whose height was set by the action cluster beside it — a default-size More icon button (40px) plus the cluster's o...

kamo·1mo ago
FixDocsService

Stop colleagues reading a member's HR-issued documents

isPerPartyRestrictedAssoc covers only ACCOUNT_MEMBER_VAULT and LOAN, so assoc 1 — SERVICE_APPLICATION, what /settings/member/{id}?tab=docs renders — has no per-...

Kamo·1mo ago
FixEmailService

Restore the files 2b23346 dropped, and answer an oversized send with 413

2b23346 was committed through a private index that was never seeded from HEAD, so its tree held only the three files staged into it and the commit deleted the o...

Kamo·1mo ago
FixMediaService

Store attachments through the dedup pipeline instead of one object per upload

Attachments wrote their own "<imgId>/<fileName>" object on every upload, bypassing the content-addressed store entirely — the same logo-draft.png attached three...

Kamo·1mo ago
FixEmailService

Stop capping every send at 1MB, so a pasted image can actually go out

Composing with a pasted image failed with a bare "Failed to send email". The composer inlines the paste into the body HTML as a base64 data URI, which rides in ...

Kamo·1mo ago
FixDocsService

Resolve the document bucket from ImageAssocType.BUCKET

DocumentService hardcoded "imaging-mydocs" while every other read path went through ImageAssocType.getBucket(). Now that storage is one bucket, point it at the ...

Kamo·1mo ago
Fixkamo-shared-library

Store every image in one bucket so dedup means one copy

Association is metadata, not a storage boundary. Each ImageAssocType used to name its own MinIO bucket, which contradicted the hashing pipeline: dedup is scoped...

Kamo·1mo ago
FixDocsService

Wire DocsService to ESigService so Deliver stops 503ing

LegalEsignClient.isConfigured() was false in the cluster: neither internal.auth.secret nor legal.esig.service-url was supplied, so Deliver refused every package...

Kamo·1mo ago
FixESigService

Put memberId on RecipientSummary, and stop the IP check DNS-resolving

A caller that acts on a recipient's status has to be able to establish WHOSE status it is. DocsService's legal-package Finish writes a WORM attestation on the s...

Kamo·1mo ago
FixDocsService

Prove WHOSE signature Finish counts, and report the live one

verify() compared the caller to assignment.teamMemberId but never to the ENVELOPE RECIPIENT's member — it trusted the recipientUid the delivery fan-out wrote. A...

Kamo·1mo ago
Fixkamo-internal

Let a member actually finish a package, and reach the page at all

canFinish required every document row to already be SIGNED/ACKNOWLEDGED, but **************** is the ONLY writer of those statuses — the delivery worker writes ...

kamo·1mo ago
Fixkamo-internal

Drop the outer padding around the member Docs tab

DocManager brings its own toolbar and grid chrome, so the p:4 inset just shrank the grid and left a visible gap the /hr/resources page does not have. Matches th...

kamo·1mo ago
Fixkamo-shared-library

Copy a deduplicated document's objects into its own association bucket

Object storage is bucket-per-association (every reader resolves img.getAssocId().getBucket()), but deduplication is scoped ORG-wide or GLOBALly and so crosses a...

Kamo·1mo ago
Fixkamo-internal

Cap the legal audience roster, and refresh after Deliver

The Assigned Packages grid filled its team-member filter column by asking audience-preview for allTeamMembers:true on mount -- a name and an email address for e...

kamo·1mo ago
FixDocsService

Commit before the fan-out, and stop redeliver reissuing nothing

Redeliver published the new version row, flipped every OPEN assignment to SUPERSEDED, and submitted the reissue from inside that same uncommitted transaction. T...

Kamo·1mo ago
FixDocsService

Widen the read gate to match hrTabs.ts, make a cleared due date actually clear

LegalPackageAccess.requireRead demanded VIEW_EMPLOYEES alone while hrTabs.ts admits the Legal & Compliance tab on VIEW_EMPLOYEES || EDIT_EMPLOYEES || MANAGE_HRS...

Kamo·1mo ago
Fixkamo-internal

Wire publish and audience preview, and stop rendering a broken label

publishPackage, previewAudience and getPackage shipped with no caller. The templates grid now has a Publish row action — disabled when the package has no binder...

kamo·1mo ago
FixDocsService

Enforce HR rights and make the fingerprint see the e-sign design

All seven /api/docs/legal mappings authorized on org membership alone, so any authenticated member could list, edit, delete and publish legal packages — and aud...

Kamo·1mo ago
Fixkamo-internal

Restore external images in email bodies

External images stopped rendering when the page-level image policy shipped. The middleware sets `img-src 'self' data: blob: https://theme.<apex> https://*.<apex...

kamo·1mo ago
Fixkamo-internal

Cap the send dialog's recipients at the template's declared slots

The Send for signature dialog seeds one recipient row and offers an unbounded "Add recipient", but it never fetched the template's signer slots. ESigService rej...

kamo·1mo ago
FixESigService

Let a send under-fill a template's signer slots, keep rejecting over-fill

The signer-count check added last round demanded an EXACT match against the template's declared slots, which would have silently stopped mortgage disclosures go...

Kamo·1mo ago
FixESigService

Complete delegated envelopes, and reject a bad signer count before sending

envelopeComplete required a literal SIGNED from every recipient, but delegate() leaves the delegator DELEGATED forever and ADDS the replacement instead of subst...

Kamo·1mo ago
FixESigService

Scope a decoder to the recipient who decoderd

Any single recipient declining set the whole envelope DEcoderD, so a counter-signer could destroy signatures the other parties had already given, with no recove...

Kamo·1mo ago
FixESigService

Enforce required fields on the server, not just in the browser

submit() validated only consent and step-up; it accepted an empty values list and still marked the recipient SIGNED. Ports validation.ts (esign-core), including...

Kamo·1mo ago
FixESigService

Bind every recipient to a template signer slot

No caller supplied signerUid, so recipients were created without one. buildSession filters a signer's fields by signerUid, so myFields came back empty, completi...

Kamo·1mo ago
Fixkamo-internal

Drive the mail badge from pushed unread counts, not a 30s poll

MailButton ran setInterval(fetchUnreadCount, 30_000) in every open tab, and each tick called /api/email/folders — an endpoint that opens every folder in the mai...

kamo·1mo ago
FixInitializerService

Fail the run when a required UNIQUE index cannot be created

ensure() caught Exception and logged, so a failed CREATE UNIQUE INDEX reported success and the service booted with no uniqueness guarantee at all — the one outc...

Kamo·1mo ago
Fixkamo-shared-library

Make the audience FKs and the attested wording actually hold

Five defects from the whole-branch review, all in the evidence path. The audience FKs did not cascade. cascade = CascadeType.DETACH is a persistence-context ca...

Kamo·1mo ago
FixDocsService

Enforce document/binder collection scope in addItem

BinderService.addItem checked read access and refused VAULT/LOAN documents, but never compared the document's own collection to the binder's, so a hand-crafted ...

Kamo·1mo ago
FixInitializerService

Scope empty binders to (MY_DOCS, '') not the owner's member id

The My Docs DocManager never passes an assocObjectId prop, so it always resolves and queries (3, ''). BACKFILL_EMPTY_SQL was scoping empty binders to (3, member...

Kamo·1mo ago
Fixkamo-internal

Guard loadBinders by request identity, not scope value

sameBinderScope alone can't tell two in-flight requests for the SAME scope apart (A -> B -> A), so a slower older request could still overwrite a newer one. Tra...

kamo·1mo ago
Fixkamo-internal

Show only the binders belonging to the open collection

OrganizerTab already received assocType/assocObjectId and passed them to the editor's document picker, but loaded the binder LIST unscoped — so every DocManager...

kamo·1mo ago
FixInitializerService

Correct javadoc on Hibernate ddl-auto behavior for NOT NULL columns

CockroachDB rejects ADD COLUMN ... NOT NULL without a DEFAULT on a populated table, so Hibernate's ddl-auto attempt fails (logged, non-fatal) rather than no-opp...

Kamo·1mo ago
Fixkamo-internal

Add a close button to the automated-imports manage dialog

The manage popup had no dismiss affordance in its header — only the backdrop and Esc closed it. Add an X icon button beside the edit action.

kamo·1mo ago
Fixkamo-internal

Tell a tool component when its window is maximized

Maximizing a tool window repaints the shell at 100vw/100vh but leaves the window's stored size untouched, and that stored size is what ToolDock hands the compon...

kamo·1mo ago
Fixkamo-internal

Keep fields on the page when a document opens at a remembered zoom

Reopening a document could draw every field small and up in the corner, until one click of the zoom control snapped them all into place. The page box that fiel...

kamo·1mo ago
Fixkamo-internal

Stop replies drawing a gridded copy of the quoted signature

Replying to a message sent from Kamo showed the signature twice: the live one, and above it a mangled version of the quoted original's, drawn as a bordered spre...

kamo·1mo ago
Fixkamo-internal

Number pages against the document the reader gets

Modifiers were keyed off a page's index in the design, which is an identity that survives deletion and reordering, not a position. So deleting page 2 left the p...

kamo·1mo ago
Fixkamo-internal

Load the number in the softphone without placing the call

Tapping an extension or a number on a correspondent card passed autoDial, so the call went out the moment the softphone registered. The card opens on hover, whi...

kamo·1mo ago
Fixkamo-internal

Give the card's readout labels room to breathe

The label column was a hand-picked 76px. DEPARTMENT is wider than that, so it overflowed its box and sat flush against its value with no gap, and LOCAL TIME wra...

kamo·1mo ago
Fixkamo-signer-monorepo

Group an imported radio field's buttons natively

The buttons of one AcroForm radio field are imported as separate linked fields, one choice each, so each keeps its own box on the page. They were named after th...

Kamo·1mo ago
Fixkamo-internal

Paint the correspondent card in the tenant's brand colour

The card was tinted with --accent-comms, the fixed indigo the instrument panel uses to mark the messages family. On the solid "New message" button that reads as...

kamo·1mo ago
Fixkamo-internal

Stop dark-mode pastes landing as invisible text in the composer

Copying an answer out of ChatGPT (or any dark-themed page) and pasting it into the compose body produced a large white block with nothing in it, and the message...

kamo·1mo ago
Fixkamo-internal

Share the public join link, not the members-only redirect

A meeting link written into an email was pointing at /meet/join/<id>, which mints a one-time key from the clicker's Kamo session — and redirects anyone without ...

kamo·1mo ago
August 5, 2026
FixEmailService

Stop Hibernate mangling the "::" casts in the native SQL

Hibernate's native-query parser treats "::" as an escaped colon and forwards a single ":". CockroachDB received **************** ARRAY[]:text[]), ' ') and r...

Kamo·1mo ago
FixEmailService

Keep retrying the indexer's durable NATS consumer after a deploy

A rolling deploy overlaps pods and the outgoing one still holds the durable consumer, so the incoming pod's bind to "email-metadata-indexer" fails with [SUB-900...

Kamo·1mo ago
Fixkamo-internal

Stop recipient names being clipped to a letter

The chips were inline-flex boxes whose label carried `truncate`. A flex child with overflow hidden is allowed to shrink below its own content, and nested inside...

kamo·1mo ago
FixEmailService

Adapt the metadata indexers to array-typed columns

Follows the kamo-shared-library change that maps conversations/search_index array columns as String[]/UUID[] rather than List<T>, which is what stopped every in...

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