Skip to content

Latest commit

 

History

History
73 lines (51 loc) · 4.47 KB

README (1).md

File metadata and controls

73 lines (51 loc) · 4.47 KB

Release Notes

Versioning Scheme

Mustang and its other first-party packages follow Semantic Versioning. Major framework releases are released every year (~Q1), while minor and patch releases may be released as often as every week. Minor and patch releases should never contain breaking changes.

When referencing the Mustang framework or its components from your application or package, you should always use a version constraint such as ^10.0, since major releases of Mustang do include breaking changes. However, we strive to always ensure you may update to a new major release in one day or less.

Support Policy

For all Mustang releases, bug fixes are provided for 18 months, and security fixes are provided for 2 years.

Version PHP (*) Release Bug Fixes Until Security Fixes Until
10 8.1 - 8.2 June 4th, 2023 December 4th, 2024 June 4th, 2025
11 8.2 Q1 2024 August 5th, 2025 February 3rd, 2026

(*) Supported PHP versions

Mustang 10

PHP 8.1

Mustang 10.x requires a minimum PHP version of 8.1.

Breaking Changes

  • Upgraded to Laravel v10 (All Laravel files (e.g. configs, .env, etc...) are now synced with the latest Laravel changes)
  • Updated Composer dependencies to their latest version
  • Laravel Passport route registration & customization has changed. Passport routes now reside in a dedicated route file (Instead of registering them in the provider).
  • Middleware $routeMiddleware field is renamed to $middlewareAliases
  • Trimmed down the TestCase by removing some useless traits including:
TestsMockHelperTrait
TestsResponseHelperTrait
  • encode() method return value has changed -> In case of unencodable value (e.g. null), now returns null instead of ''
  • decode() method return value has changed -> In case of undecodable value (e.g. null), now returns null instead of []
  • StateKeeperTrait is removed from Request

None Breaking Changes

  • Everything is refactored to use constructor injection instead of directly using the Service Container like so app(CreateUserByCredentialsTask::class)->run()
  • Added more tests and refactored the rest
  • Switched to invokable controllers
\\ from
Route::get('profile', [GetAuthenticatedUserController::class, 'getAuthenticatedUser']);
\\ to
Route::get('profile', GetAuthenticatedUserController::class);
  • All routes are moved into the private documentation. e.g. RefreshProxyForWebClient.v1.public.php -> RefreshProxyForWebClient.v1.private.php
  • Added some getter methods to the Request including:
withUrlParameters()
getAccessArray()
getDecodeArray()
getUrlParametersArray()
  • Added a TestAssertionHelperTrait to the TestCase which provides some usefull assertions

Bug Fixes

  • withMeta() method on ResponseTrait now correctly includes added metadata
  • Calling invokable controllers from routes #174
  • Exception when trying to generate a WEB CRUD Controller from generator #171
  • PHP 8.1 warning on passing null to explode #176