You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implement the JSON Schema-driven custom fields ("meta box") system: field-group registration, server-side validation against posts.meta or sidecar columns, and the typed MetaStore API plugins use to read/write meta.
Design reference
docs/01-core-cms.md §9 (The Meta Box / Custom Fields Problem)
docs/01-core-cms.md §9.2 (JSON Schema-driven field groups)
docs/01-core-cms.md §9.4 (Storage: meta / sidecar / column)
docs/01-core-cms.md §3.5 (Plugin-extensible meta API)
internal/content/fields.Register(group) parses + validates the JSON Schema on register
On posts insert/update, every applicable field group's schema is validated against incoming data; storage routes to posts.meta, sidecar, or column per the storage.kind
MetaStore interface implemented per §3.5: Get, Set, Delete, Query with constrained predicate language (eq, gt/lt, exists, in)
Per-namespace write authorization: a plugin can only write keys under its own meta_namespace
Integration test: register a field group with sidecar + meta fields; create a post; verify both routes persist and the JSON Schema validation rejects bad input
Summary
Implement the JSON Schema-driven custom fields ("meta box") system: field-group registration, server-side validation against
posts.metaor sidecar columns, and the typedMetaStoreAPI plugins use to read/write meta.Design reference
Acceptance criteria
field_groupsregistry table created (id, title, applies_to, namespace, schema JSONB, origin)internal/content/fields.Register(group)parses + validates the JSON Schema on registerpostsinsert/update, every applicable field group's schema is validated against incoming data; storage routes toposts.meta, sidecar, or column per thestorage.kindMetaStoreinterface implemented per §3.5:Get,Set,Delete,Querywith constrained predicate language (eq, gt/lt, exists, in)meta_namespaceDependencies
#14, #22
Complexity
XL