Laravel Framework v10

https://github.com/laravel/framework

Added

  • Added Illuminate/Http/Client/PendingRequest::replaceHeaders() (#47335)
  • Added Illuminate/Notifications/Messages/MailMessage::attachMany() (#47345)

Reverted

  • Revert "[10.x] Remove session on authenticatable deletion v2" (#47354)

Fixed

  • Fixes usage of Redis::many() with empty array (#47307)
  • Fix mapped renderable exception handling (#47347)
  • Avoid duplicates in fillable/guarded on merge in Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php (#47351)

Changed

  • Update Kernel::load() to use same classFromFile logic as events (#47327)
  • Remove redundant 'setAccessible' methods (#47348)

v10.13.1 (2023-06-02)

Added

  • Added Illuminate\Contracts\Database\Query\ConditionExpression interface and functional for this (#47210)
  • Added return type for Illuminate/Notifications/Channels/MailChannel::send() (#47310)

Reverted

  • Revert "[10.x] Fix inconsistentcy between report and render methods" (#47326)

Changed

  • Display queue runtime in human readable format (#47227)

Added

  • Added Illuminate/Hashing/HashManager::isHashed() (#47197)
  • Escaping functionality within the Grammar (#46558)
  • Provide testing hooks in Illuminate/Support/Sleep.php (#47228)
  • Added missing methods to AssertsStatusCodes (#47277)
  • Wrap response preparation in events (#47229)

Fixed

  • Fixed bug when function wrapped around definition of related factory (#47168)
  • Fixed inconsistentcy between report and render methods (#47201)
  • Fixes Model::isDirty() when AsCollection or AsEncryptedCollection have arguments (#47235)
  • Fixed escaped String for JSON_CONTAINS (#47244)
  • Fixes missing output on ProcessFailedException exception (#47285)

Changed

  • Remove useless else statements (#47186)
  • RedisStore improvement - don't open transaction unless all values are serialaizable (#47193)
  • Use carbon::now() to get current timestamp in takeUntilTimeout lazycollection-method (#47200)
  • Avoid duplicates in visible/hidden on merge (#47264)
  • Add a missing semicolon to CompilesClasses (#47280)
  • Send along value to InvalidPayloadException (#47223)

Added

  • Added Illuminate/Queue/Events/JobTimedOut.php (#47068)
  • Added when() and unless() methods to Illuminate/Support/Sleep (#47114)
  • Adds inline attachments support for markdown mailables (#47140)
  • Added Illuminate/Testing/Concerns/AssertsStatusCodes::assertMethodNotAllowed() (#47169)
  • Added forceCreateQuietly method (#47162)
  • Added parameters to timezone validation rule (#47171)

Fixed

  • Fixes singleton and api singletons creatable|destryoable|only|except combinations (#47098)
  • Don't use empty key or secret for DynamoDBClient (#47144)

Changed

  • Remove session on authenticatable deletion (#47141)
  • Added error handling and ensure re-enabling of foreign key constraints in Illuminate/Database/Schema/Builder::withoutForeignKeyConstraints() (#47182)

Refactoring

  • Remove useless else statements (#47161)

Added

  • Added the ability to extend the generic types for DatabaseNotificationCollection (#47048)
  • Added /Illuminate/Support/Carbon::createFromId() (#47046)
  • Added Name attributes on slots (#47065)
  • Added Precognition-Success header (#47081)
  • Added Macroable trait to Sleep class (#47099)

Fixed

  • Fixed Illuminate/Database/Console/ShowModelCommand::getPolicy() (#47043)

Changed

  • Remove return from channelRoutes method (#47059)
  • Bug in Illuminate/Database/Migrations/Migrator::reset() with string path (#47047)
  • Unify logic around cursor paginate (#47094)
  • Clears resolved instance of Vite when using withoutVite (#47091)
  • Remove workarounds for old Guzzle versions (#47084)

Added

  • Added /Illuminate/Collections/Arr::mapWithKeys() (#47000)
  • Added dd and dump methods to Illuminate/Support/Carbon.php (#47002)
  • Added Illuminate/Queue/Failed/FileFailedJobProvider (#47007)
  • Added arguments to the signed middleware to ignore properties (#46987)

Fixed

  • Added keys length check to prevent mget error in Illuminate/Cache/RedisStore::many() (#46998)
  • 'hashed' cast - do not rehash already hashed value (#47029)

Changed

  • Used Carbon::now() instead of now() (#47017)
  • Use file locks when writing failed jobs to disk (b822d28)
  • Raise visibility of Mailable prepareMailableForDelivery() (#47031)

Added

  • Added $isolated and isolatedExitCode properties to Illuminate/Console/Command (#46925)
  • Added ability to restore/set Global Scopes (#46922)
  • Added Illuminate/Collections/Arr::sortRecursiveDesc() (#46945)
  • Added Illuminate/Support/Sleep (#46904, #46963)
  • Added Illuminate/Database/Eloquent/Concerns/HasAttributes::castAttributeAsHashedString() ([#46947]https://github.com/laravel/framework/pull/46947)
  • Added url support for mail config (#46964)

Fixed

  • Fixed replace missing_unless (89ac58a)
  • Gracefully handle invalid code points in e() (#46914)
  • HasCasts returning false instead of true (#46992)

Changed

  • Use method on UploadedFile to validate image dimensions (#46912)
  • Expose Js::json() helper (#46935)
  • Respect parents on middleware priority (#46972)
  • Do reconnect when redis throws connection lost error (#46989)
  • Throw timeoutException instead of maxAttemptsExceededException when a job times out (#46968)

Added

  • Add new HTTP status assertions (#46841)
  • Allow pruning all cancelled and unfinished queue batches (#46833)
  • Added IGNITION_LOCAL_SITES_PATH to $passthroughVariables in ServeCommand.php (#46857)
  • Added named static methods for middleware (#46362)

Fixed

  • Fix date_format rule throw ValueError (#46824)

Changed

  • Allow separate directory for locks on filestore (#46811)
  • Allow to whereMorphedTo work with null model (#46821)
  • Use pivot model fromDateTime instead of assuming Carbon in Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable::addTimestampsToAttachment() (#46822)
  • Make rules method in FormRequest optional (#46846)
  • Throw LogicException when calling FileFactory@image() if mimetype is not supported (#46859)
  • Improve job release method to accept date instance (#46854)
  • Use foreignUlid if model uses HasUlids trait when call foreignIdFor (#46876)

Added

  • Added syntax sugar to the Process::pipe method (#46745)
  • Allow specifying index name when calling ForeignIdColumnDefinition@constrained() (#46746)
  • Allow to customise redirect URL in AuthenticateSession Middleware (#46752)
  • Added Class based after validation rules (#46757)
  • Added max exceptions to broadcast event (#46800)

Fixed

  • Fixed compiled view file ends with .php (#46755)
  • Fix validation rule names (#46768)
  • Fixed validateDecimal() (#46809)

Changed

  • Add headers to exception in Illuminate/Foundation/Application::abort() (#46780)
  • Minor skeleton slimming (framework edition) (#46786)
  • Release lock for job implementing ShouldBeUnique that is dispatched afterResponse() (#46806)

Changed

  • Changed Illuminate/Process/Factory::pipe() method. It will be run pipes immediately (e34ab39)

Added

  • Allow Illuminate/Foundation/Testing/WithFaker to be used when app is not bound (#46529)
  • Allow Event::assertListening to check for invokable event listeners (#46683)
  • Added Illuminate/Process/Factory::pipe() (#46527)
  • Added Illuminate/Validation/Validator::setValue (#46716)

Fixed

  • PHP 8.0 fix for Closure jobs (#46505)
  • Fix preg_split error when there is a slash in the attribute in Illuminate/Validation/ValidationData (#46549)
  • Fixed Cache::spy incompatibility with Cache::get (#46689)
  • server command: Fixed server Closing output on invalid $requestPort (#46726)
  • Fix nested join when not JoinClause instance (#46712)
  • Fix query builder whereBetween method with carbon date period (#46720)

Changed

  • Removes unnecessary parameters in creatable() / destroyable() methods in Illuminate/Routing/PendingSingletonResourceRegistration (#46677)
  • Return non-zero exit code for uncaught exceptions (#46541)

Added

  • Added trait Illuminate/Foundation/Testing/WithConsoleEvents (#46694)

Changed

  • Added missing ignored methods to Illuminate/View/Component (#46692)
  • console.stub: remove void return type from handle (#46697)

Added

  • Added ability to set a custom class for the AsCollection and AsEncryptedCollection casts (#46619)

Changed

  • Set container instance on session manager (#46621)
  • Added empty string definition to Str::squish function (#46660)
  • Allow $sleepMilliseconds parameter receive a Closure in retry method from PendingRequest (#46653)
  • Support contextual binding on first class callables (de8d515, e511a3b)

Added

  • Added methods to determine if API resource has pivot loaded (#46555)
  • Added caseSensitive flag to Stringable replace function (#46578)
  • Allow insert..select (insertUsing()) to have empty $columns (#46605, 399bff9)
  • Added Illuminate/Database/Connection::selectResultSets() (#46592)

Changed

  • Make sure pivot model has previously defined values (#46559)
  • Move SetUniqueIds to run before the creating event (#46622)

Added

  • Added Illuminate/Cache/CacheManager::setApplication() (#46594)

Fixed

  • Fix infinite loading on batches list on Horizon (#46536)
  • Fix whereNull queries with raw expressions for the MySql grammar (#46538)
  • Fix getDirty method when using AsEnumArrayObject / AsEnumCollection (#46561)

Changed

  • Skip Illuminate/Support/Reflector::isParameterBackedEnumWithStringBackingType for non ReflectionNamedType (#46511)
  • Replace Deprecated DBAL Comparator creation with schema aware Comparator (#46517)
  • Added Storage::json() method to read and decode a json file (#46548)
  • Force cast json decoded failed_job_ids to array in DatabaseBatchRepository (#46581)
  • Handle empty arrays for DynamoDbStore multi-key operations (#46579)
  • Stop adding constraints twice on *Many to *One relationships via one() (#46575)
  • allow override of the Builder paginate() total (#46415)
  • Add a possibility to set a custom on_stats function for the Http Facade (#46569)

Changed

  • Move Symfony events dispatcher registration to Console\Kernel (#46508)

Added

  • Added Illuminate/Testing/Concerns/AssertsStatusCodes::assertUnsupportedMediaType() (#46426)
  • Added curl_error_code: 77 to DetectsLostConnections (#46429)
  • Allow for converting a HasMany to HasOne && MorphMany to MorphOne (#46443)
  • Add option to create macroable method for paginationInformation (#46461)
  • Added Illuminate/Filesystem/Filesystem::json() (#46481)

Fixed

  • Fix parsed input arguments for command events using dispatcher rerouting (#46442)
  • Fix enums uses with optional implicit parameters (#46483)
  • Fix deprecations for embedded images in symfony mailer (#46488)

Changed

  • Added alternative database port in Postgres DSN (#46403)
  • Allow calling getControllerClass on closure-based routes (#46411)
  • Remove obsolete method_exists(ReflectionClass::class, 'isEnum') call (#46445)
  • Convert eloquent builder to base builder in whereExists (#46460)
  • Refactor shared static methodExcludedByOptions method to trait (#46498)

Reverted

Fixed

  • Fixes Expression no longer implements Stringable (#46395)

Added

  • Adding Pipeline Facade (#46271)
  • Add Support for SaveQuietly and Upsert with UUID/ULID Primary Keys (#46161)
  • Add charAt method to both Str and Stringable (#46349, dfb59bc2)
  • Adds Countable to the InvokedProcessPool class (#46346)
  • Add processors to logging (placeholders) (#46344)

Fixed

  • Fixed Illuminate/Mail/Mailable::buildMarkdownView() (791f8ea7)
  • FIX on CanBeOneOfMany trait giving erroneous results (#46309)

Changed

  • Use fallback when previous URL is the same as the current in Illuminate/Routing/UrlGenerator::previous() (#46234)
  • Allow override of the Builder paginate() total (#46336)

Added

  • Adding Conditionable train to Logger (#46259)
  • Added "dot" method to Illuminate\Support\Collection class (#46265)
  • Added a "channel:list" command (#46248)
  • Added JobPopping and JobPopped events (#46220)
  • Add isMatch method to Str and Stringable helpers (#46303)
  • Add ArrayAccess to Stringable (#46279)

Reverted

  • Revert "[10.x] Fix custom themes not reseting on Markdown renderer" (#46328)

Fixed

  • Fix typo in function createMissingSqliteDatbase name in src/Illuminate/Database/Console/Migrations/MigrateCommand.php (#46326)

Changed

  • Generate default command name based on class name in ConsoleMakeCommand (#46256)
  • Do not mutate underlying values on redirect (#46281)
  • Do not use null to initialise $lastExecutionStartedAt in ScheduleWorkCommand (#46285)
  • Remove obsolete function_exists('enum_exists') calls (#46319)
  • Cast json decoded failed_job_ids to array in DatabaseBatchRepository::toBatch (#46329)

Fixed

  • Fixed Illuminate/Foundation/Testing/Concerns/InteractsWithDatabase::expectsDatabaseQueryCount() $connection parameter (#46228)
  • Fixed Facade Fake (#46257)

Changed

  • Remove autoload dumping from make:migration (#46215)

Changed

Added

  • Added protected method Illuminate/Http/Resources/Json/JsonResource::newCollection() for simplifies collection customisation (#46217)

Fixed

  • Fixes constructable migrations (#46223)

Changes

  • Accept time when generating ULID in Str::ulid() (#46201)

Reverted

  • Revert changes from Arr::random() (cf3eb90)

Added

  • Add the ability to re-resolve cache drivers (#46203)

Fixed

  • Fixed Illuminate/Collections/Arr::shuffle() for empty array (0c6cae0)

Fixed

  • Fixing issue where 0 is discarded as a valid timestamp (#46158)
  • Fix custom themes not reseting on Markdown renderer (#46200)

Changed

  • Use secure randomness in Arr:random and Arr:shuffle (#46105)
  • Use mixed return type on controller stubs (#46166)
  • Use InteractsWithDictionary in Eloquent collection (#46196)

Added

  • Added missing expression support for pluck in Builder (#46146)

Added

  • Register policies automatically to the gate (#46132)

Added

  • Standard Input can be applied to PendingProcess (#46119)

Fixed

  • Fix Expression string casting (#46137)

Changed

  • Add AddQueuedCookiesToResponse to middlewarePriority so it is handled in the right place (#46130)
  • Show queue connection in MonitorCommand (#46122)

Please consult the upgrade guide and release notes in the official Laravel documentation.