Stability
Kide is in beta. What a project builds on is listed below and changes only as described under How changes are communicated. The package’s internals may change in any release.
What is stable
Section titled “What is stable”Any change to these counts as breaking, even if the project still compiles.
cms.config.ts— the shape of the config object:collections,admin,locales,integrations,images,collaboration.defineCollection()andfields.*— every field type, its type-specific options, and the base options (label,description,required,defaultValue,unique,translatable,condition,admin,access).- The local API —
cms.<collection>.find(),findOne(),create(),update(),delete(),deleteMany(),upsertTranslation(), and the context flags (_system,_skipSearch).deleteMany()and_skipSearchare not in the generated types yet; adding them there is not a breaking change. - Project-owned files — the signatures of the db, email and storage adapters, the wiring in
runtime.ts, and thefields/convention for custom admin components. - Stored data shapes — rich text and content as JSON ASTs, image fields as
storagePathstrings, the_-prefixed system fields. - The
kideCLI — subcommand names and their arguments (generate,push,seed,admin,reindex,describe,upgrade,restore,eject,mcp).
What may change
Section titled “What may change”The managed directories (core/, admin/, routes/, middleware/, client/, platform/, internals/) belong to the package:
- Internal module layout and function signatures inside the managed directories.
- The names and contents of
virtual:kide/*modules (they are the package’s private contract with its own routes). - Admin UI components, styles and markup.
- The generated files under
.generated/(regenerated on everykide generate). - The layout of the upgrade packet and the wording of
agent-instructions.md.
If you have edited managed code in an embedded project, expect conflicts on upgrade; the upgrade packet lists them for you or an agent to resolve.
How changes are communicated
Section titled “How changes are communicated”- Every release is a git tag
v<version>on the template repo, with an entry inCHANGELOG.md. - While the version is
0.x, a breaking change to anything in the stable list lands in a minor release (0.N.0) and is marked Breaking in the changelog, with what to do about it. Patch releases (0.N.x) never contain one. - Schema changes are called out separately, because a dependency bump cannot apply them: run
pnpm cms:push(see Updates & Versioning). - Security fixes are released as soon as they are ready and noted in the changelog; see
SECURITY.mdfor how to report one.
Road to 1.0
Section titled “Road to 1.0”Kide becomes 1.0 when the 1.0 milestone is closed. The criteria there are about verification, not features: the upgrade path from the previous release checked in CI, documentation covering everything a project can configure, and a security review of the parts reachable without a session. After 1.0, breaking changes to the stable list require a major version.