Skip to content

v2.0.0 - #334

Open
roncodes wants to merge 17 commits into
mainfrom
release/v2.0.0
Open

v2.0.0#334
roncodes wants to merge 17 commits into
mainfrom
release/v2.0.0

Conversation

@roncodes

@roncodes roncodes commented Nov 6, 2026

Copy link
Copy Markdown
Member

Summary

The v2.0.0 release branch: core-api on Laravel 12. It bumps composer.json to 2.0.0 and replaces RELEASE.md, whose first line is > v2.0.0 ~ "Laravel 12", as release.yml requires.

Not ready to merge. These PRs must merge into release/v2.0.0 first:

PR State What it is
#331 merged Request::array() macro renamed to inputArray()
#332 merged Doctrine and getAllTables removed, guarded personal_access_tokens migration
#333 open Laravel 12, Sanctum 4, dependency majors, fixes. Also carries the Carbon 3 diffIn* prep (a8fa020, merged in), which has no PR of its own

#333 merges into this branch cleanly. Checked locally on ec7f08e + 4cb58a1: no conflicts, and afterwards the branch differs from #333 only by RELEASE.md.

Release notes

RELEASE.md covers the breaking changes (Laravel 12 and PHP 8.2, Sanctum 4, Carbon 3, the inputArray() rename, Doctrine removal, fork majors), the FCM, QueryOptimizer and report-error fixes, dependency changes and upgrade steps.

Testing

On #333's head 4cb58a1, resolved from Packagist with no path or VCS repositories: 2,410 Pest tests pass and the 100% coverage gate is met. composer audit exits 0 with no advisories and no abandoned packages, and nothing is ignored.

The Postman contract can't pass here until the extensions and fleetbase/fleetbase#749 are on Laravel 12 (see #333). A local contract run against all the Laravel 12 branches assembled together is in progress, and its result will be reported before merge.

After merge

release.yml tags v2.0.0. Then tag the extension releases built on ^2.0, regenerate fleetbase/fleetbase#749's lock, and mark it ready.

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.
Laravel 11+ ships a native Request::array(), and native methods win over macros,
so on Laravel 12 this macro silently stops running. `?sort=a,b` and `?without=a,b`
become a single value, and a sorted index returns a 500 for an unknown column.

Renaming it now is safe on Laravel 10 and keeps the comma splitting after the
upgrade. Callers and test harnesses follow the new name, with no behaviour change.
Released extensions still call the old name, and removing it breaks them against
a core-api with this change. Storefront's suite hit that through released fleetops.
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.
…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.

Set reports.average_execution_time to DOUBLE(8,2) in SQL, since Blueprint::float()
stops defaulting to total and places on Laravel 11+.
chore(l12): drop Doctrine schema calls and add a guarded tokens migration
fix(request): rename the array macro to inputArray
…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.
feat!: move to Laravel 12 and Sanctum 4
@codecov

codecov Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (6814ed4) to head (9f8a3ad).

Additional details and impacted files
@@             Coverage Diff             @@
##                main      #334   +/-   ##
===========================================
  Coverage     100.00%   100.00%           
- Complexity      9600      9691   +91     
===========================================
  Files            519       519           
  Lines          29841     29812   -29     
===========================================
- Hits           29841     29812   -29     
Flag Coverage Δ
backend 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…0.0 ships

Revert to fleetbase's api-contract.yml@main with no stack after the release.
@roncodes roncodes closed this Nov 6, 2026
@roncodes roncodes reopened this Nov 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant