Repository navigation
feat!: move to Laravel 12 and Sanctum 4 - #333
Merged
Merged
Conversation
Pins every diffIn* call as an explicit absolute or signed integer so results read the same on Carbon 2 and 3. Carbon 2 values are unchanged; tests pin direction and type at the priority sites.
…tion List tables and indexes through the schema builder, which Laravel 10.37+ and 12 both provide. Replace the removed Schema::getAllTables() fallbacks and alias the DataPurger catalog query, whose lower-case column name fails on MySQL 8. Sanctum 4 stops loading its migrations, so add a create migration that sorts after Sanctum 3's and before fix_personal_access_tokens. It is a no-op where the table exists and on the sandbox database, which has never had it.
Requires illuminate ^12.69|^13.0, PHP ^8.2, Sanctum 4, Pest 3 and the matching majors of the notification channels, barcode, msgraph-mail and fast-paginate, plus the new majors of the spatial, countries and twilio forks. Source fixes: - PushNotification passes the config repository kreait/laravel-firebase 6 requires. Every FCM push would have failed on the old one-argument call. - QueryOptimizer no longer constructs a Grammar with no connection, and catches Throwable so an Error here can't take the query down. - ReportQueryErrorHandler ignores the host, port and database Laravel 11+ adds to QueryException messages, so an install's names can't decide the error category. Test fixes: Encrypter and Filesystem fakes implement the new contract methods, the money config path is set in the harness, and a guard test fails if a native method ever shadows an expansion again.
The native Request::array() wins over it here, so it does nothing.
This was referenced Nov 6, 2026
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## release/v2.0.0 #333 +/- ##
==================================================
Coverage ? 100.00%
Complexity ? 9691
==================================================
Files ? 519
Lines ? 29812
Branches ? 0
==================================================
Hits ? 29812
Misses ? 0
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…s/fast-paginate The same 2.0.0 release under its new name. composer audit now reports nothing, not even an abandoned package. Also raises phpspreadsheet to the patched 1.30.7.
This was referenced Nov 6, 2026
Open
This was referenced Nov 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Moves core-api to Laravel 12, as
2.0.0, withilluminate/* ^12.69|^13.0, PHP^8.2and Sanctum 4. The wide range means the Laravel 13 step needs no constraint change here;hammerstone/fast-paginatestill caps resolves at 12.This branch stacks on three others, so its diff shrinks as they merge:
fix/request-input-array, the macro renamechore/carbon3-diffin(a8fa020):diffIn*calls behave the same on Carbon 2 and 3chore/l12-schema-prep(ca65cf2): Doctrine andgetAllTablesremoved, plus a guardedpersonal_access_tokensmigrationThe last two aren't pushed yet. I merged their exact commits so their SHAs survive.
This branch's own changes
^5.5, fcm^5.1, twilio^4.1, plusmilon/barcode ^13,msgraph-mail ^2,fast-paginate ^2, the three fork majors, and Pest 3. Dev:cknow/laravel-money ^8,mockery ^1.6.FirebaseProjectManager's constructor. The old one-argument call inPushNotificationwould have failed every FCM push on Laravel 12. The spike only saw this as a harness error.QueryOptimizerresolved its grammar with no connection (ArgumentCountErroron Laravel 12) and only caughtException. It now uses the connection's grammar and catchesThrowable.ReportQueryErrorHandlerstrips the host, port and database Laravel 11+ adds toQueryExceptionmessages. Otherwise a host or database name containingmemory,timeoutorpermissiondecides the error category.arrayalias from fix(request): rename the array macro to inputArray #331 goes, since the native method shadows it on Laravel 12.ExpansionNativeCollisionTestfails if a native method ever shadows an expansion. Three already-shadowed ones with no dependants are listed in it.loadMissing()gets a connection resolver, and the push tests get an application stand-in.Testing
Local on PHP 8.2.28 against Laravel 12.70.2, Carbon 3.15.1 and the local fork branches:
pestCoverage threshold met: every enforced metric is at or above 100.00%, 0 uncovered statementsphp-cs-fixerThe same commit's predecessor on Laravel 10 had 2,375 passing, so all the new tests are accounted for. The Laravel 12 spike also booted the app under Octane and ran a fresh
migrateandsandbox:migrateon MySQL with an earlier version of these changes; I haven't re-run those on this exact branch.build: the forks are now tagged (laravel-mysql-spatial2.0.0,countries0.9.0,twilio6.0.0), sobuildresolves from Packagist with no path or VCS repositories. The first run predates the tags and failed only on resolving them.The Postman contract check is expected to stay red until the extensions and the root app are on Laravel 12. It boots
fleetbase/fleetbasemain's published Laravel 10 image and swaps this branch in withcomposer update fleetbase/core-api --with-all-dependencies. There, the root requireslaravel/framework ^10, and the released extensions require core-api^1.6.74or*, so core-api 2.0.0 can't resolve, however this branch looks. That is not a fault in this PR, and the workflow is left unchanged. The plan is to run the contract against fleetbase/fleetbase#749 once core-api 2.0.0 and the extension Laravel 12 releases are available. The check isn't required by branch protection.Merge and tag order
v2.0.0v0.9.0v6.0.0release/v2.0.0Not done here: the
conflictentries for pre-port extension versions that the upgrade plan suggests. Those depend on the extension versions the extension PRs settle on.