Skip to content

Content Editing

The Content Panel is the right-side panel in the project workspace. It provides structured views for browsing and editing content entries, with specialized interfaces for each model kind.

Content Panel Navigation

The content panel has several view modes:

ViewTriggerPurpose
OverviewClick project name in sidebarShows all models with entry counts
CollectionClick a collection modelLists entries in a searchable table
SingletonClick a singleton modelShows the single entry editor
DocumentClick a document modelShows documents with Markdown preview
DictionaryClick a dictionary modelShows key-value pair editor
VocabularyClick Vocabulary in sidebarShows project-wide vocabulary terms
BranchClick a branch in sidebarShows the branch diff viewer

Browsing Entries

Collection View

When you select a collection model, the content panel shows a list of all entries. Each entry displays field values in a compact row format.

Collection view: a model's entries listed with status badges in the content panel

Features:

  • Search: Filter entries by text content
  • Locale switcher: Switch between locales for i18n-enabled models
  • Entry count: Total number of entries displayed in the header
  • Click to edit: Click any entry to open the editor modal

Singleton View

Singleton models display their single entry directly in the panel. Fields are shown as a form that you can edit inline.

Document View

Document models show entries with their Markdown content. Each document is identified by its slug and displays a preview of the body content.

Dictionary View

Dictionary models show a flat list of key-value pairs. You can add, edit, and remove entries directly in the panel.

The Editor Modal

The editor modal provides a full-featured editing experience for individual entries. It opens when you click an entry in any content view.

The editor modal for a blog post — a relation field (author), a relations field (categories), an image field that takes a media path or URL (cover_image), and a text field (excerpt), with a Save changes button

Editing Modes

The editor supports two modes:

ModeHow it Works
InlineClick a single field to edit it in place. Saves immediately on blur.
BatchOpen the full editor modal. Edit all fields, then save all changes in one commit.

Creating New Entries

For collection models, use the Add entry button in the content panel header. This opens the editor modal with empty fields.

For singletons, the entry always exists — you edit the existing one.

Field Editing

Each field type has a specialized editor:

  • String/Text: Input field or textarea
  • Markdown/Richtext: Editor with formatting toolbar
  • Image: Asset picker connected to the media library
  • Date/Datetime: Date picker
  • Boolean: Toggle switch
  • Select: Dropdown with predefined options
  • Relation: Entry picker showing entries from the target model
  • Array: Repeatable item list with add/remove controls
  • Object: Nested field group
  • Color: Color picker with hex input

Saving Changes

When you save content (either inline or batch), Studio:

  1. Validates the data against the model schema
  2. Creates a cr/* feature branch
  3. Commits the change to the branch
  4. Auto-merges to the contentrain SSOT branch (if auto-merge is enabled)
  5. Shows a success toast with the branch name

TIP

Every content save creates a Git commit. You can always see exactly what changed by viewing the branch diff.

Content Status Workflow

Content entries in collections support a status workflow:

Content entries with status badges (draft, published) and the publish/unpublish toggle on row hover

StatusDescription
draftEntry is being worked on, not ready for publication
publishedEntry is approved and visible to consumers
in_reviewEntry is pending review by a Reviewer
rejectedEntry was reviewed and sent back for revision
archivedEntry is retired and hidden from default views

Changing Status

You can change an entry's status through:

  • The status dropdown in the editor modal
  • The AI chat ("Set the blog post 'Hello World' to published")
  • The content panel's status action buttons

WARNING

Status changes also create Git commits on review branches. The CDN only serves entries with published status.

Multi-Locale Editing

For models with i18n: true, the content panel includes a locale switcher:

  1. Select a model in the sidebar
  2. Use the locale dropdown to switch between available locales
  3. Edit content in the selected locale
  4. Each locale has its own content file in the repository

Copying Content Between Locales

To bootstrap a translation, you can ask the AI agent:

"Copy the English blog posts content to Turkish"

The agent uses the copy_locale tool to copy all entries from one locale to another without overwriting existing translations.

Vocabulary Editor

The vocabulary is a project-wide set of terms shared across all locales. Access it from the sidebar under Vocabulary.

The Vocabulary editor: shared term keys mapped to translations, with an add-term row

Features:

  • Add terms: Enter a key and values for each locale
  • Edit terms: Click any term to modify its translations
  • Delete terms: Remove terms that are no longer needed
  • Search: Filter terms by key or value

Vocabulary terms are stored in .contentrain/vocabulary.json and are separate from dictionary models.

Content Panel Context

Items in the content panel can be pinned to the chat context. This helps the AI agent understand what you are working on:

  1. Hover over a model, entry, or field in the content panel
  2. Click the pin icon to add it to the context bar
  3. The pinned item appears as a chip above the chat input
  4. Send a message — the agent sees the pinned context

You can also drag and drop items from the content panel to the chat context bar.

See AI Chat for more details on the context system.

Editing via AI Chat

All content operations can be performed through the AI chat instead of the UI:

"Create a new blog post titled 'Welcome' with author 'a1b2c3d4e5f6'"
"Update the site settings tagline to 'Build faster with AI'"
"Delete the FAQ entry with ID 'x9y8z7w6v5u4'"
"Add a new key 'nav.blog' with value 'Blog' to the UI Strings dictionary"

The agent handles schema validation, branch creation, and Git commits automatically.

Next Steps

Released under the AGPL-3.0 License.