liberusoftware / module-manager
Deterministic manifest discovery and runtime enablement for Liberu modules.
Package info
github.com/liberusoftware/module-module-manager
Type:liberu-module
pkg:composer/liberusoftware/module-manager
Requires
- php: ^8.5
- composer/semver: ^3.5.2
- illuminate/contracts: ^13.38.0
- illuminate/database: ^13.38.0
- illuminate/support: ^13.38.0
Requires (Dev)
- liberusoftware/package-testbench: ^1.5
- pestphp/pest: ^5.3.3
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- 1.9.1
- 1.9.0
- 1.8.0
- 1.7.0
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.0
- 1.4.7
- 1.4.6
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-fix/module-prefixed-package-names
- dev-feat/feature-modules
- dev-feat/module-activation
- dev-release/1.7.0
- dev-feat/isolated-module-loading
- dev-music-cache-recovery-1.4
- dev-automation/pin-reusable-workflows
This package is auto-updated.
Last update: 2026-11-12 23:23:33 UTC
README
Manifest discovery, dependency resolution, deployment enablement, registry caching, and diagnostics.
Software · Hosting · Services · Liberu Group
Feature scope
Manifest discovery, dependency resolution, deployment enablement, registry caching, and diagnostics. This repository owns this capability as an independently versioned Composer package; hosts integrate it through its declared public boundaries rather than application-specific classes.
Capabilities
foundation.modules
Declared features
- Manifest discovery
- Dependency resolution
- Deployment enablement
- Registry caching
- Diagnostics
Requirements and installation
| Dependency | Supported version |
|---|---|
php |
^8.5 |
composer/semver |
^3.4 |
illuminate/contracts |
^13.0 |
illuminate/support |
^13.0 |
Install the released package from the project root:
composer require liberusoftware/module-manager
The trusted liberusoftware/composer-installer places it in /modules/module-manager. The installed directory remains tracked by the host repository, while Composer and its lock file remain the source of version truth. Installation does not imply runtime enablement or commercial entitlement.
Architecture and integration
- Composer package:
liberusoftware/module-manager - Package type:
liberu-module - Installer name:
module-manager - Category:
foundation - Service provider:
Liberu\Foundation\ModuleManager\ModuleManagerServiceProvider - Enabled by default:
no
Public contracts
- No separate contract type is declared; use the documented provider and capability boundary.
Failure isolation
By default, the first invalid module stops the boot. A host where one optional module must not take down the rest can opt in:
// config/modules.php 'isolate_failures' => true, 'required' => ['module-manager', 'tenancy'],
A module that fails is then left out, logged and reported by module:list, and module:validate still fails, so a build stops before a deployment does. A module in required cannot be disabled, and if it fails, the boot stops with its name and the reason.
A provider that throws in register() is isolated. One that throws in boot() is not, because Laravel offers no hook for it.
Hosts should list modules that declare extra.laravel.providers under extra.laravel.dont-discover, or package discovery registers them whatever this configuration says. module:validate --strict fails if any remain.
Commands
module:features {query?}lists or searches feature declarations across installed modules.src/Console/CacheModulesCommand.phpsrc/Console/ClearModulesCommand.phpsrc/Console/ListModulesCommand.phpsrc/Console/ModuleStatusCommand.phpsrc/Console/ValidateModulesCommand.php:--strictalso fails on modules registered by package discovery
Events
- No package-owned event class is currently published.
Persistence and permissions
module_activationsstores administrators' enable and disable choices.
Feature modules
ModuleManagement lists and switches only modules whose manifest declares "module_type": "feature". A manifest without the key, or with "infrastructure", is infrastructure: it is never listed and cannot be switched there. module:list and module:status still show every module.
Authorization remains the host application's responsibility unless a public authorizer contract is listed above. Consumers should grant only the permissions needed for the exported capabilities and must not couple to internal tables or classes.
Testing
The package includes 3 test file(s). From a compatible host checkout, run:
vendor/bin/pest modules/module-manager/tests
Changes must preserve the manifest, service-provider integration, package boundaries, and PHP/Laravel compatibility declared above.
Security
Do not report security vulnerabilities through public GitHub issues. Email security@liberusoftware.com with reproduction details and the affected version so the report can be handled privately.
License
This module is open-source software available under the MIT License. The linked licence text is authoritative.
Feedback and contributing
Focused issues and tested pull requests are welcome in the GitHub repository. Keep changes within this module's capability boundary, update tests and documentation, and record user-visible changes in CHANGELOG.md.
Contributors
Thank you to everyone who helps improve Liberu. View the contributors graph.