Repository navigation
v0.6.0 #188
fdemusso
announced in
Announcements
v0.6.0
#188
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
🌳 BeechCMS v0.6.0
This release marks a major evolution of BeechCMS as a production-ready, developer-first headless CMS. v0.6 introduces a complete DX overhaul: a type-safe client SDK, a code-generating CLI, programmatic lifecycle hooks, background job queues, GitOps-driven schema migrations, and a significantly improved UI. Every feature was designed to keep the edge-native, API-first architecture intact.
✨ What's New
🔁 Programmatic Lifecycle Hooks
Content operations now support
beforeCreate,beforeUpdate,beforeDelete,afterCreate,afterUpdate, andafterDeletehooks, registered at the server factory level and executed withinD1ContentRepository. (#116)Also introduced:
mutateField— atomic SQL field mutation to prevent race conditions on numeric columnsrunBatch— declarative multi-seed coordinated writes under Cloudflare D1📦 Type-Safe Client SDK & Webhook Verifier
A new
@beechcms/clientpackage provides a fully typed client for consuming the BeechCMS API from any frontend or backend. (#124)Key properties:
createBeechClient()with full TypeScript type-narrowing end-to-endsortmaps toorderBy/orderDir,limitclamped to ≤ 100X-API-KeyheaderBeechResult— never throws; non-2xx responses surface in.errorverifyBeechSignature— HMAC-SHA256 webhook verification via Web Crypto only (no Nodecrypto), constant-time comparison, accepts signatures with or withoutsha256=prefix🛠️ Codegen CLI & Scaffolding
A new
beechCLI accelerates project setup and day-to-day development. (#122) (#123)🔀 Schema Sync & GitOps Migrations
New
beech schema:diffcommand closes the gap between local schema mutations and production deployments. (#126)SEED_REGISTRYagainst a live D1 databaseapps/api/migrations/-- ⚠comments only — never as executable SQLdocs/ci/github-actions-migrations.yml)⚙️ Background Job Queues
Introduced a queue system for background job handling with dedicated job handlers, decoupling async workloads from the request lifecycle. (#125)
🔌 Injected Router Pattern (Route Integration)
Refactored the routing layer to use an injected router pattern, improving modularity and testability of route registration. (#119)
🧩 Repeater & Complex Object Support
🌱 Runtime Seeds
Seeds can now be executed at runtime, enabling dynamic data initialization and environment-specific bootstrapping. (#95) (#171)
🎨 UI & Dashboard Improvements
Multiple UI polish passes and dashboard feature additions: (#87) (#90) (#171)
🔒 Security & Validation
📋 Known Limitations (Cloudflare D1)
after*hooks are non-transactional: D1 does not support interactive transactions, soafterCreate/Update/Deletehooks run after the write batch is committed. Errors propagate to the client but the DB change persists.mutateFieldbypasses hooks: Intentional — preserves atomic anti-race guarantees.runBatchbypasses hooks: Intentional — prevents non-atomic side-effects within a D1 batch call.📦 Full Changelog
[v0.5.0 → v0.6.0](v0.5.0...v0.6.0)
This discussion was created from the release v0.6.0.
All reactions