Live Change Log

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

17,852
Total Changes
4,571
Features
4,509
Fixes
32
Projects
Filter by project
All Projects17,852AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService347InitializerService299KBService73KlusterServices539MCPGatewayService43MediaService460RAGService61SecurityService1,516TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,549kamo-login318kamo-marketing580kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI522Chore670Docs226Feature4,571Fix4,509Other6,781Performance136Refactor273Revert23Style48Test68Upgrade1
September 11, 2026
FeatureDocsService

A save reaches every colleague with the template open

A save of a template's file told only the member who saved it, so a colleague with the same template open kept placing fields over pages the file had moved on f...

KamoΒ·12h ago
FeatureDocsService

Read a template's layer by design version

The version history draws a template's fields over each version's pages. It asked for them through a document version (/{imgId}/{n}/design), and a template's wo...

KamoΒ·14h ago
FeatureDocsService

Files and templates, edited in place, with the versions each category keeps

A document was two records: the upload, which nothing edited, and one modified copy derived the first time anyone opened it in either editor. The Docs manager s...

KamoΒ·15h ago
September 9, 2026
FeatureDocsService

Serve the document categories from the enum that defines them

The docs settings page named its own categories and sent the ordinal it believed each one had. Those ordinals were written when ImageAssocType was six constants...

KamoΒ·1d ago
September 6, 2026
FeatureDocsService

Gate the member board on being a team member with a role open

The member Careers tab now appears on two conditions and no right among them: the viewer is a team member, and the organization has at least one posting open an...

KamoΒ·5d ago
September 5, 2026
FeatureDocsService

Retire applying without an account, and notify both sides of one that lands

The public board's Apply button is now a link into registration, so this drops the endpoints behind the old form: /{orgRef}/apply/{uid} in both content types, /...

KamoΒ·5d ago
September 4, 2026
FeatureDocsService

Lock the shared sweeps, and run two pods

Every @Scheduled sweep here whose effect is shared now takes a named distributed lease through SingletonTaskRunner before it does anything, so it runs once acro...

KamoΒ·6d ago
FeatureDocsService

The CV reader, employee referral links, and the form shape on the public listing

Three things the public careers site needed from this service. The form shape now rides on the public listing (the twelve ask* settings, the additional-info pr...

KamoΒ·1w ago
FeatureDocsService

Apply-first, the job network, alerts, translation and retention

Eight things, all behind the anonymous careers surface, and all sharing the rules the single-org board already enforces rather than growing their own. APPLY-FI...

KamoΒ·1w ago
FeatureDocsService

The anonymous API behind careers.<apex>

The public job board reads this. It is the only surface in Careers with no session, so the safety comes from the QUERY rather than from a rights check: PublicCa...

KamoΒ·1w ago
September 3, 2026
FeatureDocsService

/api/docs/careers β€” job postings, the member board, and applying

Two controllers behind one feature, and the split is the point. /careers/** is HR's and requires MANAGE_JOB_POSTINGS; /careers/member/** is the employee's and r...

KamoΒ·1w ago
September 2, 2026
FeatureDocsService

Fill a rectangle, honour a highlight's opacity, and redact

Three things about the way a prepared document renders the designer's marks. A rectangle was drawn as an outline, so the fill a member now picks to cover somet...

KamoΒ·1w ago
August 22, 2026
FeatureDocsService

Announce a classic save to the member who made it

A WOPI save on a CLASSIC version now publishes docs.classic-saved.{memberId} so the Kamo PDF editor, if it is open on the form-fillable version, can redraw the ...

KamoΒ·2w ago
FeatureDocsService

Save As branches a new original, not a new copy of one

PutRelativeFile was unimplemented, so "Save As" in the LibreOffice editor did nothing. It now does what the member means by it: the bytes become a brand-new ORI...

KamoΒ·2w ago
FeatureDocsService

Derive modified versions instead of editing originals

Opening a document in the LibreOffice editor no longer hands over the original. It derives that document's CLASSIC version β€” once, reused every time after, and ...

KamoΒ·2w ago
August 21, 2026
FeatureDocsService

Serve and sync the Selected Docs binder

POST /api/docs/binders/scratch fetches the caller's Selected Docs binder for one collection, creating it on first use, and replaces its documents with the grid ...

KamoΒ·3w ago
August 14, 2026
FeatureDocsService

The outstanding-course badge moves when the course does, not a minute later

The NavTop obligation badge sums two counts β€” packages to sign and courses to take β€” and only one of them was live. The legal half has pushed since its NATS blo...

KamoΒ·3w ago
FeatureDocsService

GET/PATCH the org's default legal text

/api/docs/legal/settings, behind the same guarded() funnel as every other mapping on this controller. The read NEVER creates a row: it resolves to LegalDefault...

KamoΒ·3w ago
August 12, 2026
FeatureDocsService

Legal, training and resource summary for the HR Overview

One read per tab domain, each block gated on its own right and omitted rather than refused when out of reach.

KamoΒ·4w ago
August 11, 2026
FeatureDocsService

The complete HR Training backend

Course authoring, publishing, assignment, the member player, server-side grading, WORM evidence and the reminder sweep β€” the whole module behind /api/docs/train...

KamoΒ·4w ago
FeatureDocsService

The member-facing Training API

Registers com.kamo.z.shared.hr.training in @EnableJpaRepositories β€” @EntityScan is broad so the entities are found either way, but repositories are not. Two au...

KamoΒ·4w ago
August 10, 2026
FeatureDocsService

Point at YugabyteDB and use PostgreSQLDialect

CockroachDB has been replaced by YugabyteDB. Connection strings move from cockroachdb-public:26257 to yb-tserver-service:5433, and the Hibernate dialect from **...

KamoΒ·4w ago
August 7, 2026
FeatureDocsService

Server-side paging for the member assignment listing

The member surface asked for MAX_SIZE unconditionally and sliced the result in the browser, so a grid that showed a page had already downloaded a whole employme...

KamoΒ·1mo ago
FeatureDocsService

Due-date reminder ladder and the batched, read-only sweep

The bucket is a pure function of (dueDate, today) and never of "when we last sent": UPCOMING_D{n} for the configured offsets, DUE_TODAY, then PAST_DUE_P{floor(d...

KamoΒ·1mo ago
August 6, 2026
FeatureDocsService

Tell the member β€” assigned, voided and completed

ONE hr.package_assigned per member per package, never one per document: that is what suppressInvite exists for, and 8 documents x 200 members is 1,600 envelopes...

KamoΒ·1mo ago
FeatureDocsService

Outbound email client and a Redis notification ledger

Idempotency with NO schema change. The reminder bucket is a pure function of (dueDate, today) and never of "when we last sent", so the only durable state a noti...

KamoΒ·1mo ago
FeatureDocsService

DocsService's first inbound internal-auth filter

DocsService has no service-to-service authentication: ResourceServerConfig is anyRequest().permitAll() and OTKPreAuthFilter CONTINUES the chain when X-OTK is ab...

KamoΒ·1mo ago
FeatureDocsService

Serve the caller's own pending-package count

GET **************** through memberGuarded() and the identity funnel. No memberId and no orgId parameter β€” both come from the session, because an id in a path i...

KamoΒ·1mo ago
FeatureDocsService

Emit the badge count on every transition that moves it

Four sites: delivery (none -> PENDING), void (open -> VOIDED), redelivery (open -> SUPERSEDED) and finish (open -> EXECUTED). Each passes the status it read BEF...

KamoΒ·1mo ago
FeatureDocsService

Publish the member's open-package count to core NATS

Connection.publish on legal.packages.{memberId}, NOT NatsMessageService: that service pins .expectedStream(CHAT_MESSAGES) in both publish and publishSync, so a ...

KamoΒ·1mo ago
FeatureDocsService

File after Finish, repair from HR, and download BY imgId

Filing is queued AFTER COMMIT and OFF the request thread. Finish is @Transactional in a service that also serves WOPI; holding a connection across N ESigService...

KamoΒ·1mo ago
FeatureDocsService

File the merged executed package into the member's own library

uploadDocument takes the SUBJECT'S Member, so Img.organization and Img.createdByMember derive from them and HR ends up having filed a document the member owns. ...

KamoΒ·1mo ago
FeatureDocsService

Enforce MANAGE_LEGAL_AND_COMPLIANCE on the package endpoints

LegalPackageAccess mirrors the Legal & Compliance tab gate, and that tab is now gated on one right of its own instead of VIEW_EMPLOYEES || EDIT_EMPLOYEES || MAN...

KamoΒ·1mo ago
FeatureDocsService

The executed package certificate and the ordered merge

The certificate carries the package, the frozen version, the subject, the moment and address of execution, the attestation wording verbatim and both digests the...

KamoΒ·1mo ago
FeatureDocsService

The two byte sources for the executed artifact

LegalPinnedPdf extracts the frozen-digest rule out of the member read path so the wizard and the filed artifact read the SAME bytes through the SAME check β€” con...

KamoΒ·1mo ago
FeatureDocsService

Mount the member surface at /api/docs/legal/member/**

A separate controller with a separate funnel, because authorization here is identity and not an HR right. Routing these through guarded() would mean either lock...

KamoΒ·1mo ago
FeatureDocsService

Package attestation on finish, and the EXECUTED/AWAITING_OTHERS split

Writes the WORM LegalPackageAttestation: attestationTextSha256 from the FROZEN version (the package's draft wording is mutable and may already have been reworde...

KamoΒ·1mo ago
FeatureDocsService

Identity-authorized member read surface for assignments

LegalAssignmentOwnership is a SEPARATE guard from LegalPackageAccess on purpose: a member executing their own agreement holds no HR right, and widening the HR r...

KamoΒ·1mo ago
FeatureDocsService

Manifest canonical form and a spoof-resistant client IP

manifestSha256 hashes the ordered [{documentUid, contentSha256, orderIndex}] the member was actually shown, length-prefixed so a crafted uid cannot imitate a fi...

KamoΒ·1mo ago
FeatureDocsService

Org-scoped, paged, filterable legal package assignment listing

Built on the EntityManager rather than a shared-lib repository method: the filter set is dynamic and adding it to kamo-shared-library would force a shared-artif...

KamoΒ·1mo ago
FeatureDocsService

Void legal package assignments, org-wide or for named members

Per-assignment outcomes β€” voided, skipped-executed, not-found β€” because an admin voiding a package for six named people needs to know which had already executed...

KamoΒ·1mo ago
FeatureDocsService

Redeliver a changed package, superseding the open assignments

Refused unless the live fingerprint differs from the published one. Binder.dateUpdated is dead and Img has no revision counter, so that fingerprint is the only ...

KamoΒ·1mo ago
FeatureDocsService

Deliver a legal package to its audience, off the request thread

Plan on the request thread (two cheap queries, so the response is exact about who is included and who was skipped and why), write off it: 200 members x 8 docume...

KamoΒ·1mo ago
FeatureDocsService

Delivery planner β€” incremental targeting, email pre-filter, due dates

Deliver is the new-hire path and is meant to be re-run, so members who already hold an assignment are subtracted rather than given a second copy of the same ins...

KamoΒ·1mo ago
FeatureDocsService

ESigService internal client for legal package delivery

DocsService's first outbound service-to-service client. Posts to **************** (origin MANUAL, never metered) with suppressInvite=true β€” HR sends one notific...

KamoΒ·1mo ago
FeatureDocsService

Audience resolution preview

Resolves a saved or draft audience through TeamMemberRepo.findAudience, which is the only reader carrying the mandatory ACTIVE + recordState eligibility predica...

KamoΒ·1mo ago
FeatureDocsService

Publish freezes a version with byte-pinned documents

Pins img_dat_id plus a content hash, not img_id: saveImgContent repoints the same Img at new bytes on every Docs save, and resolveSource walks to the dat live a...

KamoΒ·1mo ago
FeatureDocsService

Legal package CRUD at /api/docs/legal/packages

List, create, get, update and delete, with ordered binder refs and audience rows replaced as a set. Org comes from the session on every path β€” DocsService is pe...

KamoΒ·1mo ago
FeatureDocsService

Legal package wire contract and request normalization

Ids cross as strings (unique_rowid exceeds MAX_SAFE_INTEGER). Binder order is the list order, de-duplicated, and a non-numeric entry 400s rather than being skip...

KamoΒ·1mo ago
FeatureDocsService

Content fingerprint for legal packages

Binder.dateUpdated never moves after INSERT, so a package's content has no change signal to compare. Adds a SHA-256 over the canonical ordered binder/item tuple...

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