Skip to content

Latest commit

 

History

History
1168 lines (839 loc) · 90.6 KB

CHANGELOG-8.x.md

File metadata and controls

1168 lines (839 loc) · 90.6 KB

Release Notes for 8.x

Added

  • Introduce scoped instances (#37521, 2971b64)
  • Added whereContains AssertableJson method (#37631, 2d2d108)
  • Added Illuminate/Database/Connection::setRecordModificationState() (ee1e6b4)
  • Added match() and matchAll() methods to Illuminate/Support/Str.php (#37642)
  • Copy password rule to current_password (#37650)
  • Allow tap() on Paginator (#37682)

Revert

Fixed

  • Remove illuminate/foundation dependency from Password validation (#37648)
  • Fixed callable password defaults in validator (0b1610f)
  • Fixed dns_get_record loose check of A records for active_url rule (#37675)
  • Type hinted arguments for Illuminate\Validation\Rules\RequiredIf (#37688)
  • Fixed when passed object as parameters to scopes method (#37692)

Added

  • Allow Custom Notification Stubs (#37584)
  • Added methods for indicating the write connection should be used (94dbf76)
  • Added timestamp reference to schedule:run artisan command output (#37591)
  • Columns in the order by list must be unique (#37582)

Changed

  • Fire a trashed model event and listen to it for broadcasting events (#37618)
  • Cast JSON strings containing single quotes (#37619)

Fixed

  • Fixed for cloning issues with PendingRequest object (#37596, 96518b9)
  • Makes the retrieval of Http client transferStats safe (#37597)
  • Fixed inconsistency in table names in validator (#37606)
  • Fixes for Stringable for views (#37613)
  • Fixed one-of-many bindings (#37616)
  • Fixed infinity loop on transaction committed (#37626)
  • Added missing fix to DatabaseRule::resolveTableName fix #37580 (#37621)

Revert

Added

  • Introduce Conditional trait (#37504, 45ff23c, #37561)
  • Allow multiple SES configuration with IAM Role authentication (#37523)
  • Adds class handling for Blade echo statements (#37478)
  • Added Illuminate/Session/DatabaseSessionHandler::setContainer() (7a71c29)
  • Allow connecting to read or write connections with the db command (#37548)
  • Added assertDownloadOffered test method to TestResponse class (#37532)
  • Added Illuminate/Http/Client/Response::close() (#37566)
  • Allow setting middleware on queued Mailables (#37568)
  • Adds new RequestSent and ResponseReceived events to the HTTP Client (#37572)

Changed

  • Rename protected method Illuminate/Foundation/Console/StorageLinkCommand::removableSymlink() to Illuminate/Foundation/Console/StorageLinkCommand::isRemovableSymlink() (#37508)
  • Correct minimum Predis version to 1.1.2 (#37554)
  • Columns in the order by list must be unique (#37550)
  • More Convenient Model Broadcasting (#37491)

Fixed

  • Get queueable relationship when collection has non-numeric keys (#37556)

Added

  • Delegate lazy loading violation to method (#37480)
  • Added force option to Illuminate/Foundation/Console/StorageLinkCommand (#37501, 3e547d2)

Fixed

  • Fixed aggregates with having (#37487, c986e12)
  • Bugfix passing errorlevel when command is run in background (#37479)

Changed

  • Init the traits when the model is being unserialized (#37492)
  • Relax the lazy loading restrictions (#37503)

Added

  • Added Illuminate\Auth\Authenticatable::getAuthIdentifierForBroadcasting() (#37408)
  • Added eloquent strict loading mode (#37363)
  • Added default timeout to NotPwnedVerifier validator (#37440, 45567e0)
  • Added beforeQuery to base query builder (#37431)
  • Added Illuminate\Queue\Jobs\Job::shouldFailOnTimeout() (#37450)
  • Added ValidatorAwareRule interface (#37442)
  • Added model support for database assertions (#37459)

Fixed

  • Fixed eager loading one-of-many relationships with multiple aggregates (#37436)

Changed

  • Improve signed url signature verification (#37432)
  • Improve one-of-many performance (#37451)
  • Update Illuminate/Pagination/Cursor::parameter() (#37458)
  • Reconnect the correct connection when using ::read or ::write (#37471, d1a32f9)

Added

  • Add default "_of_many" to join alias when relation name is table name (#37411)

Changed

  • Allow dababase password to be null in MySqlSchemaState (#37418)
  • Accept any instance of Rule and not just Password in password rule (#37407)

Fixed

  • Fixed aggregates (e.g.: withExists) for one of many relationships (#37413, 498e1a0)

Added

  • Support views in SQLServerGrammar (#37348)
  • Added new assertDispatchedSync methods to BusFake (#37350, 414f382)
  • Added withExists method to QueriesRelationships (#37302)
  • Added ability to define default Password Rule (#37387, f7e5b1c)
  • Allow sending a refresh header with maintenance mode response (#37385)
  • Added loadExists on Model and Eloquent Collection (#37388)
  • Added one-of-many relationship (inner join) (#37362)

Changed

  • Avoid deprecated guzzle code (#37349)
  • Make AssertableJson easier to extend by replacing self with static (#37380)
  • Raise ScheduledBackgroundTaskFinished event to signal when a run in background task finishes (#37377)

Added

  • Added Illuminate\Database\Eloquent\Model::updateQuietly() (#37169)
  • Added Illuminate\Support\Str::replace() (#37186)
  • Added Model key extraction to id on whereKey() and whereKeyNot() (#37184)
  • Added support for Pusher 6.x (#37223, 819db15)
  • Added Illuminate/Foundation/Http/Kernel::getMiddlewarePriority() (#37271)
  • Added cursor pagination (aka keyset pagination) (#37216, #37315)
  • Support mass assignment to SQL Server views (#37307)
  • Added Illuminate/Support/Stringable::unless() (#37326)

Fixed

  • Fixed Illuminate\Database\Query\Builder::offset() with non numbers $value (#37164)
  • Treat missing UUID in failed Queue Job as empty string (failed driver = database) (#37251)
  • Fixed fields not required with required_unless (#37262)
  • SqlServer Grammar: Bugfixes for hasTable and dropIfExists / support for using schema names in these functions (#37280)
  • Fix PostgreSQL dump and load for Windows (#37320)

Changed

  • Add fallback when migration is not anonymous class (#37166)
  • Ably expects clientId as string in Illuminate\Broadcasting\Broadcasters\AblyBroadcaster::validAuthenticationResponse() (#37249)
  • Computing controller middleware before getting excluding middleware (#37259)
  • Update mime extension check (#37332)
  • Added exception to chunkById() when last id cannot be determined (#37294)

Added

  • Added Illuminate\Database\Eloquent\Builder::withOnly() (#37144)
  • Added Illuminate\Bus\PendingBatch::add() (#37151)

Fixed

  • Fixed Cache store with a name other than 'dynamodb' (#37145)

Changed

  • Added has environment variable to startProcess method in ServeCommand (#37142)
  • Some cast to int in Illuminate\Database\Query\Grammars\SqlServerGrammar (09bf145)

Added

  • Added Illuminate\Collections\Collection::sole() method (#37034)
  • Support url for php artisan db command (#37064)
  • Added Illuminate\Foundation\Bus\DispatchesJobs::dispatchSync() (#37063)
  • Added Illuminate\Cookie\CookieJar::expire() (#37072, fa3a14f)
  • Added Illuminate\Database\DatabaseManager::setApplication() (#37068)
  • Added Illuminate\Support\Stringable::whenNotEmpty() (#37080)
  • Added Illuminate\Auth\SessionGuard::attemptWhen() (#37090, e3fcd97)
  • Added password validation rule (#36960)

Fixed

  • Fixed JsonResponse::fromJsonString() double encoding string (#37076)
  • Fallback to primary key if owner key doesnt exist on model at all in MorphTo relation (a011109)
  • Fixes for PHP 8.1 (#37087, #37101)
  • Do not execute beforeSending callbacks twice in HTTP client (#37116)
  • Fixed nullable values for required_if (#37128, 86fd558)

Changed

  • Schedule list timezone command (#37117)

Added

  • Added a wordCount() string helper (#36990)
  • Allow anonymous and class based migration coexisting (#37006)
  • Added Illuminate\Broadcasting\Broadcasters\PusherBroadcaster::setPusher() (#37033)

Fixed

  • Fixed required_if boolean validation (#36969)
  • Correctly merge object payload data in Illuminate\Queue\Queue::createObjectPayload() (#36998)
  • Allow the use of temporary views for Blade testing on Windows machines (#37044)
  • Fixed Http::withBody() not being sent (#37057)

Added

  • Allow to retry jobs by queue name (#36898, f2d9b59, c351a30)
  • Added strings to the DetectsLostConnections.php (4210258)
  • Allow testing of Blade components that return closures (#36919)
  • Added anonymous migrations (#36906)
  • Added Session\Store::missing() method (#36937)
  • Handle concurrent asynchronous requests in the HTTP client (#36948, 245a712)
  • Added tinyText data type to Blueprint and to available database grammars (#36949)
  • Added a method to remove a resolved view engine (#36955)
  • Added Illuminate\Database\Eloquent\Model::getAttributesForInsert() protected method (9a9f59f, 314bf87)

Fixed

  • Fixed clone() on EloquentBuilder (#36924)

Changed

  • Model::delete() throw LogicException not Exception (#36914)
  • Make pagination linkCollection() method public (#36959)

Revert

  • Revert blade changes (#36902)

Fixed

  • Fixed escaping within quoted strings in blade (#36893)

Changed

  • Call transaction callbacks after updating the transaction level (#36890, #36892)
  • Support maxExceptions option on queued listeners (#36891)

Revert

Added

  • Added support useCurrentOnUpdate for MySQL datetime column types (#36817)
  • Added dispatch_sync() helper (#36835)
  • Allowing skipping TransformRequests middlewares via Closure (#36856)
  • Added type option to make controller command (#36853)
  • Added missing return $this to Illuminate\Support\Manager::forgetDrivers() (#36859)
  • Added unfinished option to PruneBatchesCommand (#36877)
  • Added a simple Str::repeat() helper function (#36887)

Fixed

  • Fixed getMultiple and increment / decrement on tagged cache (0d21194)
  • Implement proper return types in cache increment and decrement (#36836)
  • Fixed blade compiler regex issue (#36843, #36848)
  • Added missing temporary_url when creating flysystem (#36860)
  • Fixed PostgreSQL schema:dump when read/write hosts are arrays (#36881)

Changed

  • Improve the exception thrown when JSON encoding response contents fails in Response::setContent() (#36851, #36868)
  • Revert isDownForMaintenance function to use file_exists() (#36889)

Fixed

  • Fixed setting DynamoDB credentials (#36822)

Added

  • Added support of DynamoDB in CI suite (#36749)
  • Support username parameter for predis (#36762)
  • Added missing months() to Wormhole (#36808)

Deprecated

  • Deprecate MocksApplicationServices trait (#36716)

Fixed

  • Fixes missing lazy() and lazyById() on BelongsToMany and HasManyThrough relation query builder (#36758)
  • Ensure the compiled view directory exists (#36772)
  • Fix Artisan test method PendingCommand::doesntExpectOutput() always causing a failed test (#36806)
  • FIXED: The use of whereHasMorph in a whereHas callback generates a wrong sql statements (#36801)

Changed

  • Allow lazy collection to be instantiated from a generator (#36738)
  • Use qualified column names in pivot query (#36720)
  • Octane Prep (#36777)

Refactoring

  • Remove useless loop in Str::remove() (#36722)

Inspiring

  • Added more inspiring quotes (92b7bde)

Added

  • Added WSREP communication link failure for lost connection detection (#36668)
  • Added "except-path" option to route:list command (#36619, 76e11ee)
  • Added Illuminate\Support\Str::remove() and Illuminate\Support\Stringable::remove() methods (#36639, 7b0259f, 20e2470)
  • Added Illuminate\Database\Eloquent\Relations\MorphPivot::getMorphType() (#36640, 7e08215)
  • Added assertion to verify type of key in JSON (#36638)
  • Added prohibited validation rule (#36667)
  • Added strict comparison to distinct validation rule (#36669)
  • Added Illuminate\Translation\FileLoader::getJsonPaths() (#36689)
  • Added Illuminate\Support\Testing\Fakes\EventFake::assertAttached() (#36690)
  • Added lazy() and lazyById() methods to Illuminate\Database\Concerns\BuildsQueries (#36699)

Fixed

  • Fixes the issue using cache:clear with PhpRedis and a clustered Redis instance. (#36665)
  • Fix replacing required :input with null on PHP 8.1 in Illuminate\Validation\Concerns\FormatsMessages::getDisplayableValue() (#36622)
  • Fixed artisan schema:dump error (#36698)

Changed

  • Adjust Fluent Assertions (#36620)
  • Added timestamp reference to schedule:work artisan command output (#36621)
  • Expect custom markdown mailable themes to be in mail subdirectory (#36673)
  • Throw exception when unable to create LockableFile (#36674)

Refactoring

  • Always prefer typesafe string comparisons (#36657)

Added

  • Added Illuminate\Database\Connection::forgetRecordModificationState() (#36617)

Reverted

  • Reverted "Container - detect circular dependencies" (332844e)

Added

  • Added broken pipe exception as lost connection error (#36601)
  • Added missing option to resource (#36562)
  • Introduce StringEncrypter interface (#36578)

Fixed

  • Fixed returns with Mail & Notification components (#36559)
  • Stack driver fix: respect the defined processors in LogManager (#36591)
  • Require the correct password to rehash it when logging out other devices (#36608, 1e61612)

Changed

  • Allow nullable columns for AsArrayObject/AsCollection casts (#36526)
  • Accept callable class for reportable and renderable in exception handler (#36551)
  • Container - detect circular dependencies (dd7274d, a712f72, 6f9bb4c)
  • Initialize CronExpression class using new keyword (#36600)
  • Use different config key for overriding temporary url host in AwsTemporaryUrl method (#36612)

Changed

  • Changed Illuminate\Queue\Middleware\ThrottlesExceptions (b8a70e9)

Added

  • Phpredis lock serialization and compression support (#36412, 10f1a93)
  • Added Fluent JSON Assertions (#36454)
  • Added methods to dump requests of the Laravel HTTP client (#36466)
  • Added ThrottlesExceptions and ThrottlesExceptionsWithRedis job middlewares for unstable services (#36473, 21fee76, 36518, 37e48ba)
  • Added support to Eloquent Collection on Model::destroy() (#36497)
  • Added rest option to php artisan queue:work command (#36521, c6ea49c)
  • Added prohibited_if and prohibited_unless validation rules (#36516)
  • Added class argument to Illuminate\Database\Console\Seeds\SeedCommand (#36513)

Fixed

  • Fix validator treating null as true for (required|exclude)_(if|unless) due to loose in_array() check (#36504)

Changed

  • Delete existing links that are broken in Illuminate\Foundation\Console\StorageLinkCommand (#36470)
  • Use user provided url in AwsTemporaryUrl method (#36480)
  • Allow to override discover events base path (#36515)

Added

  • Added new VendorTagPublished event (#36458)
  • Added new Stringable::test() method (#36462)

Reverted

Changed

  • Make user policy command fix (Windows) (#36464)

Reverted

Fixed

  • Fixed formatWheres() methods in DatabaseRule (#36441)

Added

  • Added new line to DetectsLostConnections (#36373)
  • Added Illuminate\Cache\RateLimiting\Limit::perMinutes() (#36352, 86d0a5c)
  • Make Database Factory macroable (#36380)
  • Added stop on first failure for Validators (39e1f84)
  • Added containsOneItem() method to Collections (#36428, 5b7ffc2)

Changed

  • Respect custom route key with explicit route model binding (#36375)
  • Add Buffered Console Output (#36404)
  • Don't flash 'current_password' input (#36415)
  • Check for context method in Exception Handler (#36424)

Added

  • Support username parameter for predis (#36299)
  • Adds "setUpTestDatabase" support to Parallel Testing (#36301)
  • Added support closures in sequences (3c66f6c)
  • Added gate evaluation event (0c6f5f7)
  • Added a collect method to the HTTP Client response (#36331)
  • Allow Blade's service injection to inject services typed using class name resolution (#36356)

Fixed

  • Fixed: Using withoutMiddleware() and a closure-based middleware on PHP8 throws an exception (#36293)
  • Fixed: The label for page number in pagination links should always be a string (#36292)
  • Clean up custom Queue payload between tests (#36295)
  • Fixed flushDb (cache:clear) for redis clusters (#36281)
  • Fixed retry command for encrypted jobs (#36334, 2fb5e44)
  • Make sure trait_uses_recursive returns an array (#36335)

Changed

  • Make use of specified ownerKey in MorphTo::associate() (#36303)
  • Update pusher deps and update broadcasting (3404185)

Fixed

  • Revert "[8.x] Clean up custom Queue payload between tests" (#36287)

Added

  • Allow users to specify configuration keys to be used for primitive binding (#36241)
  • ArrayObject + Collection Custom Casts (#36245)
  • Add view path method (af3a651)

Changed

  • Allow using dot syntax for $responseKey (#36196)
  • Full trace for http errors (#36219)

Fixed

  • Fix undefined property with sole query (#36216)
  • Resolving non-instantiables corrupts Container::$with (#36212)
  • Fix attribute nesting on anonymous components (#36240)
  • Ensure $prefix is a string (#36254)
  • Add missing import (#34569)
  • Align PHP 8.1 behavior of e() (#36262)
  • Ensure null values won't break on PHP 8.1 (#36264)
  • Handle directive $value as a string (#36260)
  • Use explicit flag as default sorting (#36261)
  • Fix middleware group display (d9e28dc)

Added

  • Conditionally merge classes into a Blade Component attribute bag (#36131)
  • Allow adding multiple columns after a column (#36145)
  • Add query builder chunkMap method (#36193, 048ac6d)

Changed

  • Update CallQueuedClosure to catch Throwable/Error (#36159)
  • Allow components to use custom attribute bag (#36186)

Fixed

  • Set process timeout to null for load mysql schema into database (#36126)
  • Don't pluralise string if string ends with none alphanumeric character (#36137)
  • Add query log methods to the DB facade (#36177)
  • Add commonmark as recommended package for Illuminate\Support (#36171)
  • Fix Eager loading partially nullable morphTo relations (#36129)
  • Make height of image working with yahoo (#36201)
  • Make sole() relationship friendly (#36200)
  • Make layout in mail responsive in Gmail app (#36198)
  • Fixes parallel testing when a database is configured using URLs (#36204)

Fixed

  • Fixed merge conflict in src/Illuminate/Foundation/Console/stubs/exception-render-report.stub (#36123)

Added

  • Allow to fillJsonAttribute with encrypted field (#36063)
  • Added Route::missing() (#36035)
  • Added Illuminate\Support\Str::markdown() and Illuminate\Support\Stringable::markdown() (#36071)
  • Support retrieving URL for Sftp adapter (#36120)

Fixed

  • Fixed issues with dumping PostgreSQL databases that contain multiple schemata (#36046)
  • Fixes job batch serialization for PostgreSQL (#36081)
  • Fixed Illuminate\View\ViewException::report() (#36110)

Changed

  • Typecast page number as integer in Illuminate\Pagination\AbstractPaginator::resolveCurrentPage() (#36055)
  • Changed Illuminate\Testing\ParallelRunner::createApplication() (1c11b78)

Added

  • Added Stringable::pipe & make Stringable tappable (#36017)
  • Accept a command in object form in Bus::assertChained (#36031)
  • Adds parallel testing (#36034)
  • Make Listeners, Mailables, and Notifications accept ShouldBeEncrypted (#36036)
  • Support JSON encoding Stringable (#36012)
  • Support for escaping bound attributes (#36042)
  • Added Illuminate\Foundation\Application::useLangPath() (#36044)

Changed

  • Pipe through new render and report exception methods (#36032)

Fixed

  • Fixed issue with dumping schema from a postgres database using no default schema (#35966, 7be50a5)
  • Fixed worker --delay option (#35991)
  • Added support of PHP 7.3 to RateLimiter middleware(queue) serialization (#35986)
  • Fixed Illuminate\Foundation\Http\Middleware\TransformsRequest::cleanArray() (#36002)
  • ModelNotFoundException: ensure that the model class name is properly set (#36011)
  • Fixed bus fake (e720279)

Added

Fixed

  • Fixed type error in Illuminate\Http\Concerns\InteractsWithContentTypes::isJson() (#35956)
  • Fixed Illuminate\Collections\Collection::sortByMany() (#35950)
  • Fixed Limit expected bindings (#35972, 006873d)
  • Fixed serialization of rate limited with redis middleware (#35971)

Fixed

  • Fixed empty html mail (#35941)

Added

  • Added Illuminate\Database\Concerns\BuildsQueries::sole() (#35869, 29c7dae, #35908, #35902, #35912)
  • Added default parameter to throw_if / throw_unless (#35890)
  • Added validation support for TeamSpeak3 URI scheme (#35933)

Fixed

  • Fixed extra space on blade class components that are inline (#35874)
  • Fixed serialization of rate limited middleware (f3d4dcb, #35916)

Changed

  • Allow a specific seeder to be used in tests in Illuminate\Foundation\Testing\RefreshDatabase::migrateFreshUsing() (#35864)
  • Pass $key to closure in Collection and LazyCollection's reduce method as well (#35878)

Fixed

  • Limit expected bindings (#35865)

Added

  • Added new lines to DetectsLostConnections (#35752, #35790)
  • Added Illuminate\Support\Testing\Fakes\EventFake::assertNothingDispatched() (#35835)
  • Added reduce with keys to collections and lazy collections (#35839)

Fixed

  • Fixed error from missing null check on PHP 8 in Illuminate\Validation\Concerns\ValidatesAttributes::validateJson() (#35797)
  • Fix bug with RetryCommand (4415b94, #35828)
  • Fixed Illuminate\Testing\PendingCommand::expectsTable() (#35820)
  • Fixed morphTo() attempting to map an empty string morph type to an instance (#35824)

Changes

  • Update Illuminate\Http\Resources\CollectsResources::collects() (1fa20dd)
  • "null" constraint prevents aliasing SQLite ROWID (#35792)
  • Allow strings to be passed to the report function (#35803)

Added

  • Added command to clean batches table (#35694, 33f5ac6)
  • Added item to list of causedByLostConnection errors (#35744)
  • Make it possible to set Postmark Message Stream ID (#35755)

Fixed

  • Fixed php artisan db command for the Postgres CLI (#35725)
  • Fixed OPTIONS method bug with use same path and diff domain when cache route (#35714)

Changed

  • Ensure DBAL custom type doesn't exists in Illuminate\Database\DatabaseServiceProvider::registerDoctrineTypes() (#35704)
  • Added missing dispatchAfterCommit to DatabaseQueue (#35715)
  • Set chain queue when inside a batch (#35746)
  • Give a more meaningul message when route parameters are missing (#35706)
  • Added table prefix to Illuminate\Database\Console\DumpCommand::schemaState() (4ffe40f)
  • Refresh the retryUntil time on job retry (#35780, 45eb7a7)

Revert

Added

  • Added Illuminate\Database\DBAL\TimestampType (a5761d4, cff3705 382445f, 810047e)
  • Added ability to specify a separate lock connection (#35621, 3d95235)
  • Added Illuminate\Database\Eloquent\Relations\Concerns\InteractsWithPivotTable::syncWithPivotValues() (#35644, 49b3ce0)

Fixed

  • Fixed Illuminate\Validation\Concerns\ValidatesAttributes::validateJson() for PHP8 (#35646)
  • Fixed assertCookieExpired() and assertCookieNotExpired() methods in Illuminate\Testing\TestResponse (#35637)
  • Fixed: Account for a numerical array of views in Mailable::renderForAssertions() (#35662)
  • Catch DecryptException with invalid X-XSRF-TOKEN in Illuminate\Foundation\Http\Middleware\VerifyCsrfToken (#35671)

Changed

  • Check configuration in Illuminate\Foundation\Console\Kernel::scheduleCache() (a253d0e)
  • Modify Model::mergeCasts to return $this (#35683)
  • Clear a cached user in RequestGuard if a request is changed (#35692)

Added

Fixed

  • Handle Throwable exceptions on Illuminate\Redis\Limiters\ConcurrencyLimiter::block() (#35546)
  • Fixed PDO passing in SqlServerDriver (#35564)
  • When following redirects, terminate each test request in proper order (#35604)

Fixed

  • Bumped minimum Symfony version (#35535)
  • Fixed passing model instances to factories (#35541)

Added

  • Added Illuminate\Http\Client\Factory::assertSentInOrder() (#35525, d257ce2, 2fd1411)
  • Added Illuminate\Http\Client\Response::handlerStats() (#35520)
  • Added support for attaching existing model instances in factories (#35494)
  • Added assertChained() and assertDispatchedWithoutChain() methods to Illuminate\Support\Testing\Fakes\BusFake class (#35523, f1b8cac, 236c67d)
  • Allow testing of html and plain text bodies right off mailables (afb858a, b7391e4)

Fixed

  • Fixed Application flush method (#35482)
  • Fixed mime validation for jpeg files (#35518)

Revert

Added

  • Added Illuminate\Database\Eloquent\Relations\BelongsToMany::orderByPivot() (#35455, 6f83a50)

Fixed

  • Fixed an issue with the database queue driver (#35449)

Added

Fixed

  • Fix issue with polymorphic morphMaps with literal 0 (#35364)
  • Fixed Self-Relation issue in withAggregate method (#35392, aec5cca, #35394)
  • Fixed Use PHP_EOL instead of \n in PendingCommand (#35409)
  • Fixed validating image/jpeg images after Symfony/Mime update (#35419)
  • Fixed fail to morph with custom casting to objects (#35420)
  • Fixed Illuminate\Collections\Collection::sortBy() (307f6fb)
  • Don't overwrite minute and hour when specifying a time with twiceMonthly() (#35436)

Changed

  • Make DownCommand retryAfter available to prerendered view (#35357, b1ee97e)
  • Set default value on cloud driver (0bb7fe4)
  • Update Tailwind pagination focus styles (#35365)
  • Redis: allow to pass connection name (#35402)
  • Change Wormhole to use the Date Factory (#35421)

Fixed

  • Fixed reflection exception in Illuminate\Routing\Router::gatherRouteMiddleware() (c6e8357)

Added

  • Added Illuminate\Console\Concerns\InteractsWithIO::withProgressBar() (4e52a60, 169fd2b)
  • Added Illuminate\Console\Concerns\CallsCommands::callSilently() as alias for callSilent() (7f3101b, 0294433)
  • Added option to release unique job locks before processing (#35255, b53f13e)
  • Added ably broadcaster (e0f3f8e, 6381aa9)
  • Added ability to define table name as default morph type (#35257)
  • Allow overriding the MySQL server version for database queue driver (#35263)
  • Added Illuminate\Foundation\Testing\Wormhole::back() (#35261)
  • Support delaying notifications per channel (#35273)
  • Allow sorting on multiple criteria (#35277, 53eb307)
  • Added Illuminate/Database/Console/DbCommand.php command (#35304, b559b3e)
  • Added Collections splitIn methods (#35295)

Fixed

  • Fixed rendering of notifications with config custom theme (325a335)
  • Fixing BroadcastException message in PusherBroadcaster@broadcast (#35290)
  • Fixed generic DetectsLostConnection string (#35323)
  • Fixed SQL Server command generation (#35317)
  • Fixed route model binding on cached closure routes (eb3e262)

Changed

  • Disable CSRF on broadcast route (acb4b77)
  • Easily set a null cache driver (#35262)
  • Updated aws/aws-sdk-php suggest to ^3.155 (#35267)
  • Ensure ShouldBeUniqueUntilProcessing job lock is released once (#35270)
  • Rename qualifyColumn to qualifyPivotColumn in BelongsToMany & MorphToMany (#35276)
  • Check if AsPivot trait is used instead of Pivot Model in Illuminate\Database\Eloquent\Relations\BelongsToMany (#35271)
  • Avoid no-op database query in Model::destroy() with empty ids (#35294)
  • Use --no-owner and --no-acl with pg_restore (#35309)

Added

  • Added lock support for file and null cache drivers (#35139, a345185)
  • Added a doesntExpectOutput method for console command testing (#35160, c90fc5f)
  • Added support of MorphTo relationship eager loading constraints (#35190)
  • Added Illuminate\Http\ResponseTrait::withoutCookie() (e9483c4)
  • Use dynamic app namespace in Eloquent Factory instead of App\ string (#35204, 4885bd2)
  • Added read / unread scopes to database notifications (#35215)
  • Added classBasename() method to Stringable (#35219)
  • Added before resolving callbacks to container (#35228)
  • Adds the possibility of testing file upload content (#35231)
  • Added lost connection messages for MySQL persistent connections (#35224)
  • Added Support DBAL v3.0 (#35236)

Fixed

  • Update MySqlSchemaState.php to support MariaDB dump (#35184)
  • Fixed pivot and morphpivot fresh and refresh methods (#35193)
  • Fixed pivot restoration (#35218)

Changed

  • Updated EmailVerificationRequest.php to check if user is not already verified (#35174)
  • Make Validator::parseNamedParameters() public (#35183)
  • Ignore max attempts if retryUntil is set in queue:work (#35214)
  • Explode string channels on Illuminate/Log/LogManager::createStackDriver() (e5b86f2)

Added

  • Added ability to dispatch unique jobs (#35042, 2123e60)
  • Added Model::encryptUsing() (#35080)
  • Added support to MySQL dump and import using socket (#35083, c43054b)
  • Allow custom broadcastWith in notification broadcast channel (#35142)
  • Added Illuminate\Routing\CreatesRegularExpressionRouteConstraints::whereAlphaNumeric() (#35154)

Fixed

  • Fixed typo in make:seeder command name inside ModelMakeCommand (#35107)
  • Fix SQL Server grammar for upsert (missing semicolon) (#35112)
  • Respect migration table name in config when dumping schema (110eb15)
  • Respect theme when previewing notification (ed4411d)
  • Fix appendable attributes in Blade components (#35131)
  • Remove decrypting array cookies from cookie decrypting (#35130)
  • Turn the eloquent collection into a base collection if mapWithKeys loses models (#35129)

Changed

  • Move dispatching of DatabaseRefreshed event to fire before seeders are run (#35091)
  • Handle returning false from reportable callback (55f0b5e)
  • Update Illuminate\Database\Schema\Grammars\MySqlGrammar::typeTimestamp() (#35143)
  • Remove expectedTables after converting to expectedOutput in PendingCommand (#35163)
  • Change SQLite schema command environment variables to work on Windows (#35164)

Added

  • Added loadMax() | loadMin() | loadSum() | loadAvg() methods to Illuminate\Database\Eloquent\Collection. Added loadMax() | loadMin() | loadSum() | loadAvg() | loadMorphMax() | loadMorphMin() | loadMorphSum() | loadMorphAvg() methods to Illuminate\Database\Eloquent\Model (#35029)
  • Modify Illuminate\Database\Eloquent\Concerns\QueriesRelationships::has() method to support MorphTo relations (#35050)
  • Added Illuminate\Support\Stringable::chunk() (#35038)

Fixed

  • Fixed a few issues in Illuminate\Database\Eloquent\Concerns\QueriesRelationships::withAggregate() (#35061, #35063)

Changed

  • Set chain queue | connection | delay only when explicitly configured in (#35047)

Refactoring

  • Remove redundant unreachable return statements in some places (#35053)

Fixed

  • Fixed Illuminate\Database\Eloquent\Concerns\QueriesRelationships::withAggregate() (20b0c6e)

Fixed

Fixed

  • Fixed alias usage in Eloquent (6091048)
  • Fixed Illuminate\Support\Reflector::isCallable() (a90f344)

Added

  • Added ability to create observers with custom path via make:observer command (#34911)
  • Added Illuminate\Database\Eloquent\Factories\Factory::lazy() (#34923)
  • Added ability to make cast with custom stub file via make:cast command (#34930)
  • ADDED: Custom casts can implement increment/decrement logic (#34964)
  • Added encrypted Eloquent cast (#34937, #34948)
  • Added DatabaseRefreshed event to be emitted after database refreshed (#34952, f31bfe2)
  • Added withMax()|withMin()|withSum()|withAvg() methods to Illuminate/Database/Eloquent/Concerns/QueriesRelationships (#34965, f4e4d95, #35004)
  • Added explain() to Query\Builder and Eloquent\Builder (#34969)
  • Make multiple_of validation rule handle non-integer values (#34971)
  • Added setKeysForSelectQuery method and use it when refreshing model data in Models (#34974)
  • Full PHP 8.0 Support (#33388)
  • Added Illuminate\Support\Reflector::isCallable() (#34994, 8c16891, 31917ab, 11cfa4d, #34999)
  • Added route regex registration methods (#34997, 3d405cc, c2df0d5)
  • Added dontRelease option to RateLimited and RateLimitedWithRedis job middleware (#35010)

Fixed

  • Fixed check of file path in Illuminate\Database\Schema\PostgresSchemaState::load() (268237f)
  • Fixed: PhpRedis (v5.3.2) cluster - set default connection context to null (#34935)
  • Fixed Eloquent Model loadMorph and loadMorphCount methods (#34972)
  • Fixed ambigious column on many to many with select load (5007986)
  • Fixed Postgres Dump (#35018)

Changed

  • Changed make:factory command (#34947, 4f38176)
  • Make assertSee, assertSeeText, assertDontSee and assertDontSeeText accept an array (#34982, 2b98bcc)

Revert

Fixed

Added

  • Added job middleware to prevent overlapping jobs (#34794, eed05b4)
  • Bring Rate Limiters to Jobs (#34829, ae00294)
  • Added multiple_of custom replacer in validator (#34858)
  • Preserve eloquent collection type after calling ->fresh() (#34848)
  • Provisional support for PHP 8.0 for 6.x (Changed some code in 8.x) (#34884, 28bb76e)

Fixed

  • Fixed fresh() and refresh() on pivots and morph pivots (#34836)
  • Fixed config batching typo (#34852)
  • Fixed Illuminate\Queue\Console\RetryBatchCommand for un-found batch id (#34878)

Changed

  • Change loadRoutesFrom() to accept group $attributes (#34866)

Added

  • Allow for chains to be added to batches (#34612, 7b4a9ec)
  • Added is() method to 1-1 relations for model comparison (#34693, 7ba2577)
  • Added upsert() to Eloquent and Base Query Builders (#34698, #34712, 58a0e1b)
  • Support psql and pg_restore commands in schema load (#34711)
  • Added Illuminate\Database\Schema\Builder::dropColumns() method on the schema class (#34720)
  • Added yearlyOn() method to scheduler (#34728)
  • Added restrictOnDelete() method to ForeignKeyDefinition class (#34752)
  • Added newLine() method to InteractsWithIO trait (#34754)
  • Added isNotEmpty() method to HtmlString (#34774)
  • Added delay() to PendingChain (#34789)
  • Added "multiple_of" validation rule (#34788)
  • Added custom methods proxy support for jobs dispatch() (#34781)
  • Added QueryBuilder::clone() (#34780)
  • Support bus chain on fake (a952ac24)
  • Added missing force flag to queue:clear command (#34809)
  • Added dropConstrainedForeignId() to `Blueprint (#34806)
  • Implement supportsTags() on the Cache Repository (#34820)
  • Added canAny to user model (#34815)
  • Added when() and unless() methods to MailMessage (#34814)

Fixed

  • Fixed collection wrapping in BelongsToManyRelationship (9245807)
  • Fixed LengthAwarePaginator translations issue (#34714)

Changed

  • Improve schedule:work command (#34736, bbddba2)
  • Guard against invalid guard in make:policy (#34792)
  • Fixed router inconsistency for namespaced route groups (#34793)

Added

  • Added support times() with raw() from Illuminate\Database\Eloquent\Factories\Factory (#34667)
  • Added Illuminate\Pagination\AbstractPaginator::through() (#34657)
  • Added extendsFirst() method similar to includesFirst() to view (#34648)
  • Allowed Illuminate\Http\Client\PendingRequest::attach() method to accept many files (#34697, 1bb7ad6)
  • Allowed serializing custom casts when converting a model to an array (#34702)

Fixed

  • Added missed RESET_THROTTLED constant to Password Facade (#34641)
  • Fixed queue clearing when blocking (#34659)
  • Fixed missing import in TestView.php (#34677)
  • Use getRealPath to ensure console command class names are generated correctly in Illuminate\Foundation\Console\Kernel (#34653)
  • Added pg_dump --no-owner and --no-acl to avoid owner/permission issues in Illuminate\Database\Schema\PostgresSchemaState::baseDumpCommand() (#34689)
  • Fixed queue:failed command when Class not exists (#34696)

Performance

  • Increase performance of Str::before() by over 60% (#34642)

Added

  • Proxy URL Generation in VerifyEmail (#34572)
  • Added Illuminate\Collections\Traits\EnumeratesValues::pipeInto() (#34600)
  • Added Illuminate\Http\Client\PendingRequest::withUserAgent() (#34611)
  • Added schedule:work command (#34618)
  • Added support for appendable (prepends) component attributes (09b887b, 53fbc9f)

Fixed

  • Fixed Illuminate\Http\Client\Response::throw() (#34597)
  • Fixed breaking change in migrate command (b2a3641)

Changed

  • Changing the dump and restore method for a PostgreSQL database (#34293)

Fixed

Added

  • Added tg:// protocol in "url" validation rule (#34464)
  • Allow dynamic factory methods to obey newFactory method on model (#34492, 4708e9e)
  • Added no-reload option to serve command (9cc2622)
  • Added perHour() and perDay() methods to Illuminate\Cache\RateLimiting\Limit (#34530)
  • Added Illuminate\Http\Client\Response::onError() (#34558, d034e2c)
  • Added X-Message-ID to Mailgun and Ses Transport (#34567)

Fixed

  • Fixed incompatibility with Lumen route function in Illuminate\Session\Middleware\StartSession (#34491)
  • Fixed: Eager loading MorphTo relationship does not honor each models $keyType (#34531, c3f44c7)
  • Fixed translation label ("Pagination Navigation") for the Tailwind blade (#34568)
  • Fixed save keys on increment / decrement in Model (77db028)

Changed

  • Allow modifiers in date format in Model (#34507)
  • Allow for dynamic calls of anonymous component with varied attributes (#34498)
  • Cast Expression as string so it can be encoded (#34569)

Added

  • Added Illuminate\Collections\LazyCollection::takeUntilTimeout() (0aabf24)
  • Added --schema-path option to migrate:fresh command (#34419)

Fixed

  • Fixed problems with dots in validator (#34355)
  • Maintenance mode: Fix empty Retry-After header (#34412)
  • Fixed bug with error handling in closure scheduled tasks (#34420)
  • Don't double escape on ComponentTagCompiler.php (12ba0d9)
  • Fixed mysqldump: unknown variable 'column-statistics=0 for MariaDB schema dump (#34442)

Added

  • Allow clearing an SQS queue by queue:clear command (#34383, de811ea)
  • Added Illuminate\Foundation\Auth\EmailVerificationRequest (4bde31b)
  • Auto handle Jsonable values passed to castAsJson() (#34392)
  • Added crossJoinSub() method to the query builder (#34400)
  • Added Illuminate\Session\Store::passwordConfirmed() (fb3f45a)

Changed

  • Check for view existence first in Illuminate\Mail\Markdown::render() (5f78c90)
  • Guess the model name when using the make:factory command (#34373)

Added

Fixed

  • Fixed minimal.blade.php (#34379)
  • Don't double escape on ComponentTagCompiler.php (ec75487)
  • Fixed dots in attribute names in DynamicComponent (2d1d962)

Changed

  • Show warning when view exists when using artisan make:component (#34376, 0ce75e0)
  • Call the booting/booted callbacks from the container (#34370)

Added

  • Added Illuminate\Foundation\Testing\Concerns\InteractsWithDatabase::castAsJson() (#34302)
  • Handle array hosts in Illuminate\Database\Schema\MySqlSchemaState (0920c23)
  • Added Illuminate\Pipeline\Pipeline::setContainer() (#34343)
  • Allow including a closure in a queued batch (#34333)

Fixed

Changed

  • Bumped minimum vlucas/phpdotenv version (#34336)
  • Pass an instance of the job to queued closures (#34350)

Added

  • Added Illuminate\Database\Eloquent\Factories\HasFactory::newFactory() (4a95372, a2cea84)

Fixed

  • Do not used now helper in Illuminate/Cache/DatabaseLock::expiresAt() (#34262)
  • Change placeholder in Illuminate\Database\Schema\MySqlSchemaState::load() (#34303)
  • Fixed bug in dynamic attributes Illuminate\View\ComponentAttributeBag::setAttributes() (93f4613)
  • Fixed Illuminate\View\ComponentAttributeBag::whereDoesntStartWith() (#34329)
  • Fixed Illuminate\Routing\Middleware\ThrottleRequests::handleRequestUsingNamedLimiter() (#34325)

Changed

  • Create Faker when a Factory is created (#34298)

Added

  • Added Illuminate\Database\Eloquent\Factories\Factory::raw() (#34278)
  • Added Illuminate\Database\Eloquent\Factories\Factory::createMany() (#34285, 69072c7)
  • Added the Countable interface to AssertableJsonString (#34284)

Fixed

  • Fixed the new maintenance mode (#34264)

Changed

  • Optimize command can also cache view (#34287)

Changed

  • Allow Illuminate\Collections\Collection::implode() when instance of Stringable (#34271)

Fixed

  • Fixed DatabaseUuidFailedJobProvider::find() job record structure (#34251)
  • Cast linkCollection to array in JSON pagination responses (#34245)
  • Change the placeholder of schema dump according to symfony placeholder in MySqlSchemaState::dump() (#34261)
  • Fixed problems with dots in validator (8723739)

Added

  • Added links property to JSON pagination responses (13751a1)

Fixed

  • Fixed bugs with factory creation in FactoryMakeCommand (c7186e0)

Revert

Changed

  • Update Illuminate\Database\Schema\MySqlSchemaState::executeDumpProcess() (#34233)

Added

  • Support array syntax in Illuminate\Routing\Route::uses() (f80ba11)

Fixed

  • Fixed BatchRepositoryFake TypeError (#34225)
  • Fixed dynamic component bug (4b1e317)

Changed

  • Give shadow a rounded edge to match content in tailwind.blade.php (#34198)
  • Pass the request to the renderable callback in Illuminate\Foundation\Exceptions\Handler::render() (#34200)
  • Update Illuminate\Database\Schema\MySqlSchemaState (d67be130, c87794f)
  • Respect local env in Illuminate\Foundation\Console\ServeCommand::startProcess() (75e792d)

Check the upgrade guide in the Official Laravel Upgrade Documentation. Also you can see some release notes in the Official Laravel Release Documentation.