Live Change Log

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

17,966
Total Changes
4,633
Features
4,554
Fixes
32
Projects
Filter by project
All Projects17,966AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService383InitializerService300KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,526TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,589kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,325kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs228Feature4,633Fix4,554Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
September 3, 2026
ChoreSecurityService

Rebuild — the last run died fetching actions/checkout

Run 5861 failed in two seconds, before any compilation: the runner could not reach data.forgejo.org to fetch actions/checkout. Nothing to do with the tree, and ...

Kamo·1w ago
DocsSecurityService

State why the 101 is read before anything is written

The agent parses the request with a buffered reader and then pumps the raw socket, so a byte sent ahead of the status line would be stranded in that buffer and ...

Kamo·1w ago
FeatureSecurityService

Serve Remote Terminal — a real shell over a WebSocket

Bridges a browser to a PTY on the member's own dev machine. Binary frames are the terminal, text frames are control; on the far hop an HTTP 101 onto a length-pr...

Kamo·1w ago
FeatureSecurityService

Send the company alongside the contact wherever a record is labelled

A record that is both an organisation and a person is named "Harmony Home Loans (Nickolas McGarry)" — the company leads, the contact qualifies. That rule lives ...

Kamo·1w ago
FeatureSecurityService

A communications timeline over the whole /leads filter, not one lead

GET **************** takes the SAME query string GET the lead detail page draws — across every lead the filter bar matches. "What has been said to the leads I a...

Kamo·1w ago
ChoreSecurityService

Rebuild against kamo-shared-library 8dc3ea4c

Picks up entitlement-cache invalidation on comp provisioning. This service owns both halves: it approves the order and it serves the cached entitlements, so wit...

Kamo·1w ago
ChoreSecurityService

Rebuild against kamo-shared-library 31b72fe9

Picks up the draft-order reprice fix: changing a draft's seat count or billing cycle left every money field and line item describing the order's previous shape,...

Kamo·1w ago
ChoreSecurityService

Rebuild against kamo-shared-library 63827887

Picks up the comp-provisioning fix. A comped order granted its plan and none of the add-ons it sold, because provisionCompSubscription never wrote active_addon_...

Kamo·1w ago
FixSecurityService

Do not mail a tenant its own domain until that domain is verified

A domain typed into the create form is a CLAIM, not a host. Ownership is proven by a DNS TXT record afterwards and a certificate is issued after that, so betwee...

Kamo·1w ago
FixSecurityService

Stop a failed welcome email from destroying the member

MemberCreationService documented steps 4-6 as best effort, and for the emails it was not true. sendVerificationEmail is @Transactional, so it joined the member-...

Kamo·1w ago
September 2, 2026
FeatureSecurityService

Enter a tenant organization as one of its members, from /network

A second door beside the same-org god-mode one. Gated on the new IMPERSONATE platform right via @RequirePlatformRight, where the existing door is gated on the s...

Kamo·1w ago
FixSecurityService

Open a workspace on its OWN domain, not the host the sign-in was served from

A member who signed in on login.kamocrm.com, picked a workspace from the chooser, and landed inside it — on internal.kamocrm.com, wearing the platform's hostnam...

Kamo·1w ago
ChoreSecurityService

Rebuild against kamo-shared-library HEAD

Ships the lead contact location fix, which lives in the shared library: LeadDTO now returns the lead's own country, subdivision and timezone, so the three Prima...

Kamo·1w ago
TestSecurityService

Hold withTermsUnchanged to carrying every field

The method rebuilds UpdateQuoteRequest positionally, so a field added to that record and forgotten here is dropped from every save by a member without EDIT_QUOT...

Kamo·1w ago
FixSecurityService

Stop dropping setupFee on save, and unbreak the build

withTermsUnchanged rebuilds UpdateQuoteRequest positionally for a member who may not rewrite the terms. setupFee was added to that record and not added here, so...

Kamo·1w ago
ChoreSecurityService

Rebuild against kamo-shared-library HEAD

Ships the quote document work, all of which lives in the shared library: - a one-off setup fee on a single-price quote (commerce_quotes.setup_fee, which is a...

Kamo·1w ago
FixSecurityService

A share link's email was dropped twice before it could be sent

"I created a link and got no email." Two independent silent drops, both of which return a swallowed false that the panel rendered as plain success. 1. kamo.ema...

Kamo·1w ago
ChoreSecurityService

Rebuild against kamo-shared-library HEAD

Ships the quote pricing fix: a unit price is a per-month rate, so a term multiplies it rather than the engine dividing down to it. An annual option quoted one m...

Kamo·1w ago
ChoreSecurityService

Rebuild against kamo-shared-library HEAD

Ships the quote total fixes: a committed term now totals the term rather than one period of it, and a multi-option quote is no longer headlined by whichever alt...

Kamo·1w ago
FeatureSecurityService

A member address signs you into its own org, not every org

A member who signs in with the org mailbox flagged Primary on their member settings was being offered every workspace their user account belongs to. The address...

Kamo·1w ago
ChoreSecurityService

Rebuild against kamo-shared-library HEAD

Ships the quote money fixes, which live entirely in the shared library and so reach production only when this service is rebuilt: - a quote's headline total no...

Kamo·1w ago
FeatureSecurityService

Enforce the platform's visibility, and let it be edited

GET/PUT /api/security/reports/catalog, both gated on MANAGE_REPORTS on the platform spine. The list comes from the REGISTRY, not the override table: an operator...

Kamo·1w ago
FeatureSecurityService

Run the reports that are due, and send them

One internal endpoint, X-Internal-Auth gated and constant-time compared, that DaemonService ticks. The cron stays in the daemon because it is replicas: 1 with s...

Kamo·1w ago
FeatureSecurityService

The lists a share dialog picks from, and a share target that fits every id

GET **************** returns the organization's people, departments and roles as picker options, in one call and in one shape. Built on the reporting option pro...

Kamo·1w ago
FeatureSecurityService

Run, export and schedule the Report Studio's reports

The service half of the framework: the catalogue, the run, the pickers, four exporters, saved views and schedules. Authorization is explicit on every path, bec...

Kamo·1w ago
TestSecurityService

Pin the status-label body an org sends to drop a label

The two shapes that used to fail: an empty list, which is what clearing the last remaining label sends and what the handler rejected as malformed, and an entry ...

Kamo·1w ago
FixSecurityService

Accept a blank status label as the removal it is

The PUT is the org's complete set of custom labels, so it has to be able to carry an emptied box. Two things stopped it: an empty list was rejected as a malform...

Kamo·1w ago
ChoreSecurityService

Rebuild against the shared library that persists the quote contact

The market writer landed one commit after this service was last built, and CI clones kamo-shared-library at image-build time — so the deployed jar still has the...

Kamo·1w ago
FeatureSecurityService

Honour a market's contact rule wherever a quote names somebody

The staff detail, the staff preview and the customer's own page now resolve the contact through one method, so they cannot disagree about who is printed on the ...

Kamo·1w ago
FeatureSecurityService

Page and search the org directory, and stop two row builders drifting

The networks endpoints answer with the whole set in one body. That is fine for a member of a dozen orgs and impossible for an operator on an estate meant to rea...

Kamo·1w ago
August 31, 2026
ChoreSecurityService

Rebuild to pick up BillingCycle.TRIENNIAL

No source change. SecurityService clones kamo-shared-library at image-build time, and the catalog it serves is about to carry TRIENNIAL price rows. @Enumerated ...

Kamo·1w ago
FeatureSecurityService

Put the report title in the message, and let it be corrected

A dispatch composed the operator's instruction and the bug description with the separator between them. The title was never in it, so the session opening the me...

Kamo·1w ago
August 30, 2026
FixSecurityService

The agent health preflight must fail in seconds, not twenty

health() inherited the client's 20-second default. It is a liveness check in front of every KamoDesktop launch, and when the dev machine ran out of memory on 20...

Kamo·1w ago
August 29, 2026
FeatureSecurityService

Bulk-create members and team members, one transaction per record

The two bulk-add screens need to create a spreadsheet of people in one submission and report on each of them individually. That could not be built on the existi...

Kamo·2w ago
FeatureSecurityService

Store the org's deposit account, and print it on quotes

`/api/security/receivables` is where Settings → Account → Receivables reads and writes. Two rights, not one: VIEW_RECEIVABLES reads the tab, MANAGE_RECEIVABLES ...

Kamo·2w ago
FeatureSecurityService

Carry the team member's department in the session

The browser tab is being retitled "{Org} - {role} Portal", and a team member's role is their department — the specific thing they identify with day to day ("Sal...

Kamo·2w ago
FixSecurityService

Stop refusing a domain because somebody else typed it first

Creating an organization 409'd on any existing row for the domain, which meant the first organization to enter "acme.com" locked out every other one — including...

Kamo·2w ago
FixSecurityService

Give the generated favicons the same revalidation requirement as every other theme asset

Replacing an org's simple logo updated every surface that reads img/logo.svg and left the browser tab on the old mark. Generation was never the problem: provisi...

Kamo·2w ago
August 28, 2026
DocsSecurityService

Say in the class contract that the gate can fall open

The header promised "a blocked app's endpoints all 403" without qualification, which is now true only while the entitlement tables can be read. The exception is...

Kamo·2w ago
FixSecurityService

A transient database fault must not 500 the request

The lead Communications tab reported "We couldn't load this lead's communications" for org 1168485648209608710 on 2026-08-28. The endpoint returned 500 five tim...

Kamo·2w ago
FeatureSecurityService

Carry the per-member-type home-screen defaults

Read on POST/PUT /security-models and PUT /master-model, and emitted from /applied-model's settings so the shell can decide where a member lands on "/". A sepa...

Kamo·2w ago
FeatureSecurityService

Send To AI straight off the report form

A holder of MANAGE_SYSTEM_BUGS gets a SEND TO AI switch on the Report Bug window, and submitting with it on hands the report to a session without the triage dia...

Kamo·2w ago
FixSecurityService

Require an open god-mode window, not eligibility alone, for CONFIGURE_SYSTEM

hasRight was granting the bypass on the raw GD session flag, which SessionPlatformFacts's own javadoc names as the exact anti-pattern it exists to prevent: GD i...

Kamo·2w ago
FeatureSecurityService

Add progress service and endpoints behind the Getting Started wizard

Org-scoped GET/PUT/DELETE under /api/security/org-setup-wizard track which of the nine Getting Started steps an organization has completed. A read never creates...

Kamo·2w ago
FeatureSecurityService

Put a real time budget on resend-verification

The endpoint had no limit of any kind. The *** the register screen demanded before enabling its resend button was never read here — the request body is three fi...

Kamo·2w ago
FeatureSecurityService

Seed the master-note widgets from VIEW_NOTES

The two master-note panes shipped with no right at all — "My Master Note" and "Our Master Note" were on every member's launchpad unconditionally — and this is t...

Kamo·2w ago
August 27, 2026
FixSecurityService

Make seeded and uploaded branding revalidate, so an org stops being served the base theme it was seeded with

A new organization is seeded with the base theme — the platform's own logo and backgrounds copied to the new org's keys — and those keys never change when the o...

Kamo·2w ago
FeatureSecurityService

Let the caller choose a fixed KamoDesktop resolution

The remote desktop was never locked to a resolution — it tracks the browser window, and always has. guacd honours the client's size and xorgxrdp resizes the X s...

Kamo·2w ago
FeatureSecurityService

The relay to InvoicingService, and the right that gates it

Task 8. SecurityService is the authorization boundary; InvoicingService is ClusterIP with no ingress, so this relay is the only way in. InvoicingServiceClient ...

Kamo·2w ago
FeatureSecurityService

Tell the reporter when Send To AI moves their report

MediaService now emails a reporter whenever their bug or enhancement changes status, but a dispatch applies a status of its own — usually In Progress — through ...

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