=== VX Framework ===
Contributors: vxframework
Tags: custom fields, custom post types, dynamic data, ai, mcp
Requires at least: 6.9
Tested up to: 7.1
Requires PHP: 8.1
Stable tag: 1.3.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

The data modeling layer for agentic WordPress. Model your content once - use it in the block editor, any builder, headless, or with AI.

== Description ==

VX Framework is the data model layer for WordPress. You describe the
structures your site needs. The framework supplies the editing interface,
the storage, and the validation.

Create fieldsets in the UI, in PHP, as JSON, or through an AI
assistant. Assign them to posts, terms, or users. Bind the values into
the block editor. The same typed model is what your theme and your
agents read.

= Features =

* Fieldsets with Locations, conditional logic, and revisions
* 40 field types, including Repeater, Section and Tabs
* Custom post types and taxonomies
* Dynamic data for the block editor with VX Script
* AI-ready: MCP, WordPress abilities, and WP-CLI
* Config as code: PHP and JSON
* Bricks, Oxygen, and Breakdance integrations
* Built-in documentation

Site: [vxframework.com](https://vxframework.com/)
Docs: [docs.vxframework.com](https://docs.vxframework.com/)

= Create fieldsets. Assign them anywhere. =

A fieldset is a named group of fields - the building block of your
content model. You design it once and reuse it.

**Locations** decide where it appears: a post type (including ones you
did not register), a taxonomy, or a user profile, optionally limited by
role. Conditional logic, revisions, and import/export live in the same
editor.

Create the fieldset visually, describe it to an assistant over MCP, or
define it in Local JSON or PHP and keep it in version control.

= Field types for any model =

* **Input** - Text, Textarea, Rich text, Number, Stepper, Email,
  URL, Phone, Password, Color, List, Slider, Range slider, Code
* **Choice** - Select, Multiselect, Checkboxes, Radio Buttons,
  Button Group, Switcher
* **Dates** - Date, Date range, Time, Date & Time
* **Media** - Image, Gallery, SVG, Video, Audio
* **Relational** - Taxonomy, Select Post, Select User
* **Composite** - Group, Repeater
* **Layout** - Section, Tabs, UI Heading, UI Spacer, UI Notice,
  UI HTML

= One model, any front-end =

Use VX with the block editor, Bricks, Oxygen, Breakdance, or a custom
theme. In templates, PHP helpers and hooks read typed field values.
The model does not change when the front-end does.

= Config as code =

Register post types, taxonomies, and fieldsets as JSON or PHP in your
theme or plugin, and keep your model in version control. Edits made
in the dashboard can be synced back to the files. The files describe
structure only, never content, so they move safely between
development, staging, and production.

= Dynamic data for the block editor and page builders =

Bind any field to any block with VX tags on the Block Bindings API.
Shape values with **VX Script** - tags, modifiers, and chainable
expressions. Loop a repeater or a gallery so each row renders as its
own block. Show or hide any block with visibility rules: user, content,
request, time, or a VX Script expression.

Building with Bricks, Oxygen, or Breakdance instead? The same fields
appear in the builder's dynamic data picker and loops.

= Content editing that feels native =

Navigate fieldsets from a collapsible sidebar. Edit on the canvas or in
form view. Everything stays in sync.

= Agentic WordPress, out of the box =

A typed data model agents can read and write through MCP and WordPress
abilities. The same catalog is available
from WP-CLI. The MCP endpoint stays off until you enable it. Reading and
writing are separate permissions - you grant each one yourself.

= VX Framework Pro =

VX Framework Pro is a separate plugin, available through [vxframework.com](https://vxframework.com/).

Same model, more field types and modules.

[https://www.youtube.com/watch?v=z7I0jxV4Dn0&rel=0](https://www.youtube.com/watch?v=z7I0jxV4Dn0&rel=0)

* **Fields** - Markdown, Files, Clone, Post Relation, User Relation, Recurring Date, Field Table, Content Sections, Location, Area
* **Option Pages** - site-wide settings screens built from fieldsets
* **Dictionaries** - shared choice lists, plus built-in lists of countries, currencies and units
* **REST API** - typed, access-controlled field values for apps and headless front ends
* **Shader** - a local development tool for building WordPress themes with AI and one-click deploy.
* **Premium support** - direct support from the VX team

Get VX Framework Pro at [vxframework.com](https://vxframework.com/pro/).

= Tools =

System information, Meta Watch, field key conflict detection, and
import/export.

= Documentation =

The user guide and the developer documentation ship inside the plugin
and are read from the dashboard. They cover what is in this package,
and they match the version installed on the site, with no connection
required. The same documentation is also online at
[docs.vxframework.com](https://docs.vxframework.com/).

== Installation ==

1. Install through Plugins → Add New, or upload the folder to
   `/wp-content/plugins/vx-framework`.
2. Activate the plugin through the Plugins screen.
3. Open **VX** in the admin menu and create your first fieldset.

== Frequently Asked Questions ==

= Does it work with the block editor? =

Yes. Field values are available as dynamic data inside the block
editor. You can bind them to blocks, loop them, and drive visibility
from the same model.

= Can an AI assistant work with my model? =

Yes. VX registers its operations as WordPress abilities and can serve
them over MCP. The endpoint stays off until you enable it.

= Can I define the model in code? =

Yes. Register fieldsets, post types, and taxonomies in PHP or JSON
in your theme or plugin. The dashboard stays usable for everything
that is not in code.

= Does it work with page builders? =

Yes. With Bricks, Breakdance, or Oxygen 6+, VX fields appear in the
builder's dynamic data picker.

== External services ==

This plugin does not connect to any external service. Its fonts and other
assets are served from the plugin itself. The admin links to two websites,
both from cards under Settings: vxframework.com from the VX Framework Pro
card, and getshader.com from the Shader card. Neither link opens unless
clicked.

If you bind a URL field to a video element in Breakdance or Oxygen 6+, the
builder gets the embed from the video's service, as it does for its own video
fields.

== Source code ==

The admin interface is a compiled Vue application. The complete, unminified
source it was built from ships in this package in `client/src`, together with
the `package.json`, `package-lock.json` and `vite.config.js` that build it.
Running

    cd client && npm install && npm run build

rebuilds `client/dist` from those sources, with the configuration exactly as it
ships - the same entry points and the same chunks, from the same dependency
versions the lockfile pins. Nothing in the package is obfuscated.

The PHP libraries in `app/vendor` ship as readable source under their own
licences, each one named with its version and its licence file in
`LICENSE-THIRD-PARTY.txt`.

== Changelog ==

= 1.3.1 =
* New: AI assistants can create, edit and delete menus, classic and block theme alike, with undo.

= 1.3.0 =
* New: Oxygen 6 and Breakdance support: VX fields in the dynamic data picker, VX lists in the Repeater Field element, and Post Loops of posts a field picks or sorts.
* New: Anyone who can edit a post, term or user can fill in its VX fields, as each fieldset's Viewer conditions allow. Building fieldsets stays with administrators.
* New: AI assistants can add files to the media library through WordPress's own upload checks, find them, edit their details and alt text, and delete them.
* New: AI assistants can read and set a post's terms, and open or close its comments.
* Improved: In the Site Editor, a `single` or `singular` template used by one post type previews it at once, and a notice says when tags have no sample.
* Improved: An invalid email or link is kept as typed, with a warning, instead of being emptied or rewritten, and the editor flags it.
* Improved: Phone fields have a Default country, and read numbers written with 00 or (0).
* Improved: Length limits count characters rather than bytes.
* Improved: Undo says when it leaves changes in place, and large values and long post bodies keep their undo.
* Fixed: In Bricks, gallery lists, tags after a loop, and lists of posts and media render correctly, and a modifier on a list applies to each item.
* Fixed: VX fields on an image's Edit Media screen save, and files uploaded from a term's or user's fields no longer attach to an unrelated post.
* Fixed: Draft, private, scheduled and trashed posts picked in a field no longer show in dynamic tags and loops.
* Fixed: Block editor saves keep to each fieldset's Viewer conditions.
* Fixed: A partial save by AI assistants no longer needs the field that shows or hides another, and reports a hidden field sent a new value.
* Fixed: A Taxonomy field in WordPress's own metabox saves when AI assistants or PHP set it, and an unknown term gets a warning.
* Changed: On user profiles, a fieldset with no Viewer condition is for administrators only, their own profile included; a Viewer role or capability opens it.
* Changed: A Taxonomy field is read-only for anyone who can't assign that taxonomy's terms, as in WordPress's own box.
* Changed: AI assistants get a far smaller dynamic data catalog, one relation deep. `path`, `depth`, `detail` and `include` return more.
* Developers: forget() and flush() on Post, Term and User. Reads list fields they leave out under `omitted`, with a reason. Every value error and warning has a code. The block linter checks @site, @user and @author.

Earlier releases: [changelog.txt](https://plugins.trac.wordpress.org/browser/vx-framework/trunk/changelog.txt) and [vxframework.com/changelog](https://vxframework.com/changelog/).

== Upgrade Notice ==

= 1.3.1 =
AI assistants can now create, edit and delete your menus, with undo for every change.