Skip to content
UI Brok

Loading…

No results

Changelog

All notable open-core changes to the jml/brok package and registry items.

Unreleased

BREAKING: De-branded generic components (hard rename, no aliases)

  • Eight components wrongly prefixed ai- were renamed to neutral names and moved from the nested ui/ai/ namespace to a flat <x-ui.*> tag (each bumped to 2.0.0). There are no aliases — the old tags/slugs are gone. A new Chat & Messaging component group holds the two chat primitives.
  • ai-api-keymasked-input (Forms & Inputs)
  • ai-citationcitation (Data Display)
  • ai-feedbackreaction-bar (Feedback & Status) — events ai-feedback-vote/ai-feedback-sharereaction-bar-vote/reaction-bar-share
  • ai-image-variantsimage-picker (Media) — event ai-image-selectimage-select
  • ai-messagechat-bubble (Chat & Messaging)
  • ai-chat-exchangechat-thread (Chat & Messaging) — now depends on chat-bubble
  • ai-suggestionssuggestion-chips (Forms & Inputs) — event ai-suggestionsuggestion-select
  • ai-summarysummary-card (Data Display)
  • A second wave of seven ai--prefixed components were likewise hard-renamed (no aliases), bumped to 2.0.0, and — where they reimplemented an existing primitive — recomposed on that primitive.
  • ai-token-counterusage-meter (Data Display) — now composes the progress primitive; threshold tone warns as usage nears its total
  • ai-context-gaugeusage-gauge (Data Display) — now composes the gauge primitive; supports a semi used/total readout and an arc percentage with an optional caption
  • ai-temperaturerange-field (Forms & Inputs) — now composes the slider primitive; generic min/max/step/value/label/decimals with a live readout and an optional two-ended gradient legend
  • ai-generated-codecode-block (Media) — copy is now the copy-button primitive; the AI-specific regenerate button became a generic $actions slot
  • ai-system-prompteditable-card (Layout) — generic label/value/placeholder inline-editable text card
  • ai-model-comparisoncomparison-cards (Data Display) — generic option cards comparing arbitrary attribute rows + a primary metric, with any card flagged recommended
  • ai-thinking-dotsdots-loader (Feedback & Status) — adds a variant prop: shimmer and bounce; per-variant classes in _styles.php
  • progress bumped to 1.1.0 — added an optional tone prop (default/success/warning/destructive) on the fill indicator so usage-meter can signal a near-full value.
  • slider bumped to 1.1.0 — now dispatches a bubbling slider-change CustomEvent on input so wrappers like range-field can react to value changes.
  • select-advanced bumped to 1.1.0 — rich-option support: <x-ui.select-advanced.option> accepts optional description, meta, and an icon slot (covers the removed ai-model-selector case). Backward compatible.
  • The meters family (Data Display) gained usage-meter ("Usage (linear)") and usage-gauge ("Usage (radial)").

Rebrand to Brok

  • Renamed the product from "JML UI" to Brok (a JML Agency B.V. project). Composer package jml/uijml/brok, PHP namespace Jml\UiJml\Brok, service provider JmlUiServiceProviderBrokServiceProvider, JS runtime global window.JmlUiwindow.Brok, and package env vars JML_UI_*BROK_*.
  • The consumer-facing API stays neutral and unchanged (shadcn-style): x-ui.*, ui:add/ui:*, ui.json, ui-lock.json, resources/views/components/ui, and the open/pro tier keys. The Laravel config key was de-branded to the neutral config('ui.*') family.
  • Subtle Norse references (no UI theming): Sindri brands the Pro tier, Yggdrasil names the registry, and Bifröst names the registry client.
  • Docker ops identifiers and dated historical docs were intentionally left unchanged.

Bundles (curated install presets)

  • Added bundles — maintainer-curated, role-based install presets. A bundle is a fileless registry:bundle item whose members live in its registryDependencies; php artisan ui:add bundles/<name> installs the whole curated set in one command.
  • Shipped four open bundles: bundles/core (essential primitives), bundles/landing-page, bundles/saas-app, and bundles/admin.
  • Added the first pro bundle, bundles/admin-pro: the open admin starter plus Pro dashboard/analytics/user-management/team/billing/settings/notification blocks.
  • BuildRegistry recognises the new type and rejects dependency cycles; the registry-item schema allows registry:bundle and a fileless files array.
  • Added a /bundles docs page (catalog.bundles) and guards: registry↔catalog bundle parity, build-time cycle/unknown-member validation, a sandbox install dogfood (BundleInstallTest), and a packages/ui test pinning the zero-CLI-change resolution guarantee.

Component audit fixes

  • kanban (1.0.0 → 1.0.1): added a destroy() handler that removes window pointermove/pointerup/pointercancel listeners if the component is unmounted mid-drag, closing a listener leak.
  • table-of-contents (1.0.0 → 1.0.1): auto-generated heading ids are now disambiguated (-2, -3, …) so duplicate heading text no longer collapses active-section tracking onto the first match.
  • select-advanced (1.0.0 → 1.0.1): added a destroy() handler that clears the pending type-ahead timer so it cannot fire after teardown.
  • status (1.0.0 → 1.1.0): refactored to read its variant/size class recipes from the shared _styles.php registry, matching status-indicator; behaviour unchanged.
  • ai-api-key (1.0.0 → 1.0.1): now declares its label dependency — it composes <x-ui.label> but only listed input-group, so a standalone install rendered an undefined component. Added a RegistryDependencyTest guard that fails if any component composes an <x-ui.*> it does not declare.
  • Synced the docs-registry and sandbox installed mirrors and regenerated ui-lock.json / .jml base caches for the changed items.

Navigation

  • Surfaced kanban, which shipped in the open registry but had no catalog entry — so it was installable yet absent from the docs, sidebar nav, and every test. Added its catalog entry (Data Display group), docs preview, and render/a11y/install-lock coverage.
  • Added a registry → catalog parity guard (CatalogNavigationTest) asserting every registry/open/components/* and every open/pro block has a catalog entry, so a component can no longer ship invisible to docs, nav, and tests.
  • Added component variant families for discovery: Status (status, status-indicator), Timeline (timeline, timeline-steps), Text Effects (text-animate, typewriter, kinetic-text-reveal, letter-cascade, particle-typography, text-repel, text-gradient), and Meters (gauge, circular-progress).

Repo hygiene

  • Moved internal system/execution planning documents under docs/planning/ and fixed references that pointed at the old repo-root paths.

Earlier

  • Fixed open registry AI component manifest paths so source builds validate.
  • Hardened registry item installation with target-path validation and hash verification.
  • Made ui:install conservative on rerun so existing project files and lock metadata are preserved.
  • Added JavaScript import wiring and npm dependency notices for JS-backed registry items.
  • Added open-core export tooling and stricter public-boundary audit checks.
  • Added package command tests and registry-client path validation tests.
  • Added CI matrix, browser smoke-test scaffolding, and open-source governance documents.