Skip to content

Changelog ​

All notable changes to Contentrain Studio are documented here. The format follows Keep a Changelog and the project adheres to Semantic Versioning.

v0.4.8 ​

Released 2026-10-08 · compare changes

Enhancements ​

  • migrate: The Studio+Migrate bundle: Migrate sells its fee plus Studio year 1 as one order. Studio provisions the account (POST /api/migrate/provision, signed claim v2), opens one Polar checkout at the quoted total, moves the subscription to the yearly list product for renewal, and refuses a quote it does not agree with. An order whose account already has a covering plan joins that workspace and charges nothing. Money guards and the GitHub identity check are in place (#396, #404, #405, #407, #409, #411)
  • migrate: Refunds: a grant can be revoked (refund_before_delivery, refund_after_delivery, delivery_failed, ops), which cancels the subscription it is bound to; revoking an already ended subscription is success (#406, #408)
  • migrate: Studio setup beside a live move: install URL, grant status and a signed setup callback, with the comments export imported from the claim (#403, #383)
  • comments: The workspace owner and admins get an email when a comment arrives (#401)
  • billing: Yearly plans: honest overage-lock copy; forms, comments and CDN count over the billing window (#413)
  • billing: Companion monthly usage subscription for yearly plans, behind NUXT_POLAR_COMPANION_USAGE (off) (#415)
  • content: Relation and relations fields in the edit form are a searchable select: type to filter (case- and diacritic-insensitive, matches the label, the id and the model name), polymorphic relations are grouped by model, only the first 100 matches are drawn with a note to keep typing, and chips, reordering and the manual id fallback are unchanged (#417). A field that already has a value opens to the whole list, not only its own entry (#419)
  • migrate: The account state carries monthly_list_cents, the sized plan's monthly price × 12, so the Migrate offer can show the yearly saving; the price stays in Studio (#418)
  • migrate: One click connects a bundle or covered order's delivered repository as a project from the claim page, with a next step for every missing thing (plan_locked, no_installation, repo_not_accessible, migration_not_merged); a repository that is already a project is the answer, not an error (#422). A repository in another GitHub account says so with both accounts named, and a renamed or moved repository still connects through GitHub's redirect (#429)
  • billing: Checkout can send the customer back to the Migrate claim: POST /api/billing/checkout takes returnTo, which is kept only as an internal path under /migrate/claim and dropped otherwise (absolute URLs, //host, backslashes, .., other pages) (#423)
  • settings: Project-scoped keys move into the project: an API keys tab holds the MCP keys and the Conversation API keys; the workspace tabs become Overview, Members, Billing, GitHub, Connected apps and AI; the MCP Cloud tab is gone and the old ?tab=ai-keys / ?tab=mcp-cloud links redirect. An ee-backed feature is hidden in Community and otherwise shows an upgrade prompt that names the plans from the plan matrix (#430, #431, #432)
  • connected-apps: A copyable OpenAI Codex config.toml block (OAuth sign-in, no key in the file) (#427)
  • @contentrain/mcp 3.9.32, @contentrain/query 7.6.38, @contentrain/types 1.59.0 (typed Migrate grant-status fields, renewal_cents and monthly_list_cents from the contract) (#424, #426, #433, #434)
  • media: Uploaded images are kept as a private source; animated GIF/WebP stay animated; stored EXIF/XMP and unsanitised SVG can be swept (pnpm media:strip-metadata) (#387, #385, #394)
  • @contentrain/types 1.49.0; the Migrate golden handoff comes from the package (#410, #399)
  • cdn: The delivery route enforces each key's scopes. Keys with the default scope are unaffected.
  • activity: The project activity feed follows project access; workspace owners and admins keep the full view.

Full release notes (10 fixes, upgrade notes for self-hosted deployments): GitHub release v0.4.8.


v0.4.7 ​

Released 2026-09-27 · compare changes

Enhancements ​

  • models: title_field names a nested field by its dotted path; @contentrain/types 1.30.0, @contentrain/mcp 3.9.0 (#372)

Full release notes (3 fixes, upgrade notes for self-hosted deployments): GitHub release v0.4.7.


v0.4.6 ​

Released 2026-09-26 · compare changes

Enhancements ​

  • migration: Fetch old-site media only from the origin Migrate signed (#368)

Full release notes (upgrade notes for self-hosted deployments): GitHub release v0.4.6.


v0.4.5 ​

Released 2026-09-26 · compare changes

Highlights ​

  • New: a site migrated with Contentrain Migrate moves its media into Studio Media — a resumable job reads the files from the repository and fetches the ones left at the old site, then one commit points the site at them (#362, #363, #364, #366)
  • The Migrate claim screen leads to the delivered site and its media (#365)
  • The handoff is read from .contentrain/migrate/handoff.json first (#360)
  • Branches say when approved content is waiting on the advance PR, and link it (#361)

Full release notes (4 fixes, upgrade notes for self-hosted deployments): GitHub release v0.4.5.


v0.4.4 ​

Released 2026-09-24 · compare changes

Highlights ​

  • New plans: $0.01 AI credits — Starter 300, Pro 1,600 plus 450 API credits — with existing subscriptions keeping their terms, shown to them everywhere they are quoted (#355, #356)
  • Chat turns reserve their credits up front and stop inside their budget; a turn cut by the month's last credits says so and when credits come back (#335)
  • With overage off nothing past the plan's allowance reaches the payment meter, in chat or in the Conversation API; a usage count that cannot be read refuses the call instead of reading as 0, and the billing screen shows it as unavailable (#335, #354)
  • Canceling keeps paid access until the period ends, a failed renewal starts the grace period with an email, and a trial keeps running for a day while the provider's conversion is late (#336, #340)
  • "Subscription activated" is sent on the first paid order, not before the charge (#345, #352)
  • Public forms, comments, the Conversation API and MCP Cloud follow the billing plan and the overage lock; a locked workspace answers 402 payment_required (#337, #341, #349, #352)
  • Overage cannot be turned on for a subscription that cannot bill it, and limit messages show credits and the reset date (#334)
  • Usage alerts by email; each meter shows its own reset date and overage price; members see usage read-only; cancel and pause notices (#343)
  • New: a paid Migrate order includes a Studio trial, claimed with a signed token, one grant per order; Migrate trials are capped at Starter credits (#342, #344, #350)
  • New: Opus 5.5; Studio-key trials keep to the non-premium models (#339, #344)
  • New: media on a separate CDN host, an origin-transfer limit per plan with a 20 % grace, and a daily GB meter (#351)
  • MCP Cloud write tools pause before the GitHub App's hourly budget runs out, so the editor keeps working (#346)
  • URL imports reserve workspace storage like every other upload path (#348)
  • Plan texts come from the catalog, so the agent no longer promises features a plan does not have (#347)
  • A save fast-forwards the content branch instead of writing a merge commit each time (#338)

Full release notes (16 fixes, upgrade notes for self-hosted deployments): GitHub release v0.4.4.


v0.4.3 ​

Released 2026-09-23 · compare changes

Highlights ​

  • Turns on your own Anthropic key (BYOA) no longer use the workspace's AI credits and are never billed; Usage lists them on their own line (#331)
  • Usage resets on your billing date instead of the 1st of the month (#277)
  • AI and API usage is counted in credits: a heavy turn costs more than one, capped per message at 30 on Starter and 60 on Pro and Enterprise (#274, #280)
  • CDN bandwidth and media storage are fixed limits; Usage marks them as such (#300)
  • The agent writes to the locale you are working in, and says which one (#301)
  • Behaviour change: asking the agent to delete an entry or change its status now applies to every locale unless you name one (#324)
  • Edits made at the same time merge instead of overwriting each other, vocabulary included (#304, #327, #333)
  • New: the agent can replace text inside a field without re-sending the whole field (#319)
  • New: a chat attachment you save into content moves into the media library, and chat attachments count toward storage (#323, #317)
  • The agent refuses to delete an entry other entries still reference, and resolves a linked site page to the entry it renders (#307, #316)
  • Saves say whether they created or updated, set the status in the same commit, merge object fields key by key, and save document batches together (#305, #310)
  • Brain queries filter, sort and paginate; Turkish requests are classified correctly and tool errors are reported (#308, #299, #306)
  • Projects open faster: the cached project renders at once, without the serial load waterfall or duplicate requests (#322, #329, #332)
  • CDN: a model that fails to build keeps its previous files, and a partial build is no longer reported as complete (#309, #318, #320)
  • MCP Cloud writes work again, and moving a project to another instance rewrites its media addresses in one commit (#302, #328)

Full release notes (26 fixes, upgrade notes for self-hosted deployments): GitHub release v0.4.3.


v0.4.2 ​

Released 2026-09-21 · compare changes

Enhancements ​

  • review: Lift a one-entry edit that publishes, empties or rewrites (#273)

Full release notes: GitHub release v0.4.2.


v0.4.1 ​

Released 2026-09-18 · compare changes

Full release notes (3 fixes, upgrade notes for self-hosted deployments): GitHub release v0.4.1.


v0.4.0 ​

Released 2026-09-18 · compare changes

Enhancements ​

  • review: Review a pending change as content, not as a git diff (#208)
  • about: Name the running build on /about and /api/health (#224)
  • content: Schedule an entry from Studio, and keep what MCP plans in meta (#229)
  • comments: Ship comments v1 — read/submit API, moderation, agent tools, WordPress import (#231)
  • comments: Finish the Studio surface — import upload, usage meter row, project default locale (#232)
  • forms: Close the WordPress parity gaps — notifications, locale, per-form cap, detail modal (#233)
  • migration: Take in the Migrate handoff — sync, overview card, agent context, comments (#234)
  • media: Bulk ingest from URLs with an old → new URL map (#235)
  • review: Request changes on a pending branch, visible to author and agent (#237)
  • billing: Credit-weighted AI usage and plan-tier model gating (#243)
  • chat: Keep the conversation cache warm across turns and tool iterations (#251)
  • review: Decide an auto-merge from what changed, not from who asked (#257)
  • review: Approve a plan, gate a release, and keep the receipt (#258)
  • branches: Report where the content branch stands, in four states (#259)
  • media: Stop buying the same bytes twice on a repeated ingest (#260)

Full release notes (20 fixes, upgrade notes for self-hosted deployments): GitHub release v0.4.0.


v0.3.0 ​

Released 2026-08-15 · compare changes

Enhancements ​

  • chat: Trial banner overlay, one-card composer, capped app shell (#182)
  • project: Resizable, collapsible content panel (#183)
  • vocabulary: Paste a glossary instead of typing it one term at a time (#188)
  • content: Say what the row icons do, and what the media actually is (#189)
  • shell: Let the sidebar be resized, and collapsed (#190)
  • content: Read the title from the field the model declares (#192)
  • content: Connect the search that was already built, and stop (#193)
  • content: Filter and sort a listing by what the model actually declares (#195)
  • content: Heal a diverged advance with the ecosystem's reconcile (#201)

Full release notes (11 fixes): GitHub release v0.3.0.


v0.2.1 ​

Released 2026-07-27 · compare changes

Full release notes (2 fixes): GitHub release v0.2.1.


v0.2.0 ​

Released 2026-07-17 · compare changes

Full release notes (10 fixes): GitHub release v0.2.0.


v0.2.0-beta.1 ​

Enhancements ​

  • Providers: Selectable auth × database provider pair — a Studio-managed AuthProvider on plain PostgreSQL, chosen behind boot validation, that replaces Supabase GoTrue on managed deployments (portable migration lineage, RLS helpers, and a full 43-method Postgres DatabaseProvider)
  • Remote MCP: Studio-managed OAuth 2.1 authorization server, a projectId-less remote MCP endpoint behind the OAuth grant, and a Connected Apps panel to review and revoke remote MCP connections
  • MCP: Bump @contentrain/mcp to 1.10.0 (session fingerprinting, media tool classes) and expose the media tools over MCP Cloud
  • AI: Add Claude Sonnet 5 and consolidate the chat model list into a single-source catalog
  • CDN: Emit per-locale content bundles for single-fetch delivery; require an explicit CDN bucket and alert on swallowed R2-teardown failures
  • Auth: Directory-review support — env-gated reviewer login for app-directory submissions

Performance ​

  • Agent: ~6x fewer GitHub API calls in the agent write path
  • CDN: Serve the delivery hot path from in-process caches with conditional R2 reads

Bug Fixes ​

  • Auth: Keep user sessions off the service-role client, pin the OAuth exchange redirect_uri to siteUrl behind proxies, and let the OAuth module own both legs of the dance (its own CSRF state)
  • CDN: Stop a full rebuild from wiping out-of-band media binaries, and derive webhook build paths from the compare API rather than payload commits
  • Git: Never auto-delete the source branch on merge (MCP 1.8.0)
  • Brain: Fall back to a full rebuild off the default branch when .contentrain is missing
  • Content: Handle document per-slug meta in status, copy-locale, and the UI; add 17 dictionary keys used in code but never defined
  • Chat: Refuse media-intent uploads while a project's CDN delivery is off

Chore ​

  • Ignore .codex/ agent local configs

v0.1.0 ​

First stable release, closing out the v0.1.0-beta line.

Enhancements ​

  • Media: Public media management API (/api/media/v1) — CRUD routes, scoped API keys, and a scope-selection UI shared with CDN keys
  • CDN: Public media delivery with build-time path rewriting, plus edition/plan gating that aligns the Assets and CDN surfaces
  • Editor: Source-mode markdown editor and an agent markdown-authoring guide
  • Chat: Attach external files and links to conversations, with explicit attachment intent
  • Agent: Publish/media/branch tools and relation-integrity checks at save; system prompt and enforcement aligned with governance and edition
  • Content: Array-of-object field editing
  • Observability: Sentry error and performance monitoring
  • SEO: Page titles, head meta, and Open Graph tags

Bug Fixes ​

  • Chat: Replace retired Claude model IDs, and fix turn streaming, document date validation, and live context reactivity
  • Content: Merge document and collection/singleton saves with the existing entry instead of replacing, and resolve document paths under the model id
  • Billing: Grant the free trial once per workspace, use the real trial_end, and surface a clean error when the payment provider call fails
  • Members / Workspace: Owner keeps the owner role after inviting a member; drop a non-existent column from the project_members insert
  • Config: Fail boot if the service-role key isn't actually service_role
  • Forms / Webhooks / Branches: Render the "None" captcha option, add missing webhook dictionary keys, and decode percent-encoded branch route params

Documentation ​

  • Close the mobile-responsive shell item (shipped since v0.1.0-beta.1)

Chore ​

  • Standardize contentrain.io email addresses and dependency bumps

v0.1.0-beta.8 ​

Enhancements ​

  • MCP Cloud: Hosted HTTP endpoint, API key management, and a workspace settings tab for keys (Faz S6)
  • MCP Cloud: Honor project workflow + plan for external writes, enforce tool allowlist, fix quota semantics, and improve onboarding
  • Pricing: Simplify free tier, boost starter, upgrade Pro, and wire the enterprise CTA
  • Billing: Polar payment plugin, usage outbox drainer, usage meters, Stripe overage billing, and trial-ending reminder emails
  • Billing: Normalize payment state into payment_accounts + outbox
  • Scripts: Content-driven Polar sync (products, prices, meters)
  • Email: Shared branded layout and Polar webhook notifications
  • Legal / Runtime: Editions, deployment profiles, and an edition-aware license system with matching UI surfaces
  • GitHub App: Connect-existing flow, repo-level access lifecycle (revoke / delete / rename), and ownership verification
  • Chat: Durable internal tool trace persistence
  • Content Engine: Align with @contentrain/mcp 1.5.0, query 6, and types 0.5.1
  • Enforcement: Orphan feature cleanup — enforce or flag roadmap items

Performance ​

  • AI: Anthropic prompt cache and cache token accounting

Bug Fixes ​

  • MCP Cloud: Close launch blockers, exempt /api/mcp from session auth, forward the client Accept header to the loopback server, and pass Retry-After as a number
  • Billing: Resolve self-host detection, redirect free workspaces to checkout, correct the Conversation API actor model, and revert reserved message slots on failed or aborted chats
  • Chat: Preserve assistant text blocks across tool iterations, persist conversation trace rows reliably, and remove non-existent columns from the conversations query
  • Auth: Exempt forms and the Conversation API from session middleware
  • Settings: Plan display, self-host UX, and trunk-based branch model
  • CI / Deploy / DB: Use CHANGELOG.md for release notes, pin pnpm, fix deployment routing, and restore Supabase role grants

Refactors ​

  • Adopt the @contentrain/mcp RepoProvider surface and delegate content operations, validation, and serialization to @contentrain/mcp (Faz S1–S4)
  • Billing: Introduce a payment provider plugin registry and derive PLAN_* constants from .contentrain content
  • Chat: Shared history builder with model / plan / source-aware budgets

Documentation ​

  • Reflect MCP integration and S6 prep in the roadmap, align deployment docs with the trunk-based flow, and finalize License v1.0

Chore ​

  • Dependency bumps and a hardened DB baseline for portability

Tests ​

  • Chat: Update integration assertion to expect populated assistantText

v0.1.0-beta.7 ​

Enhancements ​

  • API: Add CLI integration endpoints for the Studio CLI

Bug Fixes ​

  • Content: Align validation and serialization tests with @contentrain/types

Refactors ​

  • Content: Migrate validation and serialization to @contentrain/types

Documentation ​

  • Update roadmap and CLAUDE.md for CLI integration and overage billing

v0.1.0-beta.6 ​

Enhancements ​

  • Billing: Add overage billing system with a usage dashboard

v0.1.0-beta.5 ​

Bug Fixes ​

  • Security: Atomic plan limit checks and GDPR audit logging gaps

Documentation ​

  • Mark resolved deferred items and fix the media route test mock

Chore ​

  • Dependency bumps (Docker actions, testing group, ESLint, Tailwind CSS, Vue group, @types/node)

v0.1.0-beta.4 ​

Bug Fixes ​

  • Billing: Remove per-seat pricing, adopt a flat-rate model, and align the Pro seat limit to 10
  • Webhooks: Complete all 8 webhook event dispatches and fix test coverage

Documentation ​

  • Add public ROADMAP.md and align deferred items across all docs

v0.1.0-beta.3 ​

Bug Fixes ​

  • Release: Include the full Docker build context

Documentation ​

  • Align Studio open-core positioning

v0.1.0-beta.2 ​

Tests ​

  • e2e: Stabilize CDN panel rebuild assertion

v0.1.0-beta.1 ​

Initial beta release of Contentrain Studio.

Enhancements ​

  • Supabase auth provider, API routes, and auth UI
  • Auth UI with Contentrain SDK, Annon icons, and Tailwind CSS 4 theme
  • Logo assets, favicon, and Radix Vue atom components
  • Nuxt layout system with NuxtImg and workspace three-panel
  • Auth guard with redirect
  • Auth-marketing Contentrain model
  • Syne display font for headings and marketing content
  • Error page UI strings
  • Workspace hierarchy (User -> Workspace -> Project)
  • Sidebar-first layout
  • GitHub App provider with installation flow
  • ConnectRepoDialog for repository connection
  • Project workspace page with chat + context panel
  • EmptyState, Skeleton atoms, NuxtLoadingIndicator
  • Dark/light theme toggle, workspace settings
  • Content snapshot API + context panel with model list
  • Sidebar model section in project view
  • vue-sonner toast notifications
  • Content model browsing, slug editing, sidebar model selection
  • IndexedDB snapshot cache, view transitions
  • Type-aware content field display (all 4 content kinds)
  • @contentrain/types v0.2.0 integration
  • Domain-grouped model list with kind icons and entry counts
  • Collapsible domain groups
  • Markdown preview with Tailwind Typography
  • Nested objects and array-of-objects rendering
  • Locale switcher in context panel
  • GitProvider write operations
  • Content Engine (validation, serialization, write path)
  • Database migration, encryption, Anthropic SDK
  • AIProvider interface, Anthropic implementation, chat SSE endpoint
  • Chat UI (composable, bubbles, tool cards, input, panel)
  • Project initialization flow (Path B)
  • Inline content editing (click to edit, creates branch)
  • Branch management API + sidebar pending changes
  • Live project state in system prompt
  • Context pin + drag system (share content with agent)
  • Comprehensive Contentrain architecture in system prompt
  • Vocabulary + context.json loading
  • Vocabulary + project stats in content panel overview
  • Radix Vue tooltips on project stats
  • Meta files, relation integrity, unique constraints, document support
  • Context.json tracking on every operation
  • Entry status badges + document kind write support
  • Modal-based content editor + CRUD chat prompts
  • Branch diff UI, role-based workflow, GitHub webhook
  • Workspace and project member management UI
  • Project settings modal, vocabulary editing, config API
  • Chat project switch reset, avatars, context attach to message
  • Conversation history, model selection, API endpoints
  • Enterprise edition structure + license feature flags
  • Comprehensive plan-based feature gating
  • Rate limiting + BYOA key management UI
  • copy_locale tool, branch protection PR fallback, command palette
  • Auto-detect GitHub App installation on tab focus
  • CDN content delivery infrastructure
  • CDN project settings UI
  • CDN usage metering and per-key rate limiting (EE)
  • CDN real-time build progress via SSE
  • Plan badge on workspace switcher + session persistence
  • Command palette with search, commands, and recents
  • Content publish workflow + CDN status filtering
  • Clickable publish/unpublish status badge
  • Diff-based stale object cleanup in CDN builds
  • Boot-time config validation via Nitro plugin
  • Starter kit templates, repo name display
  • Media management infrastructure (provider, migration, variants)
  • Media processing pipeline (Sharp optimizer, variants, blurhash)
  • Media API routes (upload, list, CRUD, URL import, bulk ops)
  • Media agent tools (search, upload from URL, get metadata)
  • Asset manager UI (composable, card, uploader, detail, grid panel)
  • Content field media integration (picker, thumbnail preview)
  • CDN media manifest, endpoint media serving, usage tracking
  • Media UI string dictionary entries (37 keys)
  • Full-screen asset manager modal
  • Upload UX with XHR progress bar in drag-drop zone
  • Media assets in chat context pin system
  • Empty state illustrations, GitHub installation checks, Pro CTAs
  • Form submission infrastructure (public endpoints, validation, security)
  • Form config API, Turnstile captcha, honeypot, HTML sanitization
  • Outbound webhooks (CRUD, deliveries, retries, HMAC signing)
  • Conversation API (public endpoints with API key auth)
  • Conversation key management (CRUD, model/locale restrictions)
  • Brain content analysis tools (SEO audit, locale parity, quality score)
  • Schema validation tool with health scoring
  • Profile + account settings (display name, avatar, account deletion)

Bug Fixes ​

  • Comprehensive security audit (30+ fixes across auth, forms, CDN, media, webhooks)
  • Numerous UX, accessibility, and error handling fixes

Documentation ​

  • Open source governance suite (LICENSE, CONTRIBUTING, CODE_OF_CONDUCT, SECURITY)
  • Deployment guides (SELF_HOSTING, DOCKER, DEPLOYMENT)
  • README rewrite

INFO

For the complete commit-level changelog, see the GitHub releases page.

Released under the AGPL-3.0 License.