Releases: laravelui5/core
Finalize AbstractManifest and runtime integration
The AbstractManifest has been fully implemented. This version finalizes the manifest lifecycle, ensuring each UI5 module can now generate its own consistent laravel.ui5 fragment.
Changes
- Renamed
AbstractLaravelUi5Manifest→AbstractManifest. - Added
InvalidModuleExceptionwhen a module slug cannot be resolved. - Implemented all missing
build*methods:
buildMeta,buildRoutes,buildRoles,buildAbilities,buildSettings,buildActions,buildResources,buildIntents. - Added route name resolution for app routes in
buildRoutes(). - Unified URL construction for actions and resources.
getLaravelUi5Fragment()renamed togetFragment()for brevity and alignment with Laravel naming style.- All fragment sections now return stable, filtered arrays without empty values.
- Renamed base
TestCase→FeatureTestCasefor improved test context clarity. - Introduced dedicated unit tests per
build*method for granular coverage. - The
#[Role]attribute now supports an optional$scopeproperty, enabling semantic linkage between roles and domain models.
Compatibility Notes
- No breaking API changes for consumers using
Ui5Registry. - Future code should prefer
Ui5RuntimeInterfaceto access manifest data dynamically. getFragment()replacesgetLaravelUi5Fragment()– direct migration recommended.
Summary
This release completes the architectural transition of the manifest layer into a stable, runtime-driven foundation for LaravelUi5.
Developers can now rely on consistent manifest fragments, clear test coverage, and an extensible attribute system.
Runtime and Introspection Split
Added
Ui5RuntimeInterfaceintroduced as a lightweight, read-only contract for deterministic runtime lookups of modules and artifacts.
Changed
Ui5RegistryInterfacenow focuses solely on build-time introspection and metadata discovery.
Runtime responsibilities (lookup, routing, resolution) have been moved to the newUi5RuntimeInterface.- Method
all()has been renamed toartifacts()for clearer semantics and consistency with internal terminology.
Rationale
This architectural split formalizes the distinction between build-time reflection and runtime resolution, mirroring Laravel’s own cache and compilation model.
It improves clarity, performance, and maintainability by ensuring that cached registries only serve deterministic data, while introspection remains part of the development layer.
Impact
- Update any references to
Ui5RegistryInterface::all()→Ui5RegistryInterface::artifacts(). - Classes depending on runtime lookups should now type-hint
Ui5RuntimeInterfaceinstead ofUi5RegistryInterface.
Core Registry Simplification Changed
Changed
- Streamlined
slugFor()resolution inUi5Registryto directly use internal lookup tables. - Removed redundant mapping methods
namespaceToModuleSlug()andartifactToModuleSlug()from the registry interface for cleaner API and reduced duplication.
Rationale
These changes simplify the registry API by removing overlapping methods that duplicated existing responsibilities.
slugFor() now provides a single, consistent entry point for resolving artifact namespaces to slugs, improving clarity and maintainability across layers.
Unified role handling and improved registry consistency
- Unified Core role declarations using the
SettingVisibilityRoleenum, ensuring consistent role hierarchy and synchronization between settings, roles, and permissions. - Added artifact → module slug mapping for more transparent cross-module referencing.
- Renamed
Ui5Registry::introspect()toUi5Registry::exportToCache()for clearer semantics.
Include namespace when referencing abilities for roles
Include namespace when referencing abilities for roles.
Resolve Referenced Abilities for Roles
This release finalizes the semantic link between roles and abilities in the Core registry and ensures deterministic reflection for all modules.
Added
- Implemented two-pass reflection to resolve
RoleandAbilityrelationships deterministically. - Roles in the registry now include an
abilitiesarray with all referencedAbilityobjects. - Added validation: Abilities referencing undeclared roles now trigger a
LogicException. - Extended test coverage for role–ability mappings in the registry.
Changed
- Simplified internal reflection order: roles are registered before abilities.
- Unified registry data structure for roles (
note+abilities).
Refined Attribute Semantics and Sdk Alignment
This release finalizes the semantic cleanup of Core attributes.
Added
- Introduced a distinct BaseTestCase class for consistent unit testing.
- Added
noteproperty to theSettingattribute for descriptive metadata.
Changed
- Enums are now stored as objects in the
Ui5Registryfor stronger typing and reflection support. - Renamed
visibilityRole→roleinSettingto align with unified naming conventions. - Enhanced the
Roleattribute with refined semantics and documentation. - Normalized technical identifiers across all attributes for consistent SDK integration.
Extension Hooks and Core Refinements
This maintenance release introduces a forward-looking extension hook for the Ui5Registry,
making the Core formally extensible for high-level integrations while refining type safety and dependency boundaries.
Added
- Extension Hook
afterLoad()inUi5Registry.
Changed
- Refined and standardized PHPDoc type annotations for improved static analysis and IDE integration.
- Renamed property
description→notein the#[Role]attribute for clearer semantics and consistency across attributes. - Removed unnecessary laravel/framework dependency to make the Core fully framework-agnostic and reusable in standalone contexts.
Summary
The Core is now formally open for extension while remaining decoupled from Laravel internals. A leaner, cleaner, and more flexible foundation for the LaravelUi5 SDK layer.
Ability Architecture Integration
This release introduces the new Ability System foundation in Core, establishing the backend layer for declarative access control and frontend synchronization.
Highlights
-
Added
AbilityType::Access
Backend-only ability type used to gate entry-level artifacts such as Apps, Dashboards, Reports, Tiles, KPIs, Resources, and Dialogs.
Complements existing types (Use,See,Act) to provide a complete four-scope permission model. -
Enhanced
Ui5Registryaccessors
Updatedabilities()andsettings()methods to support flexible filtering and namespace-based retrieval.
Impact
- No breaking changes for existing consumers.
- Prepares the foundation for SDK-level ability reflection (
manifest.jsonintegration, validation, and context endpoints). - Safe to upgrade for all current projects using Core.
Refined Core Introspection and Full Registry Coverage
This release marks a major internal evolution of the LaravelUi5 Core,
introducing full test coverage for the Ui5Registry, expanded introspection capabilities,
and an updated PHP baseline for improved developer ergonomics and reliability.
Added
- Comprehensive Pest test suite for all
Ui5Registrylayers
(Lookup, Introspection, Runtime Resolution, Semantic Discovery) - New Settings reflection support within the Registry
- Extended metadata discovery for
manifest.jsongeneration - Additional type safety and validation for Roles, Abilities, and SemanticObjects
Changed
- PHP 8.3 is now the official minimum supported version
CachedUi5Registrymoved to the SDK package for runtime optimizationUi5RegistryInterfacerefined with improved semantics and consistent method naming
Summary
This version completes the Core’s introspection layer and stabilizes its runtime logic.