Releases: Contentrain/studio
Releases · Contentrain/studio
Release list
v0.2.0-beta.1
🚀 Enhancements
- ai: Add Claude Sonnet 5 + single-source chat model catalog (#113)
- durability: Alert on swallowed R2-teardown failures + require explicit CDN bucket (#121)
- cdn: Emit per-locale content bundles for single-fetch delivery (#125)
- providers: Add auth/database provider selectors behind boot validation (#126)
- db: Portable migration lineage — plain-Postgres auth shim, runner, CI proof (#127)
- db: Postgres DatabaseProvider core — client, RLS helpers, first 4 modules, contract suite (#128)
- db: Postgres provider — projects, usage, conversations (43 methods) + conversation delete-policy fix (#130)
- db: Postgres DatabaseProvider COMPLETE — final 6 modules + delete-safe FK fixes (#131)
- auth: Managed AuthProvider — the postgres pair is now selectable (#132)
- tests: Plain-PG test matrix + managed-pair boot smoke + provider-pair docs (Faz 4) (#138)
- oauth: Studio-managed OAuth 2.1 AS for the remote MCP surface (#141)
- mcp: ProjectId-less remote MCP endpoint behind the OAuth grant (#142)
- ui: Connected apps panel — see and revoke remote MCP grants (#143)
- auth: Directory-review support — env-gated reviewer login + submission prep (#144)
- mcp: Bump @contentrain/mcp to 1.10.0 — session fingerprint + media tool classes (#145)
- mcp: Media facet — the 1.10.0 media tools over MCP Cloud (#146)
🔥 Performance
- ~6x fewer GitHub API calls in the agent write path (W1-W4) (#116)
- cdn: Serve delivery hot path from in-process caches + conditional R2 reads (#124)
🩹 Fixes
- auth: Keep user sessions off the service-role Supabase client (#112)
- content: Add 17 dictionary keys used in code but never defined (#114)
- cdn: Stop full rebuild from wiping out-of-band media binaries (#115)
- git: Never auto-delete the source branch on merge (MCP 1.8.0) (#118)
- brain: Full-rebuild off default branch when contentrain is missing (#119)
- content: Handle document per-slug meta in status, copy-locale, and UI (#123)
- auth: Pin the OAuth exchange redirect_uri to siteUrl behind proxies (#134)
- auth: Let the oauth module own both dance legs — its state, its check (#135)
- auth: Drop the state param from the oauth entry URL — it broke module CSRF (#136)
- cdn: Derive webhook build paths from the compare API, not payload commits (#139)
- chat: Refuse media-intent uploads while project CDN delivery is off (#140)
🏡 Chore
- gitignore: Ignore .codex/ agent local configs (#147)
❤️ Contributors
- AHMET BAYHAN BAYRAMOGLU (@ABB65)
v0.1.0
🚀 Enhancements
- media: Scope foundation for the media management API (af98d3d)
- media: Public media CRUD API routes (/api/media/v1) (5541c96)
- media: Scope selection UI for CDN/media keys (c5fa3a1)
- cdn: CDN/media architecture alignment — edition/plan gating, Assets↔CDN, upsell (#74)
- observability: Add Sentry error & performance monitoring (#79)
- editor: Source-mode markdown editor + agent markdown authoring guide (#82)
- seo: Add page titles, head meta, and Open Graph tags (#84)
- cdn: Public media delivery + build-time path rewrite (#83)
- chat: Attach external files and links to conversations (#87)
- agent: Align system prompt + enforcement with governance and edition (#88)
- agent: Publish/media/branch tools + relation integrity at save (#89)
- Array field editing + explicit chat attachment intent (#90)
🩹 Fixes
- media: Reuse existing cdn.key_mismatch + chat.rate_limited error keys (bca7b7f)
- e2e: Target CDN key-name input by type (scope checkboxes broke the first-input locator) (81c62f6)
- media: Attribute API-key uploads to the workspace owner (uploaded_by uuid FK) (c342e10)
- media: Gate the media API on CDN activation (cdn_enabled) (1ee8612)
- billing: Grant the free trial once per workspace + fix plan modal (#75)
- billing: Surface a clean error when the payment provider call fails (#76)
- cdn: Move key-scope checkboxes below the PERMISSIONS label (#77)
- chat: Replace retired Claude model IDs (#80)
- config: Fail boot if the service-role key isn't actually service_role (#81)
- content: Merge document saves with the existing entry (#85)
- content: Resolve document paths under the model id (#85, #86)
- chat: Turn streaming, document date validation, and live context reactivity (#91)
- content: Merge partial collection/singleton saves instead of replacing (#92)
- members: Drop non-existent workspace_id from project_members insert (#93)
- workspace: Owner keeps owner role after inviting a member (#94)
- Plan info lost after deploy until redeploy (ee bridge / sharp native load) (#95)
- webhooks: Add missing dictionary keys + fix header spacing (#100)
- forms: Render "None" captcha option in form settings (#101)
- content: Status badge picker with loading state (#102)
- starters: Add missing common.all string + stop modal height jump (#104)
- billing: Use real trial_end, never the billing period end (#103)
- branches: Decode percent-encoded branch route param (#105)
📖 Documentation
- Close mobile responsive shell todo (shipped since v0.1.0-beta.1) (14b5694)
🏡 Chore
- Standardize contentrain.io email addresses (aef6f4d)
- deps-dev: Bump vue-tsc from 3.2.6 to 3.3.6 (#99)
❤️ Contributors
- AHMET BAYHAN BAYRAMOGLU (@ABB65)
- Contentrain mcp@contentrain.io
🚀 Enhancements
- mcp-cloud: Add license entries + Supabase migration (Faz S6 ön-hazırlık) (22fe286)
- mcp-cloud: Wire hosted HTTP endpoint + key management (Faz S6) (325d39e)
- mcp-cloud: Workspace settings tab for API key management (Faz S6) (218c0dc)
- pricing: Simplify free, boost starter, upgrade pro, wire enterprise CTA (P1-P3, P7) (7e668b5)
- mcp-cloud: Wire Stripe overage billing (P5) (00482ca)
- billing: Trial ending reminder emails (P8) (5f4ca43)
- billing: Normalise payment state into payment_accounts + outbox (6566864)
- billing: Add polar payment plugin and usage outbox drainer (2465117)
- billing: Activate polar, wire usage meters, add setup tooling (44621b9)
- scripts: Content-driven polar-sync (products + prices + meters) (4bd9008)
- email: Shared branded layout and Polar webhook notifications (f732f4b)
- polar: Add env-file support for polar sync script (a98cfd8)
- legal: Editions, deployment profiles, and licensing surface (f73b192)
- runtime: Deployment profiles + edition-aware license system (85dbeb8)
- ui: Edition-aware UI surfaces for all deployment profiles (625c38a)
- enforcement: Orphan feature cleanup — enforce or flag roadmap (7ee0c42)
- github-app: Connect-existing flow, revoke on delete, ownership verification (253be4a)
- github-app: Repo-level access lifecycle (revoke/delete/rename handling) (dc05977)
- billing: Revert reserved message slot on failed/aborted chats (28a2e95)
- chat: Durable internal tool trace persistence (29c821c)
- content-engine: Align with @contentrain/mcp 1.5.0 / query 6 / types 0.5.1 (75a76ae)
- mcp-cloud: Honor project workflow + plan for external writes; document server layer (47d5ca5)
- billing: Align plan modal, paywall, and trial UX end-to-end (de5370f)
- mcp-cloud: Enforce tool allowlist, fix quota semantics, improve onboarding (cc5c5e1)
🔥 Performance
- ai: Anthropic prompt cache + cache token accounting (0bd4faf)
🩹 Fixes
- ci: Use CHANGELOG.md for release notes instead of GitHub auto-generated (056bab2)
- config: Set root directory for Vitest configuration (5f16a3a)
- mcp-cloud: Close 4 launch blockers from deep review (C1-C4) (1ce0bac)
- ui: Use valid annon--comment-dots icon for ai_messages (d9c2ce0)
- build: Generate contentrain client before nuxt build (6d8610c)
- ci: Pin pnpm to 10.26.2 in action-setup v6 (#26)
- deploy: Disable healthcheck for Railway routing debug (#27)
- db: Restore Supabase role grants missing from baseline (#28)
- settings: Plan display, self-host UX, trunk-based branch model (#34)
- content: Align .contentrain billing data with canonical license values (b9e65cc)
- billing: Resolve self-host detection across UI and server (87c86ff)
- ci: Integration-test compatibility for enterprise + media enforcement (8152271)
- ci: Pro...
v0.1.0-beta.8
🚀 Enhancements
- mcp-cloud: Add license entries + Supabase migration (Faz S6 ön-hazırlık) (22fe286)
- mcp-cloud: Wire hosted HTTP endpoint + key management (Faz S6) (325d39e)
- mcp-cloud: Workspace settings tab for API key management (Faz S6) (218c0dc)
- pricing: Simplify free, boost starter, upgrade pro, wire enterprise CTA (P1-P3, P7) (7e668b5)
- mcp-cloud: Wire Stripe overage billing (P5) (00482ca)
- billing: Trial ending reminder emails (P8) (5f4ca43)
- billing: Normalise payment state into payment_accounts + outbox (6566864)
- billing: Add polar payment plugin and usage outbox drainer (2465117)
- billing: Activate polar, wire usage meters, add setup tooling (44621b9)
- scripts: Content-driven polar-sync (products + prices + meters) (4bd9008)
- email: Shared branded layout and Polar webhook notifications (f732f4b)
- polar: Add env-file support for polar sync script (a98cfd8)
- legal: Editions, deployment profiles, and licensing surface (f73b192)
- runtime: Deployment profiles + edition-aware license system (85dbeb8)
- ui: Edition-aware UI surfaces for all deployment profiles (625c38a)
- enforcement: Orphan feature cleanup — enforce or flag roadmap (7ee0c42)
- github-app: Connect-existing flow, revoke on delete, ownership verification (253be4a)
- github-app: Repo-level access lifecycle (revoke/delete/rename handling) (dc05977)
- billing: Revert reserved message slot on failed/aborted chats (28a2e95)
- chat: Durable internal tool trace persistence (29c821c)
- content-engine: Align with @contentrain/mcp 1.5.0 / query 6 / types 0.5.1 (75a76ae)
- mcp-cloud: Honor project workflow + plan for external writes; document server layer (47d5ca5)
- billing: Align plan modal, paywall, and trial UX end-to-end (de5370f)
- mcp-cloud: Enforce tool allowlist, fix quota semantics, improve onboarding (cc5c5e1)
🔥 Performance
- ai: Anthropic prompt cache + cache token accounting (0bd4faf)
🩹 Fixes
- ci: Use CHANGELOG.md for release notes instead of GitHub auto-generated (056bab2)
- config: Set root directory for Vitest configuration (5f16a3a)
- mcp-cloud: Close 4 launch blockers from deep review (C1-C4) (1ce0bac)
- ui: Use valid annon--comment-dots icon for ai_messages (d9c2ce0)
- build: Generate contentrain client before nuxt build (6d8610c)
- ci: Pin pnpm to 10.26.2 in action-setup v6 (#26)
- deploy: Disable healthcheck for Railway routing debug (#27)
- db: Restore Supabase role grants missing from baseline (#28)
- settings: Plan display, self-host UX, trunk-based branch model (#34)
- content: Align .contentrain billing data with canonical license values (b9e65cc)
- billing: Resolve self-host detection across UI and server (87c86ff)
- ci: Integration-test compatibility for enterprise + media enforcement (8152271)
- ci: Production-safe deployment snapshot mutation (0988b0b)
- ee: Surface bridge load failures instead of silent fallback (eb97b41)
- github: Pass workspace id as state to App install url (9b1cc03)
- ee: Eliminate boot-time race that latched deployment as community (d23a32e)
- billing: Redirect free workspace to checkout instead of alerting (67b029e)
- github-app: Reconnect uses POST /api/auth/login, not bare URL (3fe3f82)
- chat: Remove non-existent status/workspace_id from conversations SELECT (237a112)
- ci: Wait for e2e port to free between suite spawns (8f0c096)
- billing: Correct Conversation API actor model + usage table (23631b2)
- chat: Preserve assistant text blocks across tool iterations (7d0c35b)
- mcp-cloud: Pass Retry-After as number for h3 typed headers (cf7b918)
- chat: Persist conversation trace rows reliably (b890b82)
- content: Validate document slug passed as a separate argument (011a077)
- mcp-cloud: Exempt /api/mcp from the session auth middleware (c1ca245)
- auth: Exempt forms + conversation API from session middleware (6199538)
- mcp-cloud: Forward the client Accept header to the loopback MCP server (4a8750f)
💅 Refactors
- providers: Adopt @contentrain/mcp RepoProvider surface (Faz S1) (2059f13)
- content-engine: Delegate content ops to @contentrain/mcp (Faz S2) (a91eb78)
- validation: Delegate validateContent to @contentrain/mcp (Faz S3) (9da5de9)
- serialization: Drop content-serialization wrapper (Faz S4) (22f23d0)
- billing: Introduce payment provider plugin registry (7b5dae1)
- license: Derive PLAN_* constants from .contentrain content (136bbac)
- chat: Shared history builder with model/plan/source-aware budgets (2f4e394)
📖 Documentation
- Reflect MCP integration + S6 prep in ROADMAP + CLAUDE.md (Faz S8) (4a69b5e)
- Mark S6 MCP Cloud shipped (Faz S8 cleanup) (e72a8cd)
- deploy: Align deployment docs with trunk-based flow (577012f)
- claude: Clarify account deletion has no outbound email (a5a2ba9)
- editions: Align long-form docs with the edition + profile model (28534b6)
- ee: Finalize License v1.0 from market-comparative review (b9baa56)
🏡 Chore
- deps-dev: Bump @types/node from 25.5.2 to 25.6.0 (#22)
- deps-dev: Bump @tailwindcss/vite from 4.2.1 to 4.2.2 (#21)
- deps-dev: Bump the testing group with 4 updates (#19)
- db: Harden baseline for portability (#25)
- Merge main into feat/github-app-lifecycle-overhaul (4f9cdd2)
✅ Tests
- chat: Update integration assertion to expect populated assistantText (4659c05)
❤️ Contributors
- Contentrain mcp@contentrain.io
- AHMET BAYHAN BAYRAMOGLU (@ABB65)
v0.1.0-beta.7
🚀 Enhancements
- api: Add CLI integration endpoints for Studio CLI (5824f89)
🩹 Fixes
- content: Align validation/serialization tests with @contentrain/types (32af5f0)
💅 Refactors
- content: Migrate validation and serialization to @contentrain/types (e554bbe)
📖 Documentation
- Update roadmap and CLAUDE.md for CLI integration and overage billing (1cd6dba)
Full Changelog: v0.1.0-beta.6...v0.1.0-beta.7
v0.1.0-beta.6
🚀 Enhancements
- billing: Add overage billing system with usage dashboard (bd981f1)
Full Changelog: v0.1.0-beta.5...v0.1.0-beta.6
v0.1.0-beta.5
🩹 Fixes
- security: Atomic plan limit checks and GDPR audit logging gaps (5df4248)
- Race conditions: workspace member seats, CDN API keys, and media storage quota now use
pg_advisory_xact_lockatomic RPCs (migration 019) - GDPR audit: bulk form submission deletion writes explicit audit logs with actor attribution
- 4 missing DELETE endpoints added to audit registry (CDN key, conversation key, webhook, AI key)
- Non-atomic fallback code removed from storage/CDN increment methods
- Race conditions: workspace member seats, CDN API keys, and media storage quota now use
📖 Documentation
- Mark resolved deferred items and fix media route test mock (42a85af)
🏡 Chore
- deps: Bump docker/setup-buildx-action from 3 to 4
- deps: Bump docker/login-action from 3 to 4
- deps: Bump docker/build-push-action from 6 to 7
- deps-dev: Bump the testing group with 4 updates
- deps-dev: Bump eslint from 10.0.3 to 10.2.0 in the linting group
- deps-dev: Bump tailwindcss from 4.2.1 to 4.2.2
- deps: Bump the vue group with 2 updates
- deps-dev: Bump @types/node from 24.12.0 to 25.5.2
Full Changelog: v0.1.0-beta.4...v0.1.0-beta.5
What's Changed
- chore(deps): bump docker/setup-buildx-action from 3 to 4 by @dependabot[bot] in #9
- chore(deps): bump docker/login-action from 3 to 4 by @dependabot[bot] in #10
- chore(deps): bump docker/build-push-action from 6 to 7 by @dependabot[bot] in #11
- chore(deps-dev): bump the testing group with 4 updates by @dependabot[bot] in #13
- chore(deps-dev): bump eslint from 10.0.3 to 10.2.0 in the linting group by @dependabot[bot] in #14
- chore(deps): bump the vue group across 1 directory with 2 updates by @dependabot[bot] in #12
- chore(deps-dev): bump tailwindcss from 4.2.1 to 4.2.2 by @dependabot[bot] in #15
- chore(deps-dev): bump @types/node from 24.12.0 to 25.5.2 by @dependabot[bot] in #16
New Contributors
- @dependabot[bot] made their first contribution in #9
Full Changelog: v0.1.0-beta.2...v0.1.0-beta.5
v0.1.0-beta.4
🩹 Fixes
- billing: Remove per-seat pricing, adopt flat-rate model (e706bcb)
- billing: Align Pro seat limit to 10, remove per-seat remnants (d2be160)
- webhooks: Complete all 8 webhook event dispatches and fix test coverage (c6a36e1)
📖 Documentation
- Add public ROADMAP.md, align deferred items across all docs (04134b4)
❤️ Contributors
- Contentrain mcp@contentrain.io
Full Changelog: v0.1.0-beta.2...v0.1.0-beta.4
v0.1.0-beta.3
v0.1.0-beta.2
v0.1.0-beta.1
Initial beta release of Contentrain Studio — open-core AGPL CMS.
Highlights
- 🏗️ Full-stack Nuxt 4 with Supabase Auth + PostgreSQL
- 💬 AI chat engine with conversation-first content management
- 📦 CDN content delivery with API keys and builds
- 🖼️ Media management with Sharp processing
- 📝 Forms & submissions with public endpoints
- 🔍 Schema validation + project health dashboard
- 🐳 Docker deployment ready
- 📖 Open-source governance suite (CONTRIBUTING, SECURITY, CODE_OF_CONDUCT)
Full Changelog: https://github.com/Contentrain/studio/commits/v0.1.0-beta.1