v13.33.0 - 2026-09-22
- [13.x] Drop restart_syscalls from pcntl_signal in Worker by @jackbayliss in #61590
- Adjust when password hash is stored for authenticated sessions by @taylorotwell in #61594
- [13.x] Ability to opt out of killing the worker on job timeout by @jackbayliss in #61591
- [13.x] Fix enum keys in tagged cache many() and get() by @Meacue in #61603
- [13.x] Add opt-in support for persisting real NULL on AsCollection/AsArrayObject by @zeinrahmad76 in #61596
- [13.x] Fix Eloquent Collection duplicates() with a key or callback by @lazerg in #61597
- Improve Cloud job retries by @timacdonald in #61584
- [13.x] Support brick/math 0.20 & 1.0 by @jackbayliss in #61382
- [13.x] add health-start-period to workflows by @jackbayliss in #61608
- [13.x] Resolve FormRequest attributes from parent classes by @mdsukkur in #61586
- [13.x] Add order() to DevCommands by @jackbayliss in #61575
- [13.x] Add EncodedParameter to RouteUrlGenerator by @bytestream in #61610
- [13.x] Add inplace() DDL algorithm modifier for index and foreign key operations by @SanderMuller in #61602
- [13.x] Improve the value types of the Collection put method by @dfinchenko in #61611
- Allow relative URLs for Mercure hub by @barryvdh in #61629
- [13.x] Add server options to PostgreSQL connections by @DGarbs51 in #61627
- [13.x] Make the worker timed out exit code reachable by @kieranbrown in #61622
- Ci mariadb 11 by @Rhaima96 in #61615
- [13.x] Tagged memoized cache by @joostdebruijn in #61593
- Add "valkey://" and "valkeys://" protocol support by @cweiske in #61635
- [13.x] Fix SQLite schema dumps containing shadow tables by @jhm-ciberman in #61637
- [13.x] Make spelling consistent across docblocks by @shaedrich in #61631
- [13.x] Use
composer require --with-all-dependenciesto install additional requirements by @crynobone in #61617 - [13.x] Rebuild the phpredis client when a pipeline or transaction loses the connection by @maduonline in #61632
- Apply fixes from StyleCI by @taylorotwell in #61638
- [13.x] Add
--pretendoption toinstall:broadcastingcommand by @crynobone in #61633 - [13.x] Improved artisan mocking by @jnoordsij in #61588
- [13.x] feat: refresh configured model attributes after writes by @calebdw in #61523
- [13.x] Pass fresh batch to
BatchFinishedandBatchCanceledevents by @xurshudyan in #61644 - [13.x] Output empty JSON array from route:list --json when no routes match by @xurshudyan in #61642
- [13.x] Test against MariaDB 12.3 by @Rhaima96 in #61641
- [13.x] Use default view when make:notification --markdown has no value by @xurshudyan in #61643
- [13.x] Test Improvements by @crynobone in #61660
- [13.x] Fix
LazyCollection::take()with a negative limit larger than the collection by @crynobone in #61659 - [13.x] Skip batches that cannot be retried in queue:retry-batch by @xurshudyan in #61653
- [13.x] Consolidate overlapping tests by @jasonmccreary in #61648
- [13.x] Fix order-dependent tests by @jasonmccreary in #61647
- [13.x] Respect FILESYSTEM_DISK override when configuring Cloud disks by @DGarbs51 in #61664
- [13.x] Configure Laravel Cloud database read replicas by @WendellAdriel in #61665
- [13.x] Remove non-string headers from NotPwndVerifier by @kylemilloy in #61666
- [13.x] Fix ERR invalid cursor returned when calling
$predisClient->scan(null, ...)while using Redis 7.4 by @crynobone in #61673 - [13.x] Restore query logging when a pretend callback throws by @xurshudyan in #61671
- [13.x] add sole to higher order proxies by @jackbayliss in #61667
- [13.x] Add
createQuietlyandcreateManyQuietlytoBelongsToManyby @xurshudyan in #61669 - [13.x] Fix
whereValueBetween()binding expression values by @xurshudyan in #61670 - [13.x] Add opt-in native Postgres pooling for Laravel Cloud by @DGarbs51 in #61668
v13.32.0 - 2026-09-15
- [12.x] Default memoryExceededExitCode for Cloud by @jackbayliss in #61432
- Wrap the closure return type in
withFreshQueryLog()by @SanderMuller in #61458 - Wrap the autocompleter callback return type in
askWithCompletion()by @SanderMuller in #61487 - [13.x] Allow enums in queue pause/resume methods by @jackbayliss in #61464
- [13.x] Compare lowercased index names in hasIndex by @dwjordan in #61506
- [13.x] Fix containsStrict() returning false when a closure matches a null value by @bunyaminbilenkaratas in #61507
- [13.x] Pass the exception to Eloquent violation callbacks by @jackbayliss in #61504
- [13.x] Change unused variables to named arguments by @imanghafoori1 in #61513
- [13.x] Update SupportBinaryCodecTest by @jackbayliss in #61512
- [13.x] Fix Factory::raw() with a count of zero by @OpadaAlzaiede in #61510
- [13.x] Add missing implementation for
SessionHandlerInterfacefor PHP 9 by @crynobone in #61517 - [13.x] Add copyToDisk & moveToDisk to FilesystemAdapter by @jackbayliss in #61511
- [13.x] Add a Mercure broadcast driver by @dunglas in #61474
- [13.x] Accept filesystem instance in
copyToDisk()andmoveToDisk()methods by @ziadoz in #61519 - [13.x] Fix Str::password() returning extra characters and throwing Va… by @bunyaminbilenkaratas in #61521
- [13.x] Fix Str::camel() not lowercasing multibyte first characters by @rayblair06 in #61545
- [13.x] Fix collapseWithKeys() crashing when the outer collection has string keys by @rayblair06 in #61539
- [13.x] Fix TypeError in SessionGuard::userFromRecaller() when getAuthPassword() is null by @irabbi360 in #61532
- Strengthen mocked tests with the real thing by @jasonmccreary in #61563
- [13.x] Fix appendToPriorityList() when the referenced middleware is the first item by @GabeSilvaDev in #61567
- [13.x] Improve collection return types for methods that mutate by @axlon in #61571
- [13.x] Add
isManagedQueueto CloudManager by @jackbayliss in #61568 - [13.x] Fix Redis tagged cache not syncing tag entry expiration on touch by @Ashot1995 in #61574
- [13.x] Decode job payload once by @jackbayliss in #61526
- [13.x] Fix
sum()return type when the key matches a global function name by @crishoj in #61578 - [13.x] add UnitEnum to Authorizable contract by @hosni in #61589
- [13.x] Add support for installing Mercure via broadcasting install command by @Lea-Bar in #61587
- [13.x] Preserve unchanged values when encrypting readable environment files by @mathiasgrimm in #61503
v13.31.0 - 2026-09-08
- [12.x] Ensure password hash matches stored cookie before authenticating the user by @crynobone in #61386
- [12.x] Fix TypeError in userFromRecaller() when the recaller matches no user by @lazerg in #61397
- [13.x] Add totalSize method to Queue by @jackbayliss in #61373
- Merge branch '12.x' into 13.x by @crynobone in #61399
- [13.x] Restore the container instance after route:cache boots a fresh application by @lazerg in #61405
- [13.x] Include connection and queue on WorkerStopping when worker is killed by @jackbayliss in #61408
- [13.x] Fix lazy() and lazyById() ignoring limit() and offset() by @xurshudyan in #61402
- [13.x]
JobInterruptedevent by @jackbayliss in #61412 - [13.x] Make the Redis queue driver cluster-safe (
bulk()node-lessMULTI;allQueueNames()usesKEYS) by @Orrison in #61198 - [13.x] feat: add chaperone support for BelongsToMany pivot models by @calebdw in #61152
- Dedupe common test fixtures by @jasonmccreary in #61422
- [13.x] feat: improve higher order proxy generic types by @calebdw in #61418
- Apply fixes from StyleCI by @taylorotwell in #61427
- [13.x] Add
onceassertions to the mail and notification fakes by @talaridisTh in #61415 - Let Monolog handle deprecation exceptions by @sysdev34-wq in #61414
- [13.x] Default
memoryExceededExitCodefor Cloud by @jackbayliss in #61430 - [13.x] Fix context not being propagated to concurrent processes by @newtonjob in #61419
- [13.x] Remove the unused Request import from the JSON:API resource stub by @Bosun18 in #61434
- [13.x] Memory leak fix in Http Client by @skr4dan in #61438
- [13.x] Fix SelfBuilding build stack cleanup after exceptions by @emrebalasar in #61454
- [13.x] defer all logic to the dedicated rule by @browner12 in #61445
- Wrap the closure return type in
withFreshQueryLog()by @SanderMuller in #61444 - [13.x] Fix
assertJsonMissingPath()ignoring wildcards by @xurshudyan in #61441 - [13.x] Resolve the
UsePolicyattribute from parent classes by @xurshudyan in #61439 - [13.x] Resolve the
UseEloquentBuilderattribute from parent classes by @xurshudyan in #61440 - [13.x] Fix parameter docblocks that contradict the native signature by @dfinchenko in #61457
- Bump softprops/action-gh-release from 3.0.2 to 3.0.3 in the github-actions group by @dependabot[bot] in #61468
- [13.x] Fix RateLimited job middleware hitting limits that did not block the job by @xurshudyan in #61449
- [13.x] Add
devServerUrl()to Vite by @ramonmalcolm10 in #61465 - [13.x] Retry phpredis commands when a connection reset surfaces as a warning by @Orrison in #61462
- [13.x] Fix callbacks deferred from within a deferred callback by @newtonjob in #61431
- [13.x] Propagate command_retries to phpredis cluster connections by @Orrison in #61460
- [13.x] Qualify soft delete column with the query's table alias by @arunarw in #61456
- [13.x] Keep Eloquent on the direct connection during migrations by @danielebarbaro in #61435
- Apply fixes from StyleCI by @taylorotwell in #61470
- [13.x] Fix Class
Illuminate\Session\ArraySessionHandlerimplementingSessionHandlerInterfaceis missing thecreate_sid()method which will be required in PHP 9.0 by @crynobone in #61469 - Fix route url generation under certain circumstances by @taylorotwell in #61475
- [13.x] Fix message ID and header persistence on ResendTransport by @saurabhsharma2u in #61476
- [13.x] Fix wherePivot() closure scope being ignored in pivot table operations by @iz-ahmad in #61488
v13.30.1 - 2026-09-01
- [13.x] Add connection and queue to WorkerStopping by @jackbayliss in #61387
- [13.x] Add
insertOrIgnoreReturning()to the Eloquent builder passthru by @xurshudyan in #61393 - [13.x] Add
dropVectorIndex()to the schema blueprint by @xurshudyan in #61391 - [13.x] Fix
limit()being ignored onupdate()for SQL Server by @xurshudyan in #61394 - [13.x] Prevent orphaned Redis tagged cache entries by @drewmt in #61385
v13.30.0 - 2026-09-01
- [12.x] Backport #60908: Avoid quadratic wildcard rule expansion by @matteo-palazzo in #61232
- Fix resource loading by @taylorotwell in #61323
- [13.x] Output the worker stop reason in queue:work by @jackbayliss in #61339
- Fix incorrect $startTime type in Worker::stopIfNecessary docblock by @il-m-tomita in #61347
- [13.x] Ability to opt out of vendor/default commands in DevCommands by @jackbayliss in #61344
- [13.x] Confine
Storage::path()to the configured disk root by @KIKOmanasijev in #61343 - [13.x] Support Microsoft SQL Server DSN connection strings by @HenkPoley in #61341
- [13.x] Restore the facade application after route:cache boots a fresh application by @reiarseni in #61346
- [13.x] Gracefully handle missing param value or strings with request clamps by @kylemilloy in #61355
- [13.x] Restore default database connection when seeding fails by @sayful1411 in #61354
- [13.x] Cloud enhancements by @timacdonald in #61360
- [13.x] Allow retrieving command by name without resolving all commands by @timacdonald in #61361
- [13.x] Expose methods by @timacdonald in #61362
- [13.x] Add basic test for query explain by @imanghafoori1 in #61363
- [13.x] Add totalXSize methods to Cloud Queue by @jackbayliss in #61352
- [13.x] Add
chunkByto collections by @JosephSilber in #61357 - [13.x] spl_object_id over hash by @jackbayliss in #61372
- [13.x] Add createPayloadUsing directly to the queue manager by @jackbayliss in #61367
- [13.x] Set visibility on files that only exist on a read-through disk's fallback by @sulimanbenhalim in #61375
- [12.x] Disable html by default on Laravel exception page tooltip by @crynobone in #61381
v13.29.0 - 2026-08-25
v13.27.0 - 2026-08-25
- [13.x] Prevent duplicate scoped instance registrations by @jordanhavard in #61251
- [13.x] Add
refreshForUpdate()method to Eloquent models by @stevebauman in #61247 - [13.x] Fix PHPUnit and Mockery deprecations in tests by @lucasmichot in #61244
- [13.x] Throw on unsuccessful responses when creating images from URLs by @Button99 in #61254
- Apply fixes from StyleCI by @taylorotwell in #61256
- [13.x] Skip scheduled workflows on forks by @MrPunyapal in #61239
- [13.x] Consolidate tearDown boilerplate into AfterEachTestSubscriber by @lucasmichot in #61245
- [13.x] Pin rector version by @lucasmichot in #61257
- [13.x] Re-introduce orWhereKey() and orWhereKeyNot() without breaking Builder subclasses by @kevariable in #61242
- [13.x] Don't force release a unique lock the job never acquired by @sulimanbenhalim in #61234
- [13.x] Convert foreach-loop tests to data providers by @lucasmichot in #61258
- [13.x] Simplify testImageBmp by @lucasmichot in #61259
- [13.x] Add missing test coverage for Str and Stringable by @lucasmichot in #61260
- [13.x] Add Queue
totalXSizemethods by @jackbayliss in #61231 - Add MariaDB support for vector distance queries by @Rhaima96 in #61250
- [13.x] Add
whereBinary()to the query builder by @xiCO2k in #61261 - [13.x] Fix
quietly()makingthrow()unreachable on process results by @xurshudyan in #61227 - Revert "[13.x] Consolidate tearDown boilerplate into AfterEachTestSubscriber (#61245)" by @crynobone in #61262
- Use
nick-fields/retryto verify clustered redis ports are available by @crynobone in #61263 - [13.x] Guard against
falsereturns inPhpRedisConnection::mget()andhmget()by @matthewfarrugia in #61267 - [13.x] Add
stop()andensureNotTimedOut()toFakeInvokedProcessby @xurshudyan in #61266 - [13.x] Make eager-load constraint closures static to break Builder reference cycle by @mspasov in #61264
- [13.x] Move and copy files that only exist on a read-through disk's fallback by @sulimanbenhalim in #61272
- [13.x] Adjust QueueTest by @jackbayliss in #61284
- [13.x] Introduce
InteractsWithTestCaseLifecycle::flushState()by @cosmastech in #61288 - [13.x] Fix route name lost when RouteRegistrar action is not callable by @KalimeroMK in #61285
- [13.x] Start a new max wait window after a debounced job runs by @sulimanbenhalim in #61281
- [13.x] Fix nested includes not being limited when maxRelationshipDepth is zero by @martinsoenen in #61297
- [13.x] Give each Redis Cluster node its own data directory in CI by @cyppe in #61294
- [13.x] Ensure test namespaces are correct by @jackbayliss in #61304
- [13.x] Fix flaky memcached touch test by pinning time by @mspasov in #61301
- [13.x] Adjust database.yml timeout to 10 minutes by @jackbayliss in #61299
- [13.x] Add Postgres keepalive DSN options by @tgivslife in #61307
- [13.x] Introduce a Cloud facade by @jackbayliss in #61275
- Normalize test fixtures by @jasonmccreary in #61315
- [13.x] Treat asterisks as literal keys when merging request input by @KIKOmanasijev in #61309
- [13.x] Guard against non-string mac in maintenance bypass cookie by @KIKOmanasijev in #61314
- [13.x] Treat asterisks as literal keys when merging URI query parameters by @KIKOmanasijev in #61312
- [13.x] Prevent loose comparison bypass in
in_arrayvalidation rule by @KIKOmanasijev in #61319 - [13.x] Prevent loose comparison bypass in contains validation rule by @KIKOmanasijev in #61320
- [13.x] Prevent loose comparisons in
doesnt_containvalidation rule by @KIKOmanasijev in #61318 - Fix resource loading by @taylorotwell in #61322
- [13.x] Treat literal dots in input keys correctly when rejecting unknown fields by @KIKOmanasijev in #61313
- Revert "[13.x] Prevent loose comparison bypass in contains validation rule" by @taylorotwell in #61330
- [13.x] Allow masking query bindings in exception messages by @LauJosefsen in #61326
- [13.x] Share cached AWS credentials across processes for SQS queue connections by @DGarbs51 in #61321
- [13.x] Fix images created from a stream failing on the second read by @Chy-Zaber-Bin-Zahid in #61305
- [13.x] Fix uncaught Brick MathException escaping the numeric comparison rules by @gcotcheza in #61332
v13.26.1 - 2026-08-18
- Revert "[13.x] feat: add orWhereKey and orWhereKeyNot to Eloquent Builder" by @taylorotwell in #61236
v13.26.0 - 2026-08-18
- [13.x] Add JobReleased event to Worker by @jackbayliss in #61108
- [13.x] Fix QueueWorkerTest by @jackbayliss in #61134
- [13.x] Avoid cross-slot reads when checking paused queues by @lazerg in #61139
- [13.x] Add managedQueues() to the Cloud queue by @jackbayliss in #61149
- [13.x] Accept enums in
inOrderOf()by @ziadoz in #61147 - [13.x] Surface paused queues in the queue worker output by @jackbayliss in #61142
- [13.x] Respect readonly=false in Microsoft SQL Server configuration by @HenkPoley in #61141
- [12.x] Stricten
uploadto be fetch only from request's query string for temporary upload urls by @crynobone in #61145 - Read-through filesystem by @taylorotwell in #61140
- [13.x] Pass a connector to PhpRedisClusterConnection so it can rebuild its client by @tgivslife in #61161
- [13.x] Only register pail dev command when installed by @jackbayliss in #61157
- [13.x] feat: add closure support to wherePivot and orWherePivot by @calebdw in #61150
- [13.x] feat: add orWhereKey and orWhereKeyNot to Eloquent Builder by @calebdw in #61154
- [13.x] allow read through filesystems to optionally not copy by @jimbojsb in #61155
- [13.x] Fix constantly asking to install
multiplex& startingviteon project without vite by @nunomaduro in #61167 - [13.x] Add debounceable queued listeners by @stevebauman in #61169
- [13.x] Add test to ensure pail is ignored if not installed by @jackbayliss in #61168
- Allow some Redis commands to retry on transient failures by @taylorotwell in #61175
- Fix Redis pipeline facade annotation by @MNazikk in #61173
- [13.x] Remove the pinned
@laravel/multiplexversion by @joetannenbaum in #61171 - [13.x] Fix FoundationDevCommandsTest by @jackbayliss in #61170
- [12.x] Improves
invalidation rule from getting bypass via loose comparison by @crynobone in #61146 - [13.x] Retry timed-out cloud agent long-polls by @kieranbrown in #61177
- [12.x] Retry timed-out cloud agent long-polls by @kieranbrown in #61178
- [13.x] Scan every master node in phpredis cluster connections by @tgivslife in #61174
- [13.x] Fix uncaptured setTestNow now() reuse in tests by @lucasmichot in #61190
- [13.x] Make process pools iterable by @xurshudyan in #61184
- [13.x] Report seeder progress in db:seed command - when a specific class is specified by @iz-ahmad in #61186
- [13.x] Fix infinite scan loop when pruning stale cache tags on a Redis cluster by @tgivslife in #61181
- [13.x] Add a dedicated exception for idle process timeouts by @xurshudyan in #61182
- [13.x] Keep the Redis connection usable when a pipeline or transaction fails by @tgivslife in #61183
- [12.x] Escape single quotes in Postgres JSON path attributes by @crynobone in #61192
- [13.x] Support Guzzle 8 by @GrahamCampbell in #60321
- [13.x] Add process fake assertion helpers by @xurshudyan in #61193
- [13.x] Introduce
Queue::forward()by @jackbayliss in #61188 - [13.x] Support array commands in process fake assertions by @xurshudyan in #61197
- [13.x] Prevent TypeError when JSON:API query parameters are arrays by @s-shiryaev in #61206
- More Mockery cleanup by @jasonmccreary in #61199
- [13.x] fix:
expectsQuestion()docblock to allow array answers by @joostdebruijn in #61223 - [13.x] Test on MySQL 9.7 (lts) by @jnoordsij in #61218
- [13.x] Promote nested data to top-level managed queue event by @timacdonald in #61209
- [13.x] Rebuild the phpredis client after a cluster response error by @tgivslife in #61214
- [13.x] Fix
throwUnless()silently doing nothing when given a closure by @xurshudyan in #61217 - [13.x] Keep the assertion failure message when session errors are JSON serialized by @lazerg in #61201
- [13.x] Add getRelatedClass to Relation by @jackbayliss in #61222
- [12.x] Promote nested data to top-level managed queue event by @timacdonald in #61225
- Merge branch '12.x' into 13.x by @crynobone in #61228
- [13.x] Preserve input key order when merging files in Request::all() by @roger-hermasch in #61221
- Wait for Redis cluster nodes before creating the test cluster by @crynobone with @Copilot in #61229
v13.25.0 - 2026-08-11
- [12.x] Prevent fatal errors when logging deprecations fails by @GrahamCampbell in #60907
- [12.x] Fix Factory::insert() with a count of zero by @alies-dev in #60911
- [12.x] Fix schedule:list timezone conversion for range, step, and wildcard cron expressions by @xiCO2k in #60913
- [12.x] Fix getMigrationBatches return type annotation by @wouterj in #60973
- [13.x] Add foreignUlidFor schema helper by @talaridisTh in #61036
- [13.x] Improve return type for
Arr::prependKeysWith()by @axlon in #61034 - [13.x] Add uuid to queue fake for inspection methods by @jackbayliss in #60966
- [13.x] Respect after-commit dispatch when bulk pushing to DatabaseQueue by @Faiyajz in #60996
- [13.x] Add a UniqueJobSkipped event by @jackbayliss in #61039
- [13.x] Ensure Container::call cleans up build stack after exceptions by @Faiyajz in #61041
- [13.x] Reject non-stream resources in HTTP fake response bodies by @GrahamCampbell in #61047
- [13.x] Fix incorrect image dimensions for HEIC by @zachiler in #61010
- [13.x] Simplify most of the exceptions expectations by @lucasmichot in #61049
- [13.x] Fix Str::numbers() type annotation by @lucasmichot in #61053
- [13.x] Fix flaky Str::random distribution test by @lucasmichot in #61052
- [13.x] Normalize enum keys in typed cache getters by @Amirhf1 in #61056
- Simplify remaining exception expectations by @lucasmichot in #61058
- Apply fixes from StyleCI by @taylorotwell in #61059
- [13.x] Isolate cloud agent requests from global HTTP client configuration by @kieranbrown in #61064
- [13.x] Fix flaky circuit breaker release delay assertions by @GrahamCampbell in #61062
- [13.x] Bump minimum versions by @lucasmichot in #61033
- [13.x] Configure a socket timeout for the Cloud log driver by @jessarcher in #61065
- [13.x] Fix: add missing check for
#[WithoutTimestamps]on model ignore touch by @bram-pkg in #61073 - [12.x] Isolate cloud agent requests from global HTTP client configuration by @kieranbrown in #61068
- [13.x] Fix getRememberToken return type documentation by @keibass in #61067
- [13.x] Respect backed enum queue names when queueing mailables by @Faiyajz in #61066
- [13.x] Restore missing model deletion for broadcast events by @Faiyajz in #61074
- [13.x] Use new Collection instead of Collection::make in tests by @lucasmichot in #61079
- [13.x] Add the timeout in JobTimedOut by @jackbayliss in #61060
- [12.x] Configure a socket timeout for the Cloud log driver by @jessarcher in #61082
- [13.x] Move Testbench-based tests to tests/Integration by @lucasmichot in #61080
- Use serve defaults for dev command by @n3crosis in #61090
- [13.x] Skip unsupported values in LazyCollection::flip() by @Amirhf1 in #61081
- [13.x] Preserve default denial response for Gate::forUser by @Faiyajz in #61087
- [13.x] Support fail on timeout for notifications by @jackbayliss in #61072
- [13.x] Fix QueueFakeTest by @jackbayliss in #61091
- [13.x] Prefer consitent assertions by @lucasmichot in #61093
- [13.x] Clean up test teardown by @lucasmichot in #61078
- Prefer text input on dynamic access by @taylorotwell in #61099
- [13.x] feat: make Image::toFormat() public by @calebdw in #61110
- [13.x] Pass the HTTP method to retry callbacks for asynchronous HTTP requests by @Button99 in #61106
- [13.x] Add
withoutCookiesmethod by @xurshudyan in #61115 - [13.x] feat: implement Responsable on Image class by @calebdw in #61111
- [13.x] feat: add Image::fromStream method by @calebdw in #61109
- [13.x] Run
artisan devthrough@laravel/multiplexby @joetannenbaum in #61100 - [13.x] Restore array support in Str::substrReplace by @Faiyajz in #61105
- Revert "[13.x] Bump minimum versions" by @GrahamCampbell in #61118
- [12.x] ColumnDefinition::unsigned takes a parameter, which should be documented by @afk11 in #61123
- [13.x] Ensure Queue drivers work for enums matching the Fake by @jackbayliss in #61116
- [13.x] Preserve queue resolution on queued mailables in MailFake by @hamdyelbatal122 in #61114
- [13.x] Handle cache maintenance mode deactivation races by @Faiyajz in #61121
- [13.x] Fix nullable return types on the route binding registrar by @dfinchenko in #61124
- [13.x] Mockery cleanup by @jasonmccreary in #61117
- Merge branch '12.x' by @crynobone in #61130
- [13.x] Support brick math ^0.19 by @jackbayliss in #61133
- Improve signed URL support for Vapor by @timacdonald in #61129
- [13.x] Add a global pause switch for queues by @jackbayliss in #61126
v13.24.0 - 2026-08-04
- [13.x] Add
modelKeys()to Eloquent query builder by @ziadoz in #60924 - [13.x] Add an array_keys validation rule by @nebarg in #60918
- [13.x] Respect job delays when bulk pushing to QueueFake by @Faiyajz in #60916
- [13.x] Use immutable timestamps in batch testing fakes by @alies-dev in #60912
- [13.x] Avoid rebuilding every cached Route on CompiledRouteCollection lookups by @lucasmichot in #60909
- [13.x] Fix
DumpCommandreturn type. by @KentarouTakeda in #60934 - [13.x] Re-evaluate unmatched BindWhen attributes by @Faiyajz in #60933
- [13.x] Add if-related rector rules by @lucasmichot in #60930
- [13.x] Use self::SUCCESS/self::FAILURE in console commands by @lucasmichot in #60928
- [13.x] Fake the pwnedpasswords API in ValidationPasswordRuleTest by @lucasmichot in #60927
- fix typo by @theHocineSaad in #60942
- [13.x] Memoize TestResponse::decodeResponseJson() by @lucasmichot in #60929
- [13.x] Consolidate Artisan command $name/getArguments()/getOptions() into $signature by @lucasmichot in #60926
- [13.x] Escape single quotes in Postgres JSON path attributes by @kpanuragh in #60923
- [13.x] Preserve relation constraints when resolving attributes during noConstraints by @hamdyelbatal122 in #60931
- [13.x] Replace throw_if/throw_unless with explicit if/throw in src/ by @lucasmichot in #60944
- [13.x] Adds dominant color detection to image driver by @dr-codswallop in #60932
- Fix PendingProcess losing falsy command strings on run()/start() by @lucasmichot in #60947
- [13.x] Use Collection only()/diff() instead of filter()/reject() with in_array() by @lucasmichot in #60945
- [13.x] Use enum_value() helper in a few more places by @lucasmichot in #60983
- [13.x] Remove redundant m::close() by @lucasmichot in #60981
- [13.x] Add missing conditionable, reflection, macroable requires by @lucasmichot in #60980
- [13.x] Use Stringable::explode() instead of new Collection(explode()) by @lucasmichot in #60979
- [13.x] Prefer isEmpty()/isNotEmpty()/contains() over count() checks by @lucasmichot in #60978
- [13.x] Avoid redundant Collection passes in map/filter/reject chains by @lucasmichot in #60977
- [13.x] Detect circular alias references in Container by @lucasmichot in #60974
- [13.x] Fix pagination edge cases by @lucasmichot in #60968
- [13.x] Solve another PHP 8.5 null index deprecation by @tontonsb in #60964
- [13.x] Prevent TypeError in Validator::validateDistinct() by @theHocineSaad in #60961
- [13.x] Fix Actions remove
imagedestroyfrom tests by @jackbayliss in #60957 - [13.x] Add NumberPrompt fallback by @romain-mezghenna in #60959
- [13.x] Fix PHP 8.5 null array offset deprecation in
Relation::getMorphedModel()by @mertasan in #60954 - [13.x] Respect job delays when bulk pushing to FailoverQueue by @Faiyajz in #60950
- bugfix: inconsistent Guarded attribute behaviour on Pivot by @Carnicero90 in #60952
- [13.x] Fix the ModelMakeCommand handle return type by @dfinchenko in #60989
- [13.x] Sort null-key deprecation in
LazyCollection::keyByby @jackbayliss in #60987 - [13.x] Fix validation stalling for minutes on large arrays by @mariomka in #60908
- [13.x] Adjust ImagickDriverTest by @jackbayliss in #60990
- [13.x] Add HEIC and additional AVIF support by @riasvdv in #60922
- [13.x] Fix multibyte case-insensitive matching in Str::replace and Str::remove by @marekmiklusek in #60882
- [13.x] Fix appended accessors receiving null in toArray() by @lazerg in #60921
- Attempt at lock fix by @taylorotwell in #60906
- [13.x] Sync property docblocks with their parent declarations by @dfinchenko in #60991
- [13.x] Add tests for the whereUuid and whereUlid route constraints by @dfinchenko in #61013
- [13.x] Use strict comparisons for int-to-int checks by @lucasmichot in #61005
- [13.x] Add test for the Request matchesType method by @dfinchenko in #61012
- Adjust URL validation logic by @taylorotwell in #61009
- [13.x] Sync FilesystemAdapter return types with the filesystem contract by @dfinchenko in #61011
- [13.x] Use static instead of self in
LoadConfigurationby @cosmastech in #61006 - [13.x] Remove unregistered skipped rector rule by @lucasmichot in #60999
- [13.x] FIX flaky dominantColor() test by @lucasmichot in #60997
- [13.x] Use PHPUnit requirement attributes instead of markTestSkipped() by @lucasmichot in #60998
- [13.x] Use reduce() instead of foreach accumulator loops by @lucasmichot in #61004
- [13.x] Remove dead parent::setUp()/tearDown() calls in tests by @lucasmichot in #60994
- [13.x] Use Str::uuid()->toString() by @lucasmichot in #60995
- [13.x] Check the class before calling relationLoaded in loadMissingRelationshipChain by @dxiiren in #60993
- [13.x] Fix ReflectsClosures::firstClosureParameterTypes() returning wrong parameter's type by @lucasmichot in #60976
- [13.x] Avoid repeated Redis prefix/connection lookups in tag-set loops by @lucasmichot in #61002
- [13.x] early return by @lucasmichot in #61014
- Revert "[13.x] Add if-related rector rules" by @taylorotwell in #61027
- Revert "[13.x] Use Str::uuid()->toString()" by @taylorotwell in #61028
- [13.x] Fix
Arr::forget()removing the wrong element by @AlessioGiacobbe in #61023
v13.23.0 - 2026-07-27
- Bump postcss from 8.5.15 to 8.5.23 in /src/Illuminate/Foundation/resources/exceptions/renderer by @dependabot[bot] in #60884
- [13.x] Add a monthly log driver by @SjorsO in #60892
- [13.x] Improve types in
Imageclass by @shaedrich in #60890 - Fix null handling in Arr::last() method by @AmadulHaque in #60887
- [13.x] Allow ImageManager fromStorage disk to accept enums by @riesjart in #60889
- [13.x] Add SES tenant support to the SES v2 transport by @atymic in #60886
- Bump actions/checkout from 7.0.0 to 7.0.1 in the github-actions group by @dependabot[bot] in #60900
- [13.x] Prevent fatal errors when logging deprecations fails by @GrahamCampbell in #60893
- [13.x] Bump
monolog/monologconstraint by @jackbayliss in #60894 - [13.x] Add monthly channel to logging config by @yazansalhi in #60895
- [13.x] Use a timing-safe comparison for the maintenance mode bypass secret by @yazansalhi in #60896
- [13.x] Improve
Collection::selectgeneric types by @timacdonald in #60898 - [13.x] Allow ->using(...) in ->change() migrations for PostgreSQL compatibility by @shemgp in #60901
- Revert "[13.x] Fix that retries of
ShouldBeUniqueUntilProcessingjobs are force-releasing locks they don't own" by @taylorotwell in #60905 - [13.x] Fix default handling in
CookieJar::queued()by @alies-dev in #60904 - [13.x] Fix schedule:list timezone conversion for range, step, and wildcard cron expressions by @xiCO2k in #60877
v13.22.0 - 2026-07-24
- [13.x] Fix PHP extensions in sqlite workflow job by @lucasmichot in #60850
- [13.x] Use new Stringable(...) instead of Str::of()/str() internally by @lucasmichot in #60852
- [13.x] Extract PHP setup steps into a shared composite action by @lucasmichot in #60851
- [13.x] add the exception to JobReleasedAfterException by @jackbayliss in #60823
- [13.x] Implement
creationTimeOfOldestPendingJobon the QueueFake by @jackbayliss in #60730 - [13.x] Check traits in resolveClassAttribute by @jackbayliss in #60566
- [13.x] Enable additional Rector rules by @lucasmichot in #60854
- [13.x] Optimize Str::ucfirst and Str::lcfirst using native PHP 8.4 functions by @bunyaminbilenkaratas in #60864
- [13.x] Fix queue name parameter in Mailer::later() by @Button99 in #60865
- [13.x] Support stream bodies in HTTP fake responses by @drewmt in #60834
- [13.x] Allow RateLimiter to be Macroable by @jackbayliss in #60869
- [13.x] Add a
#[BindWhen()]attribute to conditionally bind into the container by @ziadoz in #60862 - [13.x] Add timeout minutes to workflows by @jackbayliss in #60872
- [13.x] Restore iterable support to Arr::every() and Arr::some() by @Amirhf1 in #60876
- [13.x] ColumnDefinition::unsigned takes a parameter, which should be documented by @afk11 in #60875
- [13.x] Add multi-queue support to queue:clear command by @miladshakerdn in #60873
- [13.x] Fix Cache::touch() expiration handling by @Amirhf1 in #60878
- [13.x] Mark HTTP testing credentials as sensitive by @Amirhf1 in #60880
- [13.x] Allow faking DNS lookups in validation rules by @SjorsO in #60879
- [13.x] Fix iterable support in Arr::last() by @Amirhf1 in #60881
- [13.x] Support
Delayattribute when usingBus::batch& bulk by @jackbayliss in #60766
v13.21.1 - 2026-07-21
v13.20.0 - 2026-07-14
- [13.x] Add missing $separator parameter to Storage facade append/prepend docblocks by @ferhatolmez in #60693
- [13.x]
beforePushingandafterPushingmethods onQueueFakeclass by @gdebrauwer in #60689 - [13.x] Add memory usage to WorkerStopping by @jackbayliss in #60613
- [13.x] Add
assertEmptyto the Storage facade by @jackbayliss in #60658 - [13.x] Adds first-party support for
imageprocessing by @nunomaduro in #59276 - [13.x] Fix operator precedence in SqsQueue size fallbacks by @daffa-aditya-p in #60702
- Add separator params to Storage facade docblocks by @Muhtasim-Munif-Fahim in #60703
- [13.x] Add test for the scheduler's quarterlyOn method by @dfinchenko in #60712
- Make MailFake::assertQueuedTimes() public by @Tresor-Kasenda in #60710
- [13.x] Sync more getter return types with their property generics by @dfinchenko in #60699
- [13.x] Fix guessResourceName() namespace collision when class name is a substring of a parent namespace segment by @Rubrasum in #60707
- [13.x] Add WithoutMiddleware controller middleware attribute by @JurianArie in #60709
- [13.x] Add incrementEachQuietly and decrementEachQuietly to Eloquent models by @shanerbaner82 in #60720
- [13.x] Normalize HTTP client request header lookups by @Button99 in #60734
- [12.x] Enum as queue overlap key by @finagin in #60722
- [13.x] Support null for shortcut field in return type array for HasParameters::getOptions (#60723) by @wimski in #60728
- [13.x] Ability to set session prefix for Redis by @jackbayliss in #60700
- [13.x] Add
#[SensitiveParameter]to parameters carrying secrets by @axlon in #60753 - [13.x] Optimize by using contains or doesntContain by @lucasmichot in #60745
- [13.x] Remove redundant Mockery::close() calls by @lucasmichot in #60743
- [13.x] Only register pail in DevCommands when
pcntl_forkis available by @jackbayliss in #60749 - [13.x] Use PHPUnit rector sets instead of individual rules by @lucasmichot in #60744
- [13.x] Replace manual all/any foreach loops with array_all/array_any by @lucasmichot in #60742
- [13.x] Add test for the Uri toStringable method by @dfinchenko in #60739
- [13.x] Fix Str::containsAll() returning true for an empty needles array by @lucasmichot in #60746
- [13.x] Fix stale transformations being reapplied when branching an Image after toBytes() by @lucasmichot in #60748
- [13.x] Fix Number::forHumans() and abbreviate() returning "-0" for tiny negative values by @semx in #60736
- [13.x] Add test for the Email rule's strict method by @dfinchenko in #60740
- [13.x] fix: providesTemporaryUploadUrls should return true for s3 driver by @joostdebruijn in #60755
- [12.x] Add capitalize parameter to Stringable::initials() by @irabbi360 in #60741
- [13.x] Fix dynamic calls to incrementEachQuietly and decrementEachQuietly by @daffa-aditya-p in #60737
- Fix BelongsToMany::touch() when related key is not
idby @Peeterush in #60708 - Merge branch '12.x' into 13.x by @crynobone in #60773
- [13.x] Fix Number::forHumans() and abbreviate() scaling tiny decimals by @daffa-aditya-p in #60768
- [13.x] Reset fake time globally after each test, drop redundant Carbon::setTestNow() cleanup by @lucasmichot in #60761
- [13.x] Ensure
make:migrationgenerates collision-free, ordered timestamps prefixes by @NickSdot in #60771 - [13.x] Fix JsonApiResource relationships resolved through a closure by @markwalet in #60752
- [13.x] Fix TrustProxies at:* when multiple proxies are used by @mattford in #60726
v13.19.0 - 2026-07-07
- [13.x] Support inspecting reserved jobs on the queue fake by @jackbayliss in #60644
- [13.x] Add
reduceIntomethod to collection by @JosephSilber in #60651 - [13.x] Add
countedmethod toStrandStringableby @JosephSilber in #60649 - [13.x] Ensure
deletedAtColumnis passed toassertSoftDeleted&assertNotSoftDeletedby @jackbayliss in #60657 - [13.x] Pop managed queue jobs from the cloud-agent instead of SQS by @kieranbrown in #60659
- [12.x] Pop managed queue jobs from the cloud-agent instead of SQS by @kieranbrown in #60660
- [12.x] Terminate default style value with a semicolon in ComponentAttributeBag::merge() by @Amirhf1 in #60665
- Bump stefanzweifel/git-auto-commit-action from 7.1.0 to 7.2.0 in the github-actions group by @dependabot[bot] in #60672
- [13.x] Update comment in
Cloud/Queue.phpby @jackbayliss in #60673 - [13.x] Add tests for relative date where clauses by @aligulzar729 in #60675
- [13.x] Add
phpdoc_trim_consecutive_blank_line_separation ruleto pint by @lucasmichot in #60669 - [13.x] Remove deprecated
StaticCallOnNonStaticToInstanceCallRectorfixer rule by @lucasmichot in #60670 - [13.x] Allow mail config options without name by @jackbayliss in #60668
- [13.x] Adjust Queue comment after Dependabot by @jackbayliss in #60679
- [13.x] Send bulk SQS jobs via SendMessageBatch by @kieranbrown in #60645
- [13.x] Add
queryandqueryJsonHTTP testing helpers by @shanerbaner82 in #60662 - [13.x] Add
Http::query()method to the HTTP client by @shanerbaner82 in #60663 - Merge branch '12.x' into 13.x by @crynobone in #60684
- [13.x] Add tests for the date rule's past/future/nowOrPast/nowOrFuture methods by @aligulzar729 in #60687
v13.18.1 - 2026-07-02
- [13.x] Allow assertDatabaseEmpty to handle iterable by @jackbayliss in #60621
- [13.x] Add
input()method to console commands by @stevebauman in #60607 - [13.x] Handle api / json routes with Down (Maintenance) command by @davidrushton in #60595
- [13.x] fix: respect channel name for on-demand log stacks by @maltf0 in #60635
- [13.x] Support inspecting delayed jobs on the queue fake by @jackbayliss in #60636
- Add
Releasequeue middleware by @mgcodeur in #60630 - [13.x] Update docblocks of Blueprint foreignUuid and foreignUlid to match foreignId by @LiddleDev in #60643
- Respect the encoding in Str::mask() when building the end of the string by @iammcoding in #60646
- [13.x] Supports scalar Predis retry config to allows
config:cacheby @crynobone in #60642
v13.18.0 - 2026-06-30
- [13.x] Further reduce cache hits when using debounced jobs by @jackbayliss in #60575
- Add priority-based registration to dev commands by @joetannenbaum in #60580
- fix: cache headers not set on HEAD requests by @c0defre4k in #60589
- [13.x] Add conditional return types to several methods by @alies-dev in #60586
- [13.x] Sync getter return types with their property generics by @dfinchenko in #60591
- [13.x] Expose jobs processed count and last job timestamp on the WorkerStopping event by @jackbayliss in #60592
- [13.x] Prevent restored event when soft delete restore fails by @Button99 in #60605
- [13.x] Ensure lastJobProcessedAt is null if nothing is processed by @jackbayliss in #60608
- Fix RateLimited middleware not serializing releaseAfter in __sleep() by @Amirhf1 in #60609
- Use
--kill-others-on-failforartisan devby @joetannenbaum in #60606 - [13.x] Fix Number::forHumans() and Number::abbreviate() crashing on INF/NAN by @humamj1 in #60617
- [13.x] Fix Json parsing for top level zero bodies by @Button99 in #60614
- [13.x] schedule:work catch signals by @rforced in #60616
- Bump the github-actions group with 2 updates by @dependabot[bot] in #60622
- [13.x] Fix Number::fileSize crashing on INF/NAN inputs by @Amirhf1 in #60625
- [13.x] Fix flexible() lock and defer label collisions in TaggedCache by @Amirhf1 in #60626
v13.17.0 - 2026-06-23
- [12.x] Add multi-type union support to Illuminate JsonSchema by @pushpak1300 in #60462
- [12.x] Add new error messages for detecting lost connections by @mfn in #60472
- [12.x] Ability to refresh cache locks by @bytestream in #58349
- [12.x] Guard JsonSchema deserializer against unbounded $ref expansion by @pushpak1300 in #60524
- [13.x] Improve types of InteractsWithData when* helpers by @dfinchenko in #60536
- [13.x] Add missing @throws \ReflectionException annotations by @dfinchenko in #60535
- [13.x] Add nightly workflow to verify framework install by @jackbayliss in #60532
- [13.x] Fix DevCommands vendor registration check skipping userland frames by @joetannenbaum in #60538
- [13.x] Fix FileStore cache deserialization with short timestamps by @hamdyelbatal122 in #60543
- [13.x] Add missing @throws \InvalidArgumentException annotations by @maiobarbero in #60546
- [12.x] Fix Postgres whereDate/whereTime crash when column is Expression by @irabbi360 in #60540
- [13.x] Add route metadata support by @benbjurstrom in #60530
- [13.x] Make between()/unlessBetween() independent of timezone() call order by @ManicardiFrancesco in #60518
- [13.X] Fix too narrow typehint for validateBoolean and validateNumeric by @chippisc in #60549
- [13.x] Fix: typo by @alipowerful7 in #60556
- [13.x] Fix too narrow array-shape typehints where the first parameter is optional by @dfinchenko in #60553
- [13.x] Add Postgres transaction pooler support by @DGarbs51 in #60425
- [13.x] Should Not Retry Exception Handler by @alexbowers in #60552
- Bump actions/checkout from 6.0.3 to 7.0.0 in the github-actions group by @dependabot[bot] in #60562
- [13.x] Allow brick/math 0.18 by @jackbayliss in #60560
- [13.x] Reduce cache hits when debouncing with maxWait by @jackbayliss in #60559
- Merge branch
12.xby @crynobone in #60568 - Clear transaction manager state on disconnect by @lazerg in #60574
- [13.x] Add
without-migration-dataflag to DumpCommand by @jackbayliss in #60570 - Add
dev:listcommand and track dev command source by @joetannenbaum in #60573
v13.16.1 - 2026-06-16
- [13.x] Ensure DevCommands doesnt stop itself from registering by @jackbayliss in #60526
v13.16.0 - 2026-06-16
- [13.x] Fix incorrect casing of StdClass in SupportHelpersTest by @Soean in https://github.com/laravel/framework/pull/60479
- [13.x] Fix shell quoting when scheduled commands run as another user by @igorlealantunes in https://github.com/laravel/framework/pull/60469
- [13.x] Improve return type for
Localizable::withLocale()by @axlon in https://github.com/laravel/framework/pull/60466 - [13.x] Allow RouteParameter to use the attributed parameter name by @SanderSander in https://github.com/laravel/framework/pull/60465
- [13.x] Adjust CHANGELOG.md by @jackbayliss in https://github.com/laravel/framework/pull/60464
- [13.x] Add generic to HasEvents::dispatchesEvents() return type by @dfinchenko in https://github.com/laravel/framework/pull/60463
- [13.x] Improve return types for model callback-scope helpers by @dfinchenko in https://github.com/laravel/framework/pull/60481
- [13.x] Support enum for broadcastAs by @alexbowers in https://github.com/laravel/framework/pull/60483
- [13.x] Improve return types for database connection callback wrappers by @dfinchenko in https://github.com/laravel/framework/pull/60484
- [13.x] Add
arraymaintenance mode driver for parallel testing by @ziadoz in https://github.com/laravel/framework/pull/60489 - [13.x] Add
whenFilledEnummethod toInteractsWithDataby @astandkaya in https://github.com/laravel/framework/pull/60486 - [13.x] Add array to supported maintainance mode drivers doc by @jackbayliss in https://github.com/laravel/framework/pull/60490
- Bump esbuild, @tailwindcss/vite and vite in /src/Illuminate/Foundation/resources/exceptions/renderer by @dependabot[bot] in https://github.com/laravel/framework/pull/60501
- Improve return types for the remaining callback-passthrough helpers by @dfinchenko in https://github.com/laravel/framework/pull/60500
- Bump shivammathur/setup-php from 2.37.1 to 2.37.2 in the github-actions group by @dependabot[bot] in https://github.com/laravel/framework/pull/60512
- [13.x] Add missing @throws \JsonException annotations by @dfinchenko in https://github.com/laravel/framework/pull/60514
- [13.x] Improve return types for callback-passthrough interfaces and helpers by @dfinchenko in https://github.com/laravel/framework/pull/60513
- Improve types of
InteractsWithData::whenEnumby @takaram in https://github.com/laravel/framework/pull/60507 - [13.x] Ensure hashtags are removed via release script by @jackbayliss in https://github.com/laravel/framework/pull/60505
- Add anyOf support to JSON schema by @dbpolito in https://github.com/laravel/framework/pull/60509
- [13.x] Fix
Batchable::batchingfor finished batches by @miladev95 in https://github.com/laravel/framework/pull/60511 - [13.x] Add
withCookiesmethod toResponseTraitby @Amirhf1 in https://github.com/laravel/framework/pull/60503 - Add
artisan devcommand by @joetannenbaum in https://github.com/laravel/framework/pull/60412 - [13.x] Add correct return type to FileHelpers extension method by @MatthieuFlaceliere in https://github.com/laravel/framework/pull/60515
- Guard JsonSchema deserializer against unbounded $ref expansion by @pushpak1300 in https://github.com/laravel/framework/pull/60517
- [13.x] Support Queue attributes on traits by @jackbayliss in https://github.com/laravel/framework/pull/60519
- [13.x] Harden HTTP client request and fake response serialization by @GrahamCampbell in https://github.com/laravel/framework/pull/60522
v13.15.0 - 2026-06-09
-
[12.x] Fix infinite recursion when defining model scope with attribute as private by @noefleury in https://github.com/laravel/framework/pull/59958
-
[12.x] Fix infinite recursion when middleware group referencing itself by @noefleury in https://github.com/laravel/framework/pull/60002
-
[12.x] Backport #60000 to 12.x by @iWader in https://github.com/laravel/framework/pull/60006
-
[12.x] Narrow attachment url scheme by @benbjurstrom in https://github.com/laravel/framework/pull/60035
-
[12.x] backport #60045 to 12.x by @levikl in https://github.com/laravel/framework/pull/60052
-
[12.x] Back port cloud queues by @timacdonald in https://github.com/laravel/framework/pull/60122
-
[12.x] Fix Number::fileSize() handling of negative byte values by @Amirhf1 in https://github.com/laravel/framework/pull/60147
-
[12.x] Remove stale PHPStan ignore comments from type tests by @jradtilbrook in https://github.com/laravel/framework/pull/60167
-
[12.x] Output cloud request ID in logs by @jradtilbrook in https://github.com/laravel/framework/pull/60166
-
[12.x] Dedicated Cloud Queue by @kieranbrown in https://github.com/laravel/framework/pull/60181
-
[12.x] Rename X-Request-ID header to Cloud-Request-ID by @kieranbrown in https://github.com/laravel/framework/pull/60189
-
[12.x] Boot managed queues before service providers boot by @kieranbrown in https://github.com/laravel/framework/pull/60199
-
[12.x] Accept Symfony's new control-characters exception message in mailer test by @kieranbrown in https://github.com/laravel/framework/pull/60203
-
[12.x] Fix queue:failed command to show real class name by @clementmas in https://github.com/laravel/framework/pull/60279
-
[12.x] Throw ManagedQueueNotFoundException when a managed queue is missing by @kieranbrown in https://github.com/laravel/framework/pull/60276
-
[12.x] Preserve empty HTTP attach contents by @GrahamCampbell in https://github.com/laravel/framework/pull/60291
-
Fix @params typo in Fluent and MessageBag toPrettyJson() docblocks by @Amirhf1 in https://github.com/laravel/framework/pull/60313
-
[12.x] Fix regex typo in Env::addVariableToEnvContents that prevented quotin… by @Amirhf1 in https://github.com/laravel/framework/pull/60312
-
[12.x] Fix Number::trim() returning null for INF and NAN values by @Amirhf1 in https://github.com/laravel/framework/pull/60322
-
[12.x] Fix FIFO queue name normalization in Cloud managed queues by @kieranbrown in https://github.com/laravel/framework/pull/60316
-
[12.x] Fix Number::pairs() infinite loop when $by is zero or negative by @Amirhf1 in https://github.com/laravel/framework/pull/60324
-
[12.x] Ensure path seperators aren't encoded in LocalFilesystemAdapter by @jackbayliss in https://github.com/laravel/framework/pull/60350
-
[12.x] Ensure
configis bound before trying to log deprecation notice by @crynobone in https://github.com/laravel/framework/pull/60376 -
[12.x] Add JSON Schema array deserializer by @pushpak1300 in https://github.com/laravel/framework/pull/60387
-
[13.x] Fix validation bypass in date_equals rule due to loose comparison by @gr8man in https://github.com/laravel/framework/pull/60393
-
[13.x] Add Macroable to InvokedProcess by @yoeriboven in https://github.com/laravel/framework/pull/60392
-
[13.x] Restrict allowed classes in routing unserialization by @gr8man in https://github.com/laravel/framework/pull/60391
-
[13.x] Extract flexible cache created-key prefix into a named constant by @Amirhf1 in https://github.com/laravel/framework/pull/60390
-
[13.x] Add missing type hints to WorkerIdle and listenForSignals to match sibling events by @Amirhf1 in https://github.com/laravel/framework/pull/60389
-
[13.x] Allow enums in Queue::route by @jackbayliss in https://github.com/laravel/framework/pull/60402
-
[13.x] Ensure unchanged compiled Blade views are not left expired by @dansan92 in https://github.com/laravel/framework/pull/60401
-
[12.x] Skip pg_collation lookup in compileColumns() on PostgreSQL servers before 9.1 by @fissible in https://github.com/laravel/framework/pull/60400
-
[13.x] Add units to queue attributes by @jackbayliss in https://github.com/laravel/framework/pull/60431
-
[13.x] Add Prohibitable to
cache:clearandqueue:flushby @jackbayliss in https://github.com/laravel/framework/pull/60430 -
[13.x] Refactor: use
Repository::FLEXIBLE_CREATED_KEY_PREFIXin test by @alipowerful7 in https://github.com/laravel/framework/pull/60424 -
[13.x] Refactor: add
\JsonExceptionby @alipowerful7 in https://github.com/laravel/framework/pull/60423 -
[13.x] Add generics to DatabaseTransactionsManager transaction getters by @dfinchenko in https://github.com/laravel/framework/pull/60420
-
[13.x] Fix: add
@throws \ReflectionExceptionby @alipowerful7 in https://github.com/laravel/framework/pull/60436 -
[13.x] Fix: add
|nullin doc blocks by @alipowerful7 in https://github.com/laravel/framework/pull/60435 -
Merge branch 12.x by @crynobone in https://github.com/laravel/framework/pull/60441
-
[13.x] fix model:prune Command options validation typo by @clemblanco in https://github.com/laravel/framework/pull/60444
-
[13.x] Add typed translation accessors by @dansan92 in https://github.com/laravel/framework/pull/60443
-
[13.x] Fix HandleExceptions fatal when static::$app is null during Octane request marshaling by @majidfeiz in https://github.com/laravel/framework/pull/60439
-
[13.x] Adjust PruneCommandTest by @jackbayliss in https://github.com/laravel/framework/pull/60445
-
[13.x] Add generic to QueueRoutes::all() return type by @dfinchenko in https://github.com/laravel/framework/pull/60447
-
[13.x] Pass reflection parameter to contextual attribute resolve method by @SanderSander in https://github.com/laravel/framework/pull/60457
-
Add multi-type union support to Illuminate JsonSchema by @pushpak1300 in https://github.com/laravel/framework/pull/60455
-
[13.x] Cache
rememberWithState()by @cosmastech in https://github.com/laravel/framework/pull/60385
v13.14.0 - 2026-06-04
- [13.x] Register the lazy refresh hook on all connections by @tontonsb in https://github.com/laravel/framework/pull/60359
- [13.x] Cache falsy JSON payloads in HTTP client responses by @Button99 in https://github.com/laravel/framework/pull/60357
- GitHub Actions hardening by @nunomaduro in https://github.com/laravel/framework/pull/60363
- Bump the github-actions group with 4 updates by @dependabot[bot] in https://github.com/laravel/framework/pull/60364
- [13.x] Fix
Request::createFromBase()compatibility with Symfony 8.1 by @irabbi360 in https://github.com/laravel/framework/pull/60354 - [13.x] Set default cooldown for GitHub Actions updates by @JurianArie in https://github.com/laravel/framework/pull/60368
- [13.x] Fix
Message::embeddata attachment handling by @miladev95 in https://github.com/laravel/framework/pull/60361 - [13.x] Namespace the cloud logging formatter by @timacdonald in https://github.com/laravel/framework/pull/60362
- Grant contents: read to pull requests workflow by @nunomaduro in https://github.com/laravel/framework/pull/60370
- [13.x] Respect child queue properties over inherited attributes by @mattiasgeniar in https://github.com/laravel/framework/pull/60369
- Grant contents: read and pull-requests: write to issues workflow by @nunomaduro in https://github.com/laravel/framework/pull/60371
- Use least-privilege permissions for pull requests and issues workflows by @nunomaduro in https://github.com/laravel/framework/pull/60372
- Pin pull requests and issues workflows to latest laravel/.github by @nunomaduro in https://github.com/laravel/framework/pull/60373
- Enable Dependabot auto-merge by @nunomaduro in https://github.com/laravel/framework/pull/60383
- [13.x] Foundation\Cloud\Events: remove an unused import and fix docblock by @oliverquynh in https://github.com/laravel/framework/pull/60378
- [13.x] Fix StartSession docblock by @oliverquynh in https://github.com/laravel/framework/pull/60375
- [13.x] Add JSON Schema array deserializer by @pushpak1300 in https://github.com/laravel/framework/pull/60384
- [13.x] Add queue to InspectedJob by @jackbayliss in https://github.com/laravel/framework/pull/60374
- [13.x] Fix treatment of null headers by @GrahamCampbell in https://github.com/laravel/framework/pull/60386
- [13.x] Add units to DebounceFor by @jackbayliss in https://github.com/laravel/framework/pull/60388
v13.13.0 - 2026-06-02
- [13.x] Add stan ignore for MySqlSchemaState by @jackbayliss in https://github.com/laravel/framework/pull/60284
- [13.x] Add attachFromStorage helpers to notification MailMessage by @LucasCavalheri in https://github.com/laravel/framework/pull/60268
- [13.x] Allow Http Client to be used as PSR Client by @willrowe in https://github.com/laravel/framework/pull/60295
- [13.x] Normalize HTTP client header values by @GrahamCampbell in https://github.com/laravel/framework/pull/60292
- [13.x] Report MultipleRecordsFoundException from sole() by @PeteBishwhip in https://github.com/laravel/framework/pull/60294
- [13.x] Hint unit in
UniqueForby @cosmastech in https://github.com/laravel/framework/pull/60289 - [13.x] Fix inverted ratio comparison operators in image dimension validation by @Button99 in https://github.com/laravel/framework/pull/60290
- [13.x] Allow scheduler to opt out of pause and interrupt cache checks by @jackbayliss in https://github.com/laravel/framework/pull/60226
- [13.x] Enhance Cache attribute to support memoization by @jenky in https://github.com/laravel/framework/pull/60309
- [13.x] Indicate an event was skipped by @cosmastech in https://github.com/laravel/framework/pull/60311
- [13.x] Fix
Illuminate\Http\Responsecompatibility against Symfony 8.1 by @crynobone in https://github.com/laravel/framework/pull/60318 - fix: fix isUniqueConstraintError to catch SQL Server error 2627 by @ErfanMomeniii in https://github.com/laravel/framework/pull/60320
- [13.x] Fix FIFO queue name normalization in Cloud managed queues by @kieranbrown in https://github.com/laravel/framework/pull/60315
- fix:
whereDateandwhereTimecrash when $column is anExpressionby @ahawlitschek in https://github.com/laravel/framework/pull/60314 - [13.x] Introduce Bus::bulk() by @jackbayliss in https://github.com/laravel/framework/pull/60297
- [13.x] Fix time-sensitive flaky test in NotificationDatabaseChannelTest by @KentarouTakeda in https://github.com/laravel/framework/pull/60333
- fix: Add content_id to inline attachment handling in CloudflareTransport by @pablo-gonzalez-helpwan in https://github.com/laravel/framework/pull/60330
- [13.x] Add payload to InspectedJob by @jackbayliss in https://github.com/laravel/framework/pull/60326
- Added MariaDB vector index capability by @michielvaneerd in https://github.com/laravel/framework/pull/60334
- Fix @theme directive collision in health check view by @cathrinevaage in https://github.com/laravel/framework/pull/60340
- [13.x] Remove unused variables from tests by @oliverquynh in https://github.com/laravel/framework/pull/60338
- [13.x] fix: Queue and Connection attributes in Mailable::queue() and later() by @irabbi360 in https://github.com/laravel/framework/pull/60328
- [13.x] Fix ValidationImageFileRuleTest by @jackbayliss in https://github.com/laravel/framework/pull/60348
- [13.x]
schedule:pausecommand should error when its disabled by @jackbayliss in https://github.com/laravel/framework/pull/60347
v13.12.0 - 2026-05-26
- [13.x] Accept Symfony's new control-characters exception message in mailer test by @kieranbrown in https://github.com/laravel/framework/pull/60202
- [13.x] Ability to opt out of worker restart on lost connection by @jackbayliss in https://github.com/laravel/framework/pull/60201
- [13.x] Resolve scheduled event callback parameter by type rather than name by @kayw-geek in https://github.com/laravel/framework/pull/60197
- [13.x] default clear() queue driver param to null by @jackbayliss in https://github.com/laravel/framework/pull/60192
- [13.x] Fix path separator being encoded for LocalFilesystemAdapter by @jackbayliss in https://github.com/laravel/framework/pull/60194
- [13.x] feat: add factory to pivot stub by @ludo237 in https://github.com/laravel/framework/pull/60204
- [13.x] Fix incorrect type hint in Optional::offsetUnset() docblock by @rpsohag in https://github.com/laravel/framework/pull/60207
- [13.x] Make ClearCommand prohibitable by @jackbayliss in https://github.com/laravel/framework/pull/60215
- [13.x] Allow auto discovered listeners to opt out of discovery by @jackbayliss in https://github.com/laravel/framework/pull/60209
- [13.x] Ensure Up/Down commands report exceptions by @jackbayliss in https://github.com/laravel/framework/pull/60232
- [13.x] Fix path separator encoding in temporaryUrl on local disk by @kayw-geek in https://github.com/laravel/framework/pull/60230
- [13.x] Add assertJsonPathsCanonicalizing to TestResponse by @Tresor-Kasenda in https://github.com/laravel/framework/pull/60225
- [13.x] Add
normalizeparameter toStr::studly()andStr::pascal()by @hotmeteor in https://github.com/laravel/framework/pull/60229 - [13.x] Fix async HTTP retries when using array backoff values by @LucasCavalheri in https://github.com/laravel/framework/pull/60214
- [13.x] Replace compact with explicit arrays by @parkourben99 in https://github.com/laravel/framework/pull/60234
- [13.x] Add prohibited to KeyGenerateCommand by @jackbayliss in https://github.com/laravel/framework/pull/60224
- [13.x] remove last
compact()call by @browner12 in https://github.com/laravel/framework/pull/60235 - [13.x] Allow JsonSchema fluent boolean flags to be unset by @LucasCavalheri in https://github.com/laravel/framework/pull/60239
- [13.x] battle harden when scheme is present in the config by @DGarbs51 in https://github.com/laravel/framework/pull/60237
- [13.x] Rector : Always convert
compact()to variables by @lucasmichot in https://github.com/laravel/framework/pull/60236 - [13.x] Add attributes to Scheduler by @cosmastech in https://github.com/laravel/framework/pull/60255
- [13.x] Guard base_path() call in SQLiteConnector for standalone usage by @YoussefMansour9 in https://github.com/laravel/framework/pull/60266
- [13.x] Fix incorrect @return types in Number::spell(), ordinal(), and spellOrdinal() by @AmdadulShakib in https://github.com/laravel/framework/pull/60263
- [13.x] Supports using URI-based connection for SQLite using
file:prefix by @crynobone in https://github.com/laravel/framework/pull/60261 - [13.x] Add
Client\Request::uri()by @stevebauman in https://github.com/laravel/framework/pull/60282 - [13.x] View\Factory::flushComponents() doesn't reset $slots / $slotStack by @martinsoenen in https://github.com/laravel/framework/pull/60283
- [13.x] Throw ManagedQueueNotFoundException when a managed queue is missing by @kieranbrown in https://github.com/laravel/framework/pull/60275
v13.11.2 - 2026-05-20
- [13.x] Fix lifecycle deferred event methods by @cosmastech in https://github.com/laravel/framework/pull/60190
- [13.x] Boot managed queues before service providers boot by @kieranbrown in https://github.com/laravel/framework/pull/60198
v13.11.1 - 2026-05-19
- Normalize Windows env variable comparison in ServeCommand by @wangchenxudev in https://github.com/laravel/framework/pull/60183
- [13.x] Rename X-Request-ID header to Cloud-Request-ID by @kieranbrown in https://github.com/laravel/framework/pull/60188
v13.11.0 - 2026-05-19
- [13.x] Dedicated Cloud Queue by @kieranbrown in https://github.com/laravel/framework/pull/60180
v13.10.0 - 2026-05-19
- [13.x] Improve queue metric tests by @timacdonald in https://github.com/laravel/framework/pull/60124
- [13.x] Add tests for SeeInHtml constraint covering unicode whitespace by @scabarcas17 in https://github.com/laravel/framework/pull/60128
- [13.x] Fix starts_with/ends_with rules rejecting numeric values by @aydinfatih in https://github.com/laravel/framework/pull/60120
- Fix typo in docblock for listManagementOptions method in SesV2Transport by @daliendev in https://github.com/laravel/framework/pull/60115
- [13.x] Fix typo in mergeAttributeFromCachedCasts() PHPDoc comment by @mosabbirrakib in https://github.com/laravel/framework/pull/60112
- [13.x] Optimize Worker queue pause check by @jackbayliss in https://github.com/laravel/framework/pull/60109
- [13.x] Fix typo in preg_replace_array() PHPDoc comment by @mosabbirrakib in https://github.com/laravel/framework/pull/60111
- Add storage store by @taylorotwell in https://github.com/laravel/framework/pull/60131
- Fix typo in Builder::getRelation() comment by @rpsohag in https://github.com/laravel/framework/pull/60130
- URL Encode Paths by @taylorotwell in https://github.com/laravel/framework/pull/60137
- [13.x] Add WorkerIdle event by @jackbayliss in https://github.com/laravel/framework/pull/60134
- [13.x] Replace @return with @var on docblocks for properties in tests by @scabarcas17 in https://github.com/laravel/framework/pull/60132
- [13.x] Pass WorkerOptions to Pausing/Resuming/Interrupted by @jackbayliss in https://github.com/laravel/framework/pull/60135
- [13.x] Switch force check in Worker by @jackbayliss in https://github.com/laravel/framework/pull/60145
- [13.x] Skip delimiter filesystem tests on Windows by @jackbayliss in https://github.com/laravel/framework/pull/60143
- Delimit aggregate alias by @willrowe in https://github.com/laravel/framework/pull/60140
- [13.x] Allow lifecycle and output callbacks on Schedule::group() by @cosmastech in https://github.com/laravel/framework/pull/60133
- [13.x] Allow passing scheduled
Eventin callbacks by @cosmastech in https://github.com/laravel/framework/pull/60144 - Validate against line breaks in emails by @taylorotwell in https://github.com/laravel/framework/pull/60151
- [13.x] Add
assertPushedOnce()by @weshooper in https://github.com/laravel/framework/pull/60150 - [13.x] Fix callable usage in
Event@callEventCallback()by @cosmastech in https://github.com/laravel/framework/pull/60148 - [13.x] Fix numeric property names being cast to integers in JsonSchema requi… by @irabbi360 in https://github.com/laravel/framework/pull/60149
- [13.x] Pass worker options to Looping by @jackbayliss in https://github.com/laravel/framework/pull/60153
- [13.x] Support enum queue names in QueueFake by @Tresor-Kasenda in https://github.com/laravel/framework/pull/60161
- [13.x] Remove obsolete @phpstan-ignore clauses by @jnoordsij in https://github.com/laravel/framework/pull/60164
- [13.x] Consistent test OS attributes by @jnoordsij in https://github.com/laravel/framework/pull/60162
- Output cloud request ID in logs by @jradtilbrook in https://github.com/laravel/framework/pull/60156
- [13.x] Optionally flush the SQS overflow store on queue:clear by @Orrison in https://github.com/laravel/framework/pull/60138
- [13.x] Add JSON output option to ListFailedCommand and corresponding tests by @Tresor-Kasenda in https://github.com/laravel/framework/pull/60168
- [13.x] Add schema foreign key existence helper by @Tresor-Kasenda in https://github.com/laravel/framework/pull/60169
- Stop when empty for by @taylorotwell in https://github.com/laravel/framework/pull/60176
- [13.x] Add initial value type to return of
reduceandreduceWithKeysby @jnoordsij in https://github.com/laravel/framework/pull/60178 - [13.x] Fix incorrect type hint in EncodedHtmlString::convert() docblock by @rpsohag in https://github.com/laravel/framework/pull/60186
v13.9.0 - 2026-05-13
- [13.x] Fix issue using custom aws credential providers by @iWader in https://github.com/laravel/framework/pull/60000
- [13.x] Revert "Correct Factory::configure @return to $this (#59963)" by @jnoordsij in https://github.com/laravel/framework/pull/60004
- [13.x] Replace
mb_splitwithpreg_splitby @jnoordsij in https://github.com/laravel/framework/pull/60012 - [13.x] Keep calls to implode() consistent by @lucasmichot in https://github.com/laravel/framework/pull/60013
- [13.x] update
rand()tomt_rand()by @browner12 in https://github.com/laravel/framework/pull/60018 - [13.x] remove
mt_srand()deprecated "mode" argument by @browner12 in https://github.com/laravel/framework/pull/60020 - [13.x] Remove useless
fail-fastoption by @lucasmichot in https://github.com/laravel/framework/pull/60019 - [13.x] Prefer spaceship operator when possible by @lucasmichot in https://github.com/laravel/framework/pull/60015
- [13.x] Fix incorrectly opened DocBlocks by @CasEbb in https://github.com/laravel/framework/pull/60014
- [13.x] Ensure that the named arguments are sorted during a call by @lucasmichot in https://github.com/laravel/framework/pull/60017
- [13.x] Rely on guzzlehttp/psr7 for nested multipart array expansion - Fix #59992 by @RomainMazB in https://github.com/laravel/framework/pull/59984
- [13.x] Add PreparesForDispatch interface for Jobs by @jackbayliss in https://github.com/laravel/framework/pull/59879
- Add support to scoped filesystem for Cloud by @jeremynikolic in https://github.com/laravel/framework/pull/60030
- [13.x] Unused
$parametersinvalidate*case()by @weshooper in https://github.com/laravel/framework/pull/60024 - [13.x] Narrow attachment url scheme by @benbjurstrom in https://github.com/laravel/framework/pull/60034
- [13.x] Skip allocation in mergeFillable/Appends/Hidden/Visible when input is empty by @olivier-zenchef in https://github.com/laravel/framework/pull/60008
- add generic return types to
Builderpaginate methods by @levikl in https://github.com/laravel/framework/pull/60045 - [13.x] Make PendingDispatch conditionable by @kevinb1989 in https://github.com/laravel/framework/pull/60047
- [13.x] Display error in
queue:pausewhenWorkerisn't pausable by @weshooper in https://github.com/laravel/framework/pull/60023 - [13.x] Add tests for
Attachment::fromUrl()URL scheme validation by @mdalikadar in https://github.com/laravel/framework/pull/60054 - [13.x] Fix @params typo in toPrettyJson docblocks by @mosabbirrakib in https://github.com/laravel/framework/pull/60050
- [13.x] re-add docblock for
apply()method by @browner12 in https://github.com/laravel/framework/pull/60055 - [13.x] Add unicode modifier to preg_split by @rodrigopedra in https://github.com/laravel/framework/pull/60056
- [13.x] Add name to MigrationStarted/MigrationEnded events by @jackbayliss in https://github.com/laravel/framework/pull/60059
- [13.x] Ability to override the Worker timeout exit code by @jackbayliss in https://github.com/laravel/framework/pull/60072
- [13.x] Add method to convert a Password instance to a passwordrules string by @imliam in https://github.com/laravel/framework/pull/60070
- add index for database performance by @DGarbs51 in https://github.com/laravel/framework/pull/60073
- [13.x] Add optional disk storage for large SQS queue payloads by @Orrison in https://github.com/laravel/framework/pull/59734
- [13.x] Cloud queue metrics by @timacdonald in https://github.com/laravel/framework/pull/60074
- [13.x] reset Lottery on test case teardown by @cosmastech in https://github.com/laravel/framework/pull/60083
- [13.x] Add support for
after_commitfor Cloud queue metrics by @timacdonald in https://github.com/laravel/framework/pull/60078 - [13.x] Remove Composer
github-oauthcredentials on Linux & Windows Actions by @crynobone in https://github.com/laravel/framework/pull/60095 - Revert "[13.x] Remove Composer
github-oauthcredentials on Linux & Windows Actions" by @crynobone in https://github.com/laravel/framework/pull/60100 - [13.x] Support config caching with Cloud queues by @timacdonald in https://github.com/laravel/framework/pull/60094
- [13.x] Support Concurrency Run Timeouts by @dbpolito in https://github.com/laravel/framework/pull/60105
- [13.x] Allow passing a Closure to
ThrottlesExceptionsmiddleware by @cosmastech in https://github.com/laravel/framework/pull/60103 - [13.x] Add enum support to contextual attribute binding by @Tresor-Kasenda in https://github.com/laravel/framework/pull/60092
- [13.x] Add foreignUuidFor schema helper by @Tresor-Kasenda in https://github.com/laravel/framework/pull/60091
- [13.x] Add unicode modifier to SeeInHtml normalize whitespace regex by @mosabbirrakib in https://github.com/laravel/framework/pull/60090
- [13.x] Replace @return with @var on property docblocks by @mosabbirrakib in https://github.com/laravel/framework/pull/60087
- Fix grammatical error in Lottery::alwaysLose() PHPDoc comment by @rpsohag in https://github.com/laravel/framework/pull/60086
- Fix typo in Sleep::microsecond() PHPDoc comment by @rpsohag in https://github.com/laravel/framework/pull/60085
v13.8.0 - 2026-05-05
- [12.x]
schedule:listdisplay expression in the correct timezone by @xiCO2k in https://github.com/laravel/framework/pull/59307 - [12.x] Fix validation wildcard array message type error by @sadique-cws in https://github.com/laravel/framework/pull/59339
- Preserve class type of mocked classes by @AJenbo in https://github.com/laravel/framework/pull/59353
- Preserve types on partialMock() and spy() by @AJenbo in https://github.com/laravel/framework/pull/59384
- Fix missing UnitEnum support in ModelNotFoundException by @jtheuerkauf in https://github.com/laravel/framework/pull/59423
- [12.x] Fix macros with static closures by @FeBe95 in https://github.com/laravel/framework/pull/59449
- Correct Storage::fake() return type by @AJenbo in https://github.com/laravel/framework/pull/59469
- [12.x] Fix callable type for freezeTime, freezeSecond, and travelTo by @nbayramberdiyev in https://github.com/laravel/framework/pull/59466
- [12.x] Support string abstract in mock/partialMock/spy PHPDoc by @kayw-geek in https://github.com/laravel/framework/pull/59477
- Document thrown exceptions in FilesystemAdapter by @AJenbo in https://github.com/laravel/framework/pull/59534
- Hint \Redis
@mixinon Connection by @AJenbo in https://github.com/laravel/framework/pull/59532 - [12.x] Use PDO subclass polyfill by @jnoordsij in https://github.com/laravel/framework/pull/59640
- [12.x] Fix infinite rate limiter TTL on custom increments by @paulandroshchuk in https://github.com/laravel/framework/pull/59693
- [12.x] Support named credential providers for SQS queue connections by @kieranbrown in https://github.com/laravel/framework/pull/59754
- [12.x] Prevent array to string conversion in signature validation by @alies-dev in https://github.com/laravel/framework/pull/59778
- [12.x] Memoize credentials in SqsConnector by @kieranbrown in https://github.com/laravel/framework/pull/59867
- [12.x] Disable pausing on managed queue workers by @kieranbrown in https://github.com/laravel/framework/pull/59871
- [DRAFT] Verify merging
12.xbranch by @crynobone in https://github.com/laravel/framework/pull/59929 - [13.x] Exclude expired locks in DatabaseLock::isLock by @JurianArie in https://github.com/laravel/framework/pull/59948
- [13.x] Merge attribute-provided middleware with existing middleware by @jnoordsij in https://github.com/laravel/framework/pull/59944
- [13.x] Tighten getCurrentSchemaListing @return in MySQL and SQLite builders by @mosabbirrakib in https://github.com/laravel/framework/pull/59942
- [13.x] Correct Repository::setStore @return to $this by @mosabbirrakib in https://github.com/laravel/framework/pull/59940
- [13.x] Correct Limit::none() @return type to Unlimited by @mosabbirrakib in https://github.com/laravel/framework/pull/59938
- [13.x] Add collation to processColumns and getColumns return shape by @mosabbirrakib in https://github.com/laravel/framework/pull/59937
- [13.x] Mark processViews schema field nullable in @return shape by @mosabbirrakib in https://github.com/laravel/framework/pull/59941
- Improve docblock wording in AurthorizationException by @Talha-74 in https://github.com/laravel/framework/pull/59930
- [13.x] Add Worker Pausing/Resuming events by @jackbayliss in https://github.com/laravel/framework/pull/59895
- [13.x] Allow PHPStan to infer the pivot type when passing the pivot model directly by @axlon in https://github.com/laravel/framework/pull/59959
- [13.x] Document missing $health param on ApplicationBuilder::withRouting by @mosabbirrakib in https://github.com/laravel/framework/pull/59968
- [13.x] Correct Log\Context\Repository::handleUnserializeExceptionsUsing @return to $this by @mosabbirrakib in https://github.com/laravel/framework/pull/59965
- [13.x] Correct Attribute caching toggles @return to $this by @mosabbirrakib in https://github.com/laravel/framework/pull/59962
- [13.x] Correct Factory::configure @return to $this by @mosabbirrakib in https://github.com/laravel/framework/pull/59963
- [13.x] Correct Translator::handleMissingKeysUsing @return to $this by @mosabbirrakib in https://github.com/laravel/framework/pull/59964
- [13.x] Correct Password::min @return to static by @mosabbirrakib in https://github.com/laravel/framework/pull/59967
- [13.x] Mark processIndexes type field nullable in @return shape by @mosabbirrakib in https://github.com/laravel/framework/pull/59961
- Add
assertSessionMissingInputby @jasonmccreary in https://github.com/laravel/framework/pull/59970 - [13.x] Mark generation type field nullable in processColumns @return shape by @mosabbirrakib in https://github.com/laravel/framework/pull/59960
- [13.x] Allow custom on delete/update by @JurianArie in https://github.com/laravel/framework/pull/59986
- Allow mail default driver to accept enums by @Tresor-Kasenda in https://github.com/laravel/framework/pull/59973
- [13.x] LocalScope private recursion by @jackbayliss in https://github.com/laravel/framework/pull/59979
- [13.x] Add an environment filter to the
schedule:listcommand by @m-fi in https://github.com/laravel/framework/pull/59993 - [13.x] Add generic result type to collection min/max methods by @jnoordsij in https://github.com/laravel/framework/pull/59991
- [13.x] Drop 12.x release notes and update heading by @jnoordsij in https://github.com/laravel/framework/pull/59987
- [13.x] Add enum support to QueueFake assertPushedOn method by @riesjart in https://github.com/laravel/framework/pull/59990
- [13.x] Improvements to collection sort docblocks by @jnoordsij in https://github.com/laravel/framework/pull/59988
- [13.x] Add all* queue inspection methods by @jackbayliss in https://github.com/laravel/framework/pull/59997
- [13.x] Add support for
SortDirectionenum to query builder classes by @jnoordsij in https://github.com/laravel/framework/pull/59865
v13.7.0 - 2026-04-28
- [13.x] Apply rector fixes by @lucasmichot in https://github.com/laravel/framework/pull/59787
- Support enum in LazyCollection -> keyBy() by @Back1ng in https://github.com/laravel/framework/pull/59809
- [13.x] Add enum support to ConcurrencyManager driver method by @maherelgamil in https://github.com/laravel/framework/pull/59801
- [13.x] Allow arrays for assertSoftDeleted & assertNotSoftDeleted by @jackbayliss in https://github.com/laravel/framework/pull/59796
- [13.x] Extract exception context in
JsonFormatterwhenExceptionHandleris not bound by @cosmastech in https://github.com/laravel/framework/pull/59799 - [13.x] Add isLocked to the Lock class by @jackbayliss in https://github.com/laravel/framework/pull/59791
- Fix route registration for domain-scoped routes by @Bottelet in https://github.com/laravel/framework/pull/59793
- [13.x] Mark
Scope@applybuilder parameter as having covariant template by @jnoordsij in https://github.com/laravel/framework/pull/59790 - [13.x] Allowing
DebounceForattribute to be inherited by @TWithers in https://github.com/laravel/framework/pull/59795 - [13.x] Fix PendingDispatch resolving Cache for every dispatched job by @sumaiazaman in https://github.com/laravel/framework/pull/59821
- [13.x] Add bulk JSON path assertions to TestResponse by @cyrodjohn in https://github.com/laravel/framework/pull/59829
- [13.x] Fix false positives in LazyCollection::has() for duplicate keys by @Button99 in https://github.com/laravel/framework/pull/59832
- [13.x] Add UnitEnum type support for $limiterName on RateLimitedWithRedis by @trippo in https://github.com/laravel/framework/pull/59841
- [13.x] Allow jobs to react to worker signals by @jackbayliss in https://github.com/laravel/framework/pull/59833
- [13.x] Honor empty JSON:API sparse fieldsets by @prateekbhujel in https://github.com/laravel/framework/pull/59813
- [13.x] Fix flaky DynamoBatchTest timing assertions by @sumaiazaman in https://github.com/laravel/framework/pull/59844
- [13.x] Memoize credentials in SqsConnector by @kieranbrown in https://github.com/laravel/framework/pull/59866
- [13.x] Disable pausing on managed queue workers by @kieranbrown in https://github.com/laravel/framework/pull/59870
- [13.x] Fix getMigrationBatches return type annotation by @mahfuz-rahman007 in https://github.com/laravel/framework/pull/59876
- [13.x] Fix PHPDoc typo in MigrationRepositoryInterface by @mahfuz-rahman007 in https://github.com/laravel/framework/pull/59875
- [13.x] Add UnitEnum support to Cache Repository touch method by @shane-zeng in https://github.com/laravel/framework/pull/59864
- [13.x] Prevent array query params from bypassing signed URL validation by @maherelgamil in https://github.com/laravel/framework/pull/59860
- [13.x] Add enum support to setDefaultDriver in QueueManager, LogManager, and SessionManager by @maherelgamil in https://github.com/laravel/framework/pull/59861
- [13.x] Add enum support to RedisManager purge method by @genius-asif-hub in https://github.com/laravel/framework/pull/59857
- [13.x] Fix factory hasAttached method pivot JSON attribute handling by @rmd974 in https://github.com/laravel/framework/pull/59856
- [13.x] Implement CanFlushLocks on NullStore and MemoizedStore by @sumaiazaman in https://github.com/laravel/framework/pull/59850
- [13.x] Introduce WorkerInterrupted event by @jackbayliss in https://github.com/laravel/framework/pull/59848
- [13.x] Fix MigrationRepositoryInterface return type docblocks (object vs array) by @mosabbirrakib in https://github.com/laravel/framework/pull/59887
- int argument for Collection::sortBy() by @lorenzolosa in https://github.com/laravel/framework/pull/59894
- [13.x] Add detailed @return shape to Schema\Builder::getForeignKeys by @maherelgamil in https://github.com/laravel/framework/pull/59903
- [13.x] Fix EloquentModelDecimalCastingTest assertion across brick/math versions by @maherelgamil in https://github.com/laravel/framework/pull/59904
- [13.x] Correct Lock getCurrentOwner @return type to string|null by @mosabbirrakib in https://github.com/laravel/framework/pull/59890
- [13.x] Correct Batch fresh and add @return to self|null by @mosabbirrakib in https://github.com/laravel/framework/pull/59891
- [13.x] Align Mailable::cc @return with sibling fluent methods by @mosabbirrakib in https://github.com/laravel/framework/pull/59892
- [13.x] Add support for
SortDirectionenum to collections and Arr by @jnoordsij in https://github.com/laravel/framework/pull/59859 - Add @fonts Blade directive and Vite font optimization runtime by @WendellAdriel in https://github.com/laravel/framework/pull/59584
- [13.x] Refactor: add
matchby @alipowerful7 in https://github.com/laravel/framework/pull/59914 - [13.x] Refactor: remove unnecessary call function by @alipowerful7 in https://github.com/laravel/framework/pull/59915
- [13.x] Refactor: improve tests by @alipowerful7 in https://github.com/laravel/framework/pull/59912
- Align Enumerable all, times and range @return with implementations by @mosabbirrakib in https://github.com/laravel/framework/pull/59911
- Align Enumerable search and flatten @return with implementations by @mosabbirrakib in https://github.com/laravel/framework/pull/59910
- Specify Translation Loader namespaces shape by @mosabbirrakib in https://github.com/laravel/framework/pull/59913
- Fix duplicate type key in getTypes/processTypes return shape by @mosabbirrakib in https://github.com/laravel/framework/pull/59909
- int argument for sortByDesc and Enumerable sort methods by @mosabbirrakib in https://github.com/laravel/framework/pull/59907
- Match processForeignKeys return shape to Builder::getForeignKeys by @mosabbirrakib in https://github.com/laravel/framework/pull/59908
v13.6.0 - 2026-04-21
- [13.x] Use
version_comparefunction by @lucasmichot in https://github.com/laravel/framework/pull/59687 - [13.x] Flip misordered assertions arguments by @lucasmichot in https://github.com/laravel/framework/pull/59691
- [13.x] Remove unused variable in
catch()by @lucasmichot in https://github.com/laravel/framework/pull/59689 - [13.x] Fix number abbreviation rollover between unit tiers by @Button99 in https://github.com/laravel/framework/pull/59692
- [13.x ]Use Null and Isset coalescing when possible by @lucasmichot in https://github.com/laravel/framework/pull/59690
- [13.x] Change
countarray comparison to empty array comparison to improve performance by @lucasmichot in https://github.com/laravel/framework/pull/59688 - [13.x] testsuite by @lucasmichot in https://github.com/laravel/framework/pull/59702
- [13.x] Enforce static calls by @lucasmichot in https://github.com/laravel/framework/pull/59704
- [13.x] Allow Table Attribute on child to override parent by @jackbayliss in https://github.com/laravel/framework/pull/59701
- [13.x] Return null from Cursor::fromEncoded for malformed payloads by @bipinks in https://github.com/laravel/framework/pull/59699
- [13.x] Port forward rate limiter fix by @paulandroshchuk in https://github.com/laravel/framework/pull/59706
- [13.x] Add debounceable queued jobs by @matthewnessworthy in https://github.com/laravel/framework/pull/59507
- [13.x] Support JSON responses for the built-in health route by @WendellAdriel in https://github.com/laravel/framework/pull/59710
- [13.x] Ensure Queue::route string defaults to queue only by @jackbayliss in https://github.com/laravel/framework/pull/59711
- [13.x] Fix failOnUnknownFields query parameter handling by @cyrodjohn in https://github.com/laravel/framework/pull/59728
- [13.x] Fix flaky QueueWorkerTest by freezing time before computing retryUntil by @bipinks in https://github.com/laravel/framework/pull/59727
- [13.x] Allow array of pivot arrays to be passed to hasAttached by @jackbayliss in https://github.com/laravel/framework/pull/59723
- [13.x] Fix TypeError in digits_between validation rule on non-string values by @sumaiazaman in https://github.com/laravel/framework/pull/59717
- [13.x] Add enum support to PasswordBrokerManager by @sumaiazaman in https://github.com/laravel/framework/pull/59714
- [13.x] Add enum support to BroadcastManager by @sumaiazaman in https://github.com/laravel/framework/pull/59713
- Change attempts column type from tiny to small integer by @ju-gow in https://github.com/laravel/framework/pull/59718
- [13.x] Get rid of useless Mockery::close by @lucasmichot in https://github.com/laravel/framework/pull/59730
- [13.x] Fix Vite CSS not loaded from nested chunk imports by @karim1999 in https://github.com/laravel/framework/pull/59662
- [13.x] Support named credential providers for SQS queue connections by @kieranbrown in https://github.com/laravel/framework/pull/59733
- [13.x] Enforce stricter assertions by @lucasmichot in https://github.com/laravel/framework/pull/59749
- [13.x] Cast to string before preg_match in decimal, max_digits, and min_digits rules by @sumaiazaman in https://github.com/laravel/framework/pull/59739
- [13.x] Ignore PHPUnit security advisory GHSA-qrr6-mg7r-m243 by @sumaiazaman in https://github.com/laravel/framework/pull/59761
- [13.x] Allow assertDatabase has & missing to accept arrays by @jackbayliss in https://github.com/laravel/framework/pull/59752
- [13.x ] Normalize Carbon by @lucasmichot in https://github.com/laravel/framework/pull/59750
- [13.x] Implement CanFlushLocks on FailoverStore by @sumaiazaman in https://github.com/laravel/framework/pull/59738
- [13.x] Validate MAC across all decryption keys by @ma32kc in https://github.com/laravel/framework/pull/59742
- [13.x] Use generic TModel in additional places in Factory class by @jnoordsij in https://github.com/laravel/framework/pull/59780
- [13.x] Ensure assertModelMissing and assertModelExists dont silently pass by @jackbayliss in https://github.com/laravel/framework/pull/59772
- [13.x] Introduce
JsonFormatterby @cosmastech in https://github.com/laravel/framework/pull/59756 - [13.x] Add prefersJsonResponses() to the application builder by @WendellAdriel in https://github.com/laravel/framework/pull/59753
- [13.x] Add support for Cloudflare Email Service by @dwightwatson in https://github.com/laravel/framework/pull/59735
- [13.x] Add enum support to NotificationChannelManager channel and driver methods by @yousefkadah in https://github.com/laravel/framework/pull/59783
v13.5.0 - 2026-04-14
- [13.x] Support #[Delay] attribute on queued mailables by @sumaiazaman in https://github.com/laravel/framework/pull/59580
- [13.x] Added inheritance support for Controller Middleware attributes. by @niduranga in https://github.com/laravel/framework/pull/59597
- [13.x] Normalize phpredis SSL context for single and cluster connections by @timmylindh in https://github.com/laravel/framework/pull/59569
- [13.x] Memoize the result of
TestCase@withoutBootingFramework()by @cosmastech in https://github.com/laravel/framework/pull/59610 - [13.x] Add missing @throws and docblocks for concurrency and model in… by @scabarcas17 in https://github.com/laravel/framework/pull/59602
- [13.x] Fix that retries of
ShouldBeUniqueUntilProcessingjobs are force-releasing locks they don't own by @kohlerdominik in https://github.com/laravel/framework/pull/59567 - [13.x] Add first-class Redis Cluster support for Queue and ConcurrencyLimiter by @timmylindh in https://github.com/laravel/framework/pull/59533
- [13.x] chore: Update PHP version from 8.2 to 8.3 in
bin/test.shscript by @crynobone in https://github.com/laravel/framework/pull/59605 - [13.x] Fix RedisQueueTest by @jackbayliss in https://github.com/laravel/framework/pull/59613
- [13.x] Add enum support to CacheManager store and driver methods by @yousefkadah in https://github.com/laravel/framework/pull/59637
- [13.x] Fix redirectUsersTo() overwriting redirectGuestsTo() callback by @timmylindh in https://github.com/laravel/framework/pull/59633
- [13.x] Add ability to detect unserializable values returned from cache by @jackbayliss in https://github.com/laravel/framework/pull/59630
- [13.x] Fix loose comparison false positive in NotPwnedVerifier with magic hash passwords by @scabarcas17 in https://github.com/laravel/framework/pull/59644
- [13.x] Refactor
Skipmiddleware by @cosmastech in https://github.com/laravel/framework/pull/59651 - [13.x] Resolve stan errors on MySqlSchemaState by @jackbayliss in https://github.com/laravel/framework/pull/59652
- [13.x] Allow closure values in updateOrCreate and firstOrNew by @yousefkadah in https://github.com/laravel/framework/pull/59647
- [13.x] Add enum support to MailManager mailer and driver methods by @yousefkadah in https://github.com/laravel/framework/pull/59645
- [13.x] Add enum support to AuthManager guard and shouldUse methods by @yousefkadah in https://github.com/laravel/framework/pull/59646
- [13.x] Add spatie/fork to composer suggestions by @jnoordsij in https://github.com/laravel/framework/pull/59660
- [13.x] Add enum support to Manager driver method by @scabarcas17 in https://github.com/laravel/framework/pull/59659
- [13.x] Fix custom driver binding bug and improve by @ollieread in https://github.com/laravel/framework/pull/59614
- [13.x] Improve PHPDoc for "safe" method with conditional return type by @leo95batista in https://github.com/laravel/framework/pull/59684
- [13.x] Bump Retry action in CI by @jackbayliss in https://github.com/laravel/framework/pull/59681
- [13.x] Move Scope interface @template from method-level to class-level to fix LSP violation by @kayw-geek in https://github.com/laravel/framework/pull/59675
- [13.x] Combine consecutive
issetandunsetby @lucasmichot in https://github.com/laravel/framework/pull/59685 - [13.x] Changes
strlencomparison to 0 to direct empty string compare by @lucasmichot in https://github.com/laravel/framework/pull/59686
v13.4.0 - 2026-04-07
- [13.x] Fix missing
Illuminate\Queue\Attributes\Delayattribute by @fadez in https://github.com/laravel/framework/pull/59504 - [13.x] Fix
$request->interval()failing with very small float values by @SanderMuller in https://github.com/laravel/framework/pull/59502 - [13.x] Add pint.json to export-ignore by @axlon in https://github.com/laravel/framework/pull/59497
- [13.x] Add --ignore-scripts to yarn in BroadcastingInstallCommand by @sumaiazaman in https://github.com/laravel/framework/pull/59494
- [13.x] Fix static closure binding in remaining manager classes by @sumaiazaman in https://github.com/laravel/framework/pull/59493
- [13.x] Fix CollectedBy attribute not resolving through abstract parent classes by @jackbayliss in https://github.com/laravel/framework/pull/59488
- [13.x] Fix: Allow runtime property overrides (onQueue) to take precedence over class attributes by @niduranga in https://github.com/laravel/framework/pull/59468
- [13.x] Use #[Delay] attribute in Bus Dispatcher by @sumaiazaman in https://github.com/laravel/framework/pull/59514
- [13.x] Use #[Delay] attribute in NotificationSender by @sumaiazaman in https://github.com/laravel/framework/pull/59513
- [13.x] Add
overflowoption to Carbon plus and minus by @lucasmichot in https://github.com/laravel/framework/pull/59509 - [13.x] Fix: respect null redirect in unauthenticated exception handler by @timmylindh in https://github.com/laravel/framework/pull/59505
- [13.x] Fix TypeError in starts_with/ends_with validation rules on non-string values by @sumaiazaman in https://github.com/laravel/framework/pull/59541
- [13.x] allow null to be passed directly to redirectGuestsTo() by @timmylindh in https://github.com/laravel/framework/pull/59526
- Revert "[13.x] Remove unnecessary clone in SessionManager to prevent duplicate Redis connections" by @taylorotwell in https://github.com/laravel/framework/pull/59542
- [13.x] Fix deprecation warning in Contains and DoesntContain rules when values contain null by @sumaiazaman in https://github.com/laravel/framework/pull/59561
- [13.x] Fix Str::markdown() and Str::inlineMarkdown() crash on null input by @sumaiazaman in https://github.com/laravel/framework/pull/59554
- [13.x] Add queue methods to inspect jobs by @jackbayliss in https://github.com/laravel/framework/pull/59511
- Feature/form request strict mode by @NurullahDemirel in https://github.com/laravel/framework/pull/59430
- Bump vite from 7.3.1 to 7.3.2 in /src/Illuminate/Foundation/resources/exceptions/renderer by @dependabot[bot] in https://github.com/laravel/framework/pull/59571
- [13.x] Fix deprecation warning in In and NotIn rules when values contain null by @sumaiazaman in https://github.com/laravel/framework/pull/59576
- [13.x] Add flushState to FormRequest to reset global strict mode between tests by @sumaiazaman in https://github.com/laravel/framework/pull/59574
- [13.x] Fix
#[WithoutRelations]queue attribute not being inherited by child classes by @stevebauman in https://github.com/laravel/framework/pull/59568
v13.3.0 - 2026-04-01
- [13.x] Forward releaseOnTerminationSignals through schedule groups by @jackbayliss in https://github.com/laravel/framework/pull/59357
- [13.x] Fix sub-minute scheduling skips at minute boundaries by @JoshSalway in https://github.com/laravel/framework/pull/59331
- [13.x] Display memory usage in verbose queue worker output by @jackbayliss in https://github.com/laravel/framework/pull/59379
- [13.x] Update WithoutOverlapping@shared() for clarity by @cosmastech in https://github.com/laravel/framework/pull/59375
- [13.x] Fix dependency injection of faked queueing dispatcher by @axlon in https://github.com/laravel/framework/pull/59378
- [13.x] Fix incrementEach/decrementEach to scope to model instance by @JoshSalway in https://github.com/laravel/framework/pull/59376
- [13.x] Add array value types to Support module docblocks by @Anthony14FR in https://github.com/laravel/framework/pull/59383
- [13.x] Add lost connection to WorkerStopReason by @jackbayliss in https://github.com/laravel/framework/pull/59370
- [13.x] MariaDbSchemaState uses mysql --version for client detection instead of mariadb --version by @kylemilloy in https://github.com/laravel/framework/pull/59360
- [13.x] Add enum support to QueueManager connection methods by @sumaiazaman in https://github.com/laravel/framework/pull/59389
- [13.x] Setup rector by @lucasmichot in https://github.com/laravel/framework/pull/59385
- [13.x] Improve
Arr::whereNotNull()docs by @axlon in https://github.com/laravel/framework/pull/59411 - [13.x] Pass request to afterResponse callback by @bilfeldt in https://github.com/laravel/framework/pull/59410
- [13.x] Add isNotEmpty() method to Uri class by @sumaiazaman in https://github.com/laravel/framework/pull/59408
- [13.x] Add missing capitalize parameter to Stringable::initials() by @sumaiazaman in https://github.com/laravel/framework/pull/59407
- [13.x] Fix trait initializer collision with Attribute parsing by @sadique-cws in https://github.com/laravel/framework/pull/59404
- [13.x] Add session to supported drivers comment by @jackbayliss in https://github.com/laravel/framework/pull/59399
- [13.x] Add
->file()method to$request->safe()by @SanderMuller in https://github.com/laravel/framework/pull/59396 - [13.x] Add enum support to LogManager channel and driver methods by @sumaiazaman in https://github.com/laravel/framework/pull/59391
- [13.x] Fix MorphTo eager load matching when ownerKey is null and result key is a non-primitive by @wietsewarendorff in https://github.com/laravel/framework/pull/59394
- [13.x] Remove unnecessary clone in SessionManager to prevent duplicate Redis connections by @JoshSalway in https://github.com/laravel/framework/pull/59323
- [13.x] Use FQCN for Str in exception renderer blade templates by @bankorh in https://github.com/laravel/framework/pull/59412
- Allow variadic args for model attributes by @jasonmccreary in https://github.com/laravel/framework/pull/59421
- [13.x] CollectedBy Attribute should follow inheritence by @jackbayliss in https://github.com/laravel/framework/pull/59419
- [13.x] Fix deprecation notice in JSON:API resources by @alihamze in https://github.com/laravel/framework/pull/59418
- [13.x] Add withoutFragment() method to Uri class by @sumaiazaman in https://github.com/laravel/framework/pull/59413
- [13.x] Fix macros with static closures by @FeBe95 in https://github.com/laravel/framework/pull/59414
- [13.x] Fix sum() docblock to include key parameter in callback signature by @sumaiazaman in https://github.com/laravel/framework/pull/59444
- [13.x] Add assertHasNoAttachments() method to Mailable by @sumaiazaman in https://github.com/laravel/framework/pull/59443
- [13.x] Add a driver method to the MailFake class by @kevinb1989 in https://github.com/laravel/framework/pull/59448
- [13.x] Cache getLockForPopping() result in DatabaseQueue by @sumaiazaman in https://github.com/laravel/framework/pull/59435
- [13.x] prefer
new Collection()overcollect()helper by @browner12 in https://github.com/laravel/framework/pull/59453 - [13.x] remove unnecessary
array_flip()calls by @browner12 in https://github.com/laravel/framework/pull/59452 - Make Collection methods compatible with extended subclass constructors by @ProjektGopher in https://github.com/laravel/framework/pull/59455
- [13.x]
UnitTesttest attribute by @cosmastech in https://github.com/laravel/framework/pull/59432 - [13.x] prefer
isset()overin_array()for better performance by @browner12 in https://github.com/laravel/framework/pull/59457 - [13.x] remove temporary variable by @browner12 in https://github.com/laravel/framework/pull/59456
- [13.x] Add BatchStarted event by @jackbayliss in https://github.com/laravel/framework/pull/59458
- [13.x] Preserve URI fragment when decoding query string by @Nipun404 in https://github.com/laravel/framework/pull/59481
- fix: allow returning Stringable objects in casts()-method by @Bloemendaal in https://github.com/laravel/framework/pull/59479
- [13.x] Fix manager breaking when called with static closure by @axlon in https://github.com/laravel/framework/pull/59470
- Prevents installed package from executing malicious code via
postinstallininstall:broadcastingcommand by @duncanmcclean in https://github.com/laravel/framework/pull/59485
v13.2.0 - 2026-03-24
- feat(queue): support enums in
#[Queue]and#[Connection]by @innocenzi in https://github.com/laravel/framework/pull/59278 - Improve raw SQL binding substitution performance by @gufoe in https://github.com/laravel/framework/pull/59277
- [13.x] fix: add missing negate for SeeInHtml assertion by @jesperbeisner in https://github.com/laravel/framework/pull/59303
- [13.x] Allow for passing enums to attributes by @riesjart in https://github.com/laravel/framework/pull/59297
- [13.x] Add releaseOnSignal param to withoutOverlapping by @jackbayliss in https://github.com/laravel/framework/pull/59298
- Add symmetrical, expressive attributes by @jasonmccreary in https://github.com/laravel/framework/pull/59284
- [13.x] Fix LazyPromise::wait() signature compatibility with Guzzle's PromiseInterface by @shavonn in https://github.com/laravel/framework/pull/59301
- [13.x]
schedule:listdisplay expression in the correct timezone by @xiCO2k in https://github.com/laravel/framework/pull/59286 - Handle exceptions in eventStream to prevent fatal error by @WendellAdriel in https://github.com/laravel/framework/pull/59292
- [13.x] Ensure connectUsing works with UnitEnum / FileManager drive docblock by @jackbayliss in https://github.com/laravel/framework/pull/59306
- [13.x] Include columns and index in UniqueConstraintViolationException by @cosmastech in https://github.com/laravel/framework/pull/59299
- [13.x] Add TimedOut worker stop reason by @jackbayliss in https://github.com/laravel/framework/pull/59310
- Fix Table attribute incrementing not working for Pivot models by @sadique-cws in https://github.com/laravel/framework/pull/59336
- [13.x] Ensure ScopedBy Attribute works with inheritance by @jackbayliss in https://github.com/laravel/framework/pull/59332
- Modify sum callback to include item key by @mathieutu in https://github.com/laravel/framework/pull/59322
- [13.x] Bound error page query listener to prevent memory bloat in Octane by @JoshSalway in https://github.com/laravel/framework/pull/59309
- [13.x] Allow opting out of worker Job exception reporting by @jackbayliss in https://github.com/laravel/framework/pull/59308
- [13.x] Adds mobile safe-area-inset support to exception renderer by @dr-codswallop in https://github.com/laravel/framework/pull/59341
- [13.x] Allow passing multiple arrays to has factory method by @jackbayliss in https://github.com/laravel/framework/pull/59343
- [13.x] Allow Backoff Attribute to be variadic by @jackbayliss in https://github.com/laravel/framework/pull/59354
v13.1.1 - 2026-03-18
- Break queue dependency by @taylorotwell in https://github.com/laravel/framework/pull/59275
v13.1.0 - 2026-03-18
- [12.x] Correct truncate exceptions at by @bretto36 in https://github.com/laravel/framework/pull/59239
- [13.x] Remove useless \Mockery::close() by @lucasmichot in https://github.com/laravel/framework/pull/59253
- Fix: Batch::add() wipes queue assignment on first job in array chains by @ProjektGopher in https://github.com/laravel/framework/pull/59233
- Improvements for asserting HTML in text by @jasonmccreary in https://github.com/laravel/framework/pull/59161
- [13.x] Use Carbon::now() instead of now() helper by @lucasmichot in https://github.com/laravel/framework/pull/59252
- [13.x] Fix null broadcaster deprecation warning in PHP 8.5 by @mortenscheel in https://github.com/laravel/framework/pull/59269
- [12.x] Fix float pluralization in trans_choice() by @JulianGlueck in https://github.com/laravel/framework/pull/59268
- [12.x] Fix tests on PHP 8.5 by @SanderMuller in https://github.com/laravel/framework/pull/59251
- [13.x] Add toString to Uri by @dwightwatson in https://github.com/laravel/framework/pull/59259
v13.0.0 - 2026-03-17
- Revert "[12.x] Query builder PDO fetch modes" by @taylorotwell in https://github.com/laravel/framework/pull/54709
- [13.x] Prepare branch alias for Laravel 13 by @crynobone in https://github.com/laravel/framework/pull/54701
- [12.x] Query builder PDO fetch modes + columns fix by @bert-w in https://github.com/laravel/framework/pull/54734
- [13.x] Fix Tests/CI environments by @crynobone in https://github.com/laravel/framework/pull/54760
- [13.x] Requires PHP 8.3 as minimum version by @crynobone in https://github.com/laravel/framework/pull/54763
- [13.x] Add missing parameters to
Responsemethodsthrow()andthrowIf()by @cosmastech in https://github.com/laravel/framework/pull/54798 - [13.x] Fix scope removal in nested where conditions by @willrowe in https://github.com/laravel/framework/pull/54816
- [13.x] Remove function existence checks by @xurshudyan in https://github.com/laravel/framework/pull/54876
- [13.x] Removed unneeded default argument by @AndrewMast in https://github.com/laravel/framework/pull/54900
- [13.x] Fix unresolved merge conflict in Concurrency composer.json by @jnoordsij in https://github.com/laravel/framework/pull/55233
- [13.x] Fixes merge conflict by @crynobone in https://github.com/laravel/framework/pull/55294
- [13.x] Error exit code for clear command by @mbardelmeijer in https://github.com/laravel/framework/pull/55355
- [13.x] Add #[\Override] to the BatchFake class methods by @imanghafoori1 in https://github.com/laravel/framework/pull/55358
- [13.x] PDO Fetch modes by @bert-w in https://github.com/laravel/framework/pull/55394
- Allow Listeners to dynamically specify deleteWhenMissingModels by @L3o-pold in https://github.com/laravel/framework/pull/55508
- [13.x] Do not allow new model instances to be created during boot by @willrowe in https://github.com/laravel/framework/pull/55685
- Fix typo in
Blueprint:datetime=>dateTimeby @TheJoeSchr in https://github.com/laravel/framework/pull/55859 - Feature: add support straight join in mysql by @jferdi24 in https://github.com/laravel/framework/pull/55786
- [13.x] Register subdomain routes before routes that are not linked to a domain by @gdebrauwer in https://github.com/laravel/framework/pull/55921
- [13.x] Supports Symfony 7.4 & 8.0 by @crynobone in https://github.com/laravel/framework/pull/56029
- [13.x] Change to hyphenate prefixes by @u01jmg3 in https://github.com/laravel/framework/pull/56172
- [13.x] Use exception object in JobAttempted event by @bert-w in https://github.com/laravel/framework/pull/56148
- [13.x] remove superfluous element by @browner12 in https://github.com/laravel/framework/pull/56303
- Add eventStream signature to ResponseFactory contract by @csfh in https://github.com/laravel/framework/pull/56306
- fix: align ResponseFactory::eventStream signature with interface by @KIKOmanasijev in https://github.com/laravel/framework/pull/56484
- [13.x]
Cache::touch()&Store::touch()for TTL Extension by @yitzwillroth in https://github.com/laravel/framework/pull/55954 - [13.x] Make QueueBusy event consistent with other queue events by @AhmedAlaa4611 in https://github.com/laravel/framework/pull/56673
- [13.x] use clearer pagination view names by @browner12 in https://github.com/laravel/framework/pull/56307
- [13.x] Update
countBydocblock inEnumerableinterface to allow for enum callback by @jnoordsij in https://github.com/laravel/framework/pull/56897 - [13.x] Generate plural morph pivot table name by @willrowe in https://github.com/laravel/framework/pull/56832
- [13.x] Resolve Symfony Console
add()method deprecation by @KIKOmanasijev in https://github.com/laravel/framework/pull/56488 - [13.x] Add command method to contract by @rodrigopedra in https://github.com/laravel/framework/pull/56978
- Refactor: replace strpos check with str_contains for clarity by @arshidkv12 in https://github.com/laravel/framework/pull/57042
- Remove unnecessary parameters by @arshidkv12 in https://github.com/laravel/framework/pull/57047
- [README.md] change laravel bootcamp to laravel learn by @MoZayedSaeid in https://github.com/laravel/framework/pull/57176
- [13.x] Resolve issues with tests by @jackbayliss in https://github.com/laravel/framework/pull/57258
- [13.x] Bind manager instances to custom driver closures by @daniser in https://github.com/laravel/framework/pull/57173
- [13.x] Compile full DELETE with JOIN including ORDER BY and LIMIT in MySQL grammar by @tegos in https://github.com/laravel/framework/pull/57196
- [13.x] Flush
Strfactories when tearing down test case by @cosmastech in https://github.com/laravel/framework/pull/57296 - [13.x] Update reset password notification subject by @ganyicz in https://github.com/laravel/framework/pull/57882
- [13.x] Update verification email subject capitalization by @ganyicz in https://github.com/laravel/framework/pull/57884
- [13.x] Simplify preg_replace_array callback by removing unnecessary foreach loop by @sumaiazaman in https://github.com/laravel/framework/pull/57924
- [13.x] Fix changes from Laravel 12 by @crynobone in https://github.com/laravel/framework/pull/57919
- [13.x] Default
PendingRequest@pool()to use 2 for concurrency by @cosmastech in https://github.com/laravel/framework/pull/57972 - [13.x] Copy
Symfony\Component\HttpFoundation\Request::get()functionality to avoid breaking changes. by @crynobone in https://github.com/laravel/framework/pull/58081 - [13.x] Defer registering schedule registered using
ApplicationBuilder::withScheduling()by @crynobone in https://github.com/laravel/framework/pull/58160 - [13.x] Return data object from
ModelInspectorto makeshow:modelmore flexible by @cosmastech in https://github.com/laravel/framework/pull/58230 - [13.x] Add ability to default queue by class type by @jackbayliss in https://github.com/laravel/framework/pull/58094
- [13.x] Add reason to WorkerStopping event by @jackbayliss in https://github.com/laravel/framework/pull/58341
- [13.x] Add starting to Monitor Contract by @jackbayliss in https://github.com/laravel/framework/pull/58399
- [13.x] add dispatchAfterResponse to the Dispatcher Contract by @jackbayliss in https://github.com/laravel/framework/pull/58428
- [13.x] Add origin verification to request forgery protection by @benbjurstrom in https://github.com/laravel/framework/pull/58400
- [13.x] Improve
Enumerableinterface docblock types by @jnoordsij in https://github.com/laravel/framework/pull/58181 - Add missing chain method to interface by @Jeroen-G in https://github.com/laravel/framework/pull/58429
- [13.x] Use unescaped unicode in
Jssupport class by default by @jnoordsij in https://github.com/laravel/framework/pull/58471 - [13.x] Add enum types to repository contract / allow enums for tagged caches by @jackbayliss in https://github.com/laravel/framework/pull/58481
- [13.x] Restore eager-loaded relations when deserializing collections by @dxnter in https://github.com/laravel/framework/pull/58477
- [13.x] Bump minimum PHPUnit by @crynobone in https://github.com/laravel/framework/pull/58537
- [13.x] Respect default value for class dependencies in BoundMethod::call by @comhon-project in https://github.com/laravel/framework/pull/58553
- [13.x] Bump minimum
symfony/processby @crynobone in https://github.com/laravel/framework/pull/58548 - [13.x] Fix
illuminate/json-schemadependencies by @crynobone in https://github.com/laravel/framework/pull/58612 - [13.x] Add
hasSoleandhasManyto theEnumerableinterface by @JosephSilber in https://github.com/laravel/framework/pull/58610 - [13.x] Ensure bootstrap withMiddleware works for the DownCommand by @jackbayliss in https://github.com/laravel/framework/pull/58571
- [13.x] Remove override attribute on removed method by @crynobone in https://github.com/laravel/framework/pull/58628
- [13.x] Ensures compatibility with
symfony/console8 by @crynobone in https://github.com/laravel/framework/pull/58629 - [13.x] Add
ccto Mailer contract by @jackbayliss in https://github.com/laravel/framework/pull/58667 - Fix ThrottleRequests over-throttling with multiple distinct rate limit keys (#54386) by @HeathNaylor in https://github.com/laravel/framework/pull/58707
- [13.x] Add
markEmailAsUnverifiedtoMustVerifyEmailinterface by @amirhshokri in https://github.com/laravel/framework/pull/58701 - [13.x] Adds previous exceptions in exception view by @DarkGhostHunter in https://github.com/laravel/framework/pull/58680
- Attributes by @taylorotwell in https://github.com/laravel/framework/pull/58578
- [13.x] Accept CarbonInterval for PendingProcess timeouts by @riesjart in https://github.com/laravel/framework/pull/58842
- [13.x] Add Setup/TearDown trait attributes by @jackbayliss in https://github.com/laravel/framework/pull/58685
- [13.x] Allow aliases to be set in Signature Attribute (#58853) by @jackbayliss in https://github.com/laravel/framework/pull/58874
- [13.x] Adds PHPUnit 13 support by @nunomaduro in https://github.com/laravel/framework/pull/58890
- [13.x] Display route binding fields in
route:listoutput by @jackbayliss in https://github.com/laravel/framework/pull/58889 - [13.x] feat: respect
DeleteWhenMissingModelsattribute on queued notifications by @calebdw in https://github.com/laravel/framework/pull/58908 - [13.x] Resolve DeleteNotificationWhenMissingModelTest by @jackbayliss in https://github.com/laravel/framework/pull/58919
- [13.x] add missing methods to Queue interface by @cosmastech in https://github.com/laravel/framework/pull/58914
- [13.x] chore: define closure type on Middleware by @calebdw in https://github.com/laravel/framework/pull/58929
- [13.x] Ensure SyncQueue JobAttempted gets the actual exception by @jackbayliss in https://github.com/laravel/framework/pull/58954
- [13.x] Throw exception when served disks share the same URI by @jackbayliss in https://github.com/laravel/framework/pull/58960
- [13.x] withoutOverlapping docblock by @jackbayliss in https://github.com/laravel/framework/pull/58973
- [13.x] Fix
composer.jsonby @crynobone in https://github.com/laravel/framework/pull/58975 - [13.x] Update the dependencies version by @lucasmichot in https://github.com/laravel/framework/pull/58995
- [13.x] Normalize composer.json by @lucasmichot in https://github.com/laravel/framework/pull/58996
- [13.x] Add
flushLocks()support to Cache stores by @amirhshokri in https://github.com/laravel/framework/pull/58907 - [13.x] Add cache
flushLocks()events by @amirhshokri in https://github.com/laravel/framework/pull/59006 - [13.x] Refactor parameter names that are implemented from the interface by @mrvipchien in https://github.com/laravel/framework/pull/59015
- [13.x] Add missing @throws into docblock for various methods by @mrvipchien in https://github.com/laravel/framework/pull/59016
- Add insertOrIgnoreReturning method by @antonkomarev in https://github.com/laravel/framework/pull/59025
- Add corner case tests for insertOrIgnoreReturning by @antonkomarev in https://github.com/laravel/framework/pull/59028
- Extra validation on query builder upsert by @antonkomarev in https://github.com/laravel/framework/pull/59029
- [13.x] Add ErrorBag attribute support for FormRequest by @Tresor-Kasenda in https://github.com/laravel/framework/pull/59033
- [13.x] Add controller middleware attribute by @JurianArie in https://github.com/laravel/framework/pull/59030
- [13.x] Add Authorize controller middleware attribute by @JurianArie in https://github.com/laravel/framework/pull/59048
- [13.x] Fix
symfony/translationdeps by @crynobone in https://github.com/laravel/framework/pull/59054 - [13.x] Remove supports for
laravel/serializable-closurev1 by @crynobone in https://github.com/laravel/framework/pull/59053 - Add saveOrIgnore Eloquent Model method for conflict-safe inserts by @antonkomarev in https://github.com/laravel/framework/pull/59026
- [13.x] Add support for named arguments in event dispatching and broadcasting by @ph7jack in https://github.com/laravel/framework/pull/59075
- [13.x] Supports
pda/pheanstalk8.0+ and remove 5.x by @crynobone in https://github.com/laravel/framework/pull/59072 - [13.x] Bump dependencies by @crynobone in https://github.com/laravel/framework/pull/59069
- [13.x] Add ability to set channel name via Log contextual attribute by @cosmastech in https://github.com/laravel/framework/pull/59101
- [13.x] Ensure insertOrIgnoreReturning only marks records as modified when rows are inserted by @jackbayliss in https://github.com/laravel/framework/pull/59083
- [13.x] Clean up ModelInfo by @cosmastech in https://github.com/laravel/framework/pull/59080
- [13.x] Clean up JsonApi by @cosmastech in https://github.com/laravel/framework/pull/59079
- [13.x] Indicate that raw queries should be literal strings by @axlon in https://github.com/laravel/framework/pull/59081
- [13.x] Update brick/math constraint and rounding mode constant by @balu-lt in https://github.com/laravel/framework/pull/59107
- [13.x] fix: MorphToMany morphClass type by @calebdw in https://github.com/laravel/framework/pull/59110
- [13.x] Rename Middleware attribute parameter from $value to $middleware by @SanderMuller in https://github.com/laravel/framework/pull/59133
- [13.x] fix: QueueRoutes docblocks for getRoute and $routes property by @SanderMuller in https://github.com/laravel/framework/pull/59119
- [13.x] fix: DoesntContain docblock typo by @SanderMuller in https://github.com/laravel/framework/pull/59117
- [13.x] BusFake assertNothingDispatched should check all dispatches by @jackbayliss in https://github.com/laravel/framework/pull/59118
- [13.x] fix: Align JsonApiResource flushState maxRelationshipDepth with trait default by @SanderMuller in https://github.com/laravel/framework/pull/59116
- [13.x] Make Cache touch() TTL required and remove redundant value fetching by @SanderMuller in https://github.com/laravel/framework/pull/59121
- [13.x] Fix previousPath() for external referrers by @faytekin in https://github.com/laravel/framework/pull/59159
- Add depth parameter to Arr::dot() by @faytekin in https://github.com/laravel/framework/pull/59150
- [13.x] Drop method_exists checks in MonitorCommand by @jackbayliss in https://github.com/laravel/framework/pull/59151
- [12.x] Add strict integer validation to Numeric validation rule by @riesjart in https://github.com/laravel/framework/pull/59156
- [12.x] Add *OrFail transaction methods to
BelongsToManyby @SanderMuller in https://github.com/laravel/framework/pull/59153 - [13.x] Add Exception to BatchCanceled event by @jackbayliss in https://github.com/laravel/framework/pull/59163
- [13.x] Add support for
brick/math0.16 by @balu-lt in https://github.com/laravel/framework/pull/59165 - Bump tar from 7.5.9 to 7.5.11 in /src/Illuminate/Foundation/resources/exceptions/renderer by @dependabot[bot] in https://github.com/laravel/framework/pull/59164
- [12.x] Add missing *OrFail transaction methods to BelongsToMany by @erhanurgun in https://github.com/laravel/framework/pull/59168
- [12.x] Add inOrderOf() method to query builder by @faytekin in https://github.com/laravel/framework/pull/59162
- [12.x] Add tcp_keepalive option to PhpRedis connector by @heikokrebs in https://github.com/laravel/framework/pull/59158
- [13.x] Add schedule:pause / resume command by @jackbayliss in https://github.com/laravel/framework/pull/59169
- [12.x] un
tapPendingRequest by @cosmastech in https://github.com/laravel/framework/pull/59188 - [12.x] Fix float to int deprecation in trans_choice() for certain locales by @hamedelasma in https://github.com/laravel/framework/pull/59174
- [12.x] Allow
touch()to accept multiple columns by @devajmeireles in https://github.com/laravel/framework/pull/59175 - Revert "Add composite index to jobs table migration for improved queue polling" by @taylorotwell in https://github.com/laravel/framework/pull/59202
- [12.x] Add fluent string validation rule builder by @SanderMuller in https://github.com/laravel/framework/pull/59201
- [13.x] Add schedule resume and pause events by @jackbayliss in https://github.com/laravel/framework/pull/59172
- [13.x] insertOrIgnoreReturning with multiple unique keys by @tpetry in https://github.com/laravel/framework/pull/59187
- Update
Command::withProgressBarphpdoc to account for arrow functions and non-void return types by @billypoke in https://github.com/laravel/framework/pull/58766 - [12.x] Lazily evaluate value for constraints in
HasOneOrManyThroughby @Jacobs63 in https://github.com/laravel/framework/pull/59231 - Add string helper to get initials from a string by @denjaland in https://github.com/laravel/framework/pull/59230
- fix: Strip gzip-compressed output from concurrent process response by @NikhiltGhalme in https://github.com/laravel/framework/pull/59224
- [12.x] Fix failing tests introduced by #59201 by @SanderMuller in https://github.com/laravel/framework/pull/59207
- [12.x] Avoid redundant
Util::getParameterClassName()call in container resolution by @SanderMuller in https://github.com/laravel/framework/pull/59220 - [12.x] Add missing conditional validation rule builders by @SanderMuller in https://github.com/laravel/framework/pull/59209
- [12.x] Skip placeholder replacements when message does not contain them by @SanderMuller in https://github.com/laravel/framework/pull/59211
- [12.x] Use
array_pushwith spread operator inMessageBag::all()by @SanderMuller in https://github.com/laravel/framework/pull/59217 - [12.x] Cache Route instances in CompiledRouteCollection::getByName() by @SanderMuller in https://github.com/laravel/framework/pull/59221
- [13.x] Add additional Artisan attributes for usage, help and hidden by @ziadoz in https://github.com/laravel/framework/pull/59204
- [12.x] Accept CarbonInterval for retry sleep duration by @riesjart in https://github.com/laravel/framework/pull/59232
- [12.x] Fix failing phpstan by @GrahamCampbell in https://github.com/laravel/framework/pull/59245
- [12.x] Update comments for PlanetScale MySQL and PostgreSQL by @GrahamCampbell in https://github.com/laravel/framework/pull/59244
- [12.x] Use big integers for database cache expiration column by @tanerkay in https://github.com/laravel/framework/pull/59243
- [13.x] Allow brick/math ^0.17 by @jackbayliss in https://github.com/laravel/framework/pull/59249
- [12.x] Display file path and line number for closure routes in
route:listby @devajmeireles in https://github.com/laravel/framework/pull/59237 - [12.x] Add wantsMarkdown() and acceptsMarkdown() request methods by @joetannenbaum in https://github.com/laravel/framework/pull/59238
- [13.x] Ensure RequiredUnless handles null by @jackbayliss in https://github.com/laravel/framework/pull/59235