Skip to content

Release v4.24.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 03:54
e274942

Every component descriptor now says how a picker presents it and how a designer edits it on the surface, and the property-editor ids the Studio registry resolves are defined in the model. (part of #99)

Added

  • ComponentDescriptor gains category, icon (an IconReference), badge, keywords and designMode. ComponentCategory holds the eight categories of the spec (Navigation, Data display, Input, Actions, Layout, Feedback, Overlay, Forms); a package may add its own.
  • ComponentDesignModeDescriptor declares, as data, where a component's items are (itemsPath, a Collection property), the "add" affordances and the floating item toolbar. availability and readOnlyReason are rule names, never functions; every edit is an ordinary collection edit, so undo/redo and the dirty state need nothing of their own. navigationDesignMode() and toolbarDesignMode() build the actions of spec DM3.
  • The property-editor vocabulary (PropertyEditorKind: text, number, boolean, enum, select, color, icon, list, reference, navigationTarget, renderingSlot, slice, inheritanceMode, template, sampleData, field, columnList, plus the structured kinds that already existed) and PropertyDescriptor.editorOptions (multiline, placeholder, unit, step, kinds, reference filter, fieldKinds, tokensOnly).
  • Engine rules shared by every host: validateComponentDescriptors (componentCategoryMissing error, componentCategoryUnknown warning, componentDesignModeInvalid, propertyEditorOptionsInvalid), matchComponentQuery (the picker filter: name/keyword substring, category by word start, highlight ranges, keyword hint), rankFrequentlyUsedComponents (top 6, count then recency) and componentBadge. All are asserted against the shared corpus component-metadata-fixtures.json.
  • Every component of the core, Cratis.Components, PrimeReact and both blueprint packages (164 components) now has a descriptor with category, icon, keywords and display name; Topbar, Sidebar, Toolbar and the navigation bar declare a design mode. validateComponentMetadata(bundle) checks a bundle (CMP1) and is run by a specification in each package and by a repository-level specification (registry.conformance) that enumerates all package registries.
  • The third-party fixture Acme.Inspections declares a category, icon, keywords and design mode using only public packages; documentation in Documentation/editing/descriptors.md and design-time-extensions.md.

Changed

  • Components that had no hand-written descriptor now have one with no editable properties (their name, category and icon), so a picker can list them. A package written before categories still loads: the category rule is checked by validateComponentMetadata, not by validatePackageBundle.