Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, this project adheres to Semantic Versioning, commits follow Conventional Commits, and this changelog is generated by Structured Changelog.

Unreleased

v0.8.0 - 2026-09-26 (a200371)

Highlights

  • Specification-driven UI composition platform: pages are declarative PageSpec JSON (apiVersion ui.plexusone.dev/v1) validated against a versioned component registry, with Go types as the source of truth and generated JSON Schemas
  • Two fully parallel renderers — React and standard web components via Lit — emitting an identical data-uiforge-* DOM vocabulary, verified by fixture-driven cross-renderer conformance suites
  • Async data-source runtime in both renderers: pluggable connectors, loading/error states, per-component caching, and cache invalidation via the component.refresh interaction action
  • Design-system integration built on design-system-spec (DSS): components consume a fixed semantic token vocabulary, and the theme adapter maps any DSS document onto it — including white-label var() references to the host brand's own CSS custom property prefix

Added

  • UISpec core Go types: PageSpec, ComponentInstance, LayoutSpec (responsive-grid, stack, split-pane, tabs, application-shell), Binding, Interaction, NavigationSpec, VisibilityRule, ThemeRef, and profile constraints (8ff0a3c)
  • Component registry with ComponentSpec manifests and page validation, builtin core/analytics/assistant/application namespaces (25 manifests), external manifest loading (file and directory), version compatibility checking (exact, prefix, and caret forms), and instance property validation against manifest schemas (a47ec45)
  • Runtime engines: ${...} expression evaluation, hierarchical page state store, event-to-action interaction engine, and PageSpec tree diffing (0d3113c)
  • JSON Schema generation from the Go types (draft 2020-12) with schemas embedded via go:embed for runtime validation (6f6d6c7)
  • theme package: adapts design-system-spec documents into UIForge themes — semantic token bindings, light/dark mode selection, scoped stylesheet generation, and configurable source-prefix var() references for white-labeling (16c51b4)
  • @plexusone/uiforge-spec: shared TypeScript package holding the UISpec types and the framework-free expression/state/interaction/datasource/data engines consumed by both renderers (b266f93)
  • @plexusone/uiforge-renderer: React renderer with all five layouts, sidebar navigation, error boundaries, visibility rules, theme tokens, the async data runtime, and core/analytics/application component packs (18 components) (b274c6c)
  • @plexusone/uiforge-renderer-lit: Lit web-components renderer () with layout, navigation, children/slot, engine, and component-pack parity with the React renderer (971e60d)
  • Browser demo of the Lit renderer: a full sales dashboard from one inline PageSpec with a live async data source, served with no bundler via import maps (abdd1f1)

Changed

  • theme package migrated to design-system-spec v0.7.0's first-class modes: colorValue and FromDesignSystemWithModes now read ColorToken.EffectiveModes()/DesignSystem.Modes directly instead of deriving light/dark overlays by diffing three generated theme variants; overlays are generated for every mode a document declares, not just light/dark
  • BREAKING: ThemeRef.density replaced the closed comfortable/compact enum (uispec.DensityComfortable/DensityCompact/IsValidDensity removed) with an open ID/scale pair: density selects a key in the new densities map, resolved from a DSS document's Foundations.Densities by theme.FromDesignSystemWithModes. Validation is now structural (density must be a key in densities) instead of a fixed two-value check. Both renderers read densities[density] for --uiforge-density identically; component packs are unchanged since they only ever consumed the resolved CSS variable

Dependencies

  • 1 dependency update

Documentation

  • Product and technical specs (PRD, TRD, PLAN, ROADMAP with RMI-UIFORGE-101+ numbering), README, and repository CLAUDE.md (dd26ff1)

Tests

  • Go unit and golden tests: five PageSpec fixtures validated through the registry, covering all builtin namespaces and the application profile (1c5804d)
  • React renderer suite (33 tests) plus fixture-driven conformance tests asserting the shared DOM vocabulary (ffdcc6a)
  • Lit renderer suite (39 tests): layouts, application components against the customer-record fixture, async data runtime, and conformance (10e4879)
  • Shared engine suite (44 tests) running under plain Node in @plexusone/uiforge-spec (b266f93)