Changelog
All notable changes are tracked in CHANGELOG.md, following Keep a Changelog and Semantic Versioning.
1.5.0 — 2026-07-02
Added
- Convention loading of translations (
lang/, PHP + JSON, publishable with--tag=modules-lang); toggle with#[Module(lang: false)]. - Convention discovery of artisan commands from a module's
Consoledirectories (dev scan + compiled bymodule:cache); toggle withmodules.scan_commands. - New generators:
module:make-request,module:make-event,module:make-listener,module:make-job,module:make-command,module:make-factory,module:make-seeder,module:make-test. - Inter-module dependencies via
module.jsonrequires: dependency-aware load order, enable/disable warnings, andmodule:checkfailures for broken requirements. module:check --boundaries— flags references into another module's internals (everything outsideContracts/Data/Events/Enumsby default) and undeclared dependencies.
Changed
make:modulescaffoldslang/and arequiresfield; re-runphp artisan module:cacheafter upgrading.
1.4.0 — 2026-06-24
Added
module:link --hide-git/module:unlink --hide-gitto keep the linking churn (composer.json/composer.lock) out of git while developing locally.module:sync—composer updatemodule package(s) by module name, with a pinned-vs-installed report (--check,--dry-run). Handy for keeping several projects that share the same module packages in sync.
1.3.0 — 2026-06-24
Added
- Console-free
Operationslayer: each command delegates to a plain-PHP use-case undersrc/Operations/, testable without the console. - Unit coverage for the
Operationslayer and amodule:linkfeature test.
Changed
- Commands are now thin adapters over the
Operationslayer; their signatures and behaviour are unchanged. ModuleGeneratorCommandnow declares a singlelayer(): ClassLayerhook (wasstub()/layerPath()/layerNamespace()/classSuffix()) — only affects custom generators that subclass it directly.
1.2.0 — 2026-06-22
Added
#[Singleton]and#[Scoped]lifetime shorthands.#[Provides(tag:)]tagged collections, resolvable viaapp()->tagged().#[Middleware]to register a route middleware alias.- Module load order via
module.jsonpriority. module:checkdoctor command.- Development scan cache for
#[Provides].
Changed
- A disabled module is now fully inert (its classes no longer autoload).
Fixed
- Ship the package service provider and
module:clearcommand that were missing from version control.
1.1.0 — 2026-06-21
Added
- Attribute-driven wiring:
#[Bind],#[Listen], optional#[Module]. - Convention loading of config, migrations, views and routes.
- Compiled cache (
module:cache/module:clear), wired intooptimize. Modulesfacade andmodule_path()helper.make:modulewithddd,simple,contractspresets + in-module generators.- Lifecycle commands and publishable stubs.
- Compatibility with
module.jsonandmodules_statuses.json.