Skip to content

Latest commit

 

History

History
569 lines (462 loc) · 56.1 KB

CHANGELOG-5.4.md

File metadata and controls

569 lines (462 loc) · 56.1 KB

Release Notes for 5.4.x

v5.4.18 (2017-04-10)

Added

  • Added assertSuccessful() and assertRedirect() to TestResponse (#18629)
  • Added assertSeeText() and assertDontSeeText() to TestResponse (#18690)
  • Added assertJsonMissing() to TestResponse (#18721, 786b782)
  • Added support for attaching an image to Slack attachments $attachment->image($url)(#18664)
  • Added Validator::extendDependent() to allow adding custom rules that depend on other fields (#18654)
  • Added support for --parent option on make:controller (#18606)
  • Added MessageSent event to Mailer (#18744, 6c5f3a4)

Changed

  • Don't trim leading slashes on local filesystem base URLs (acd66fe)
  • Accept variable on @empty() directive (#18738)
  • Added string validation rules to AuthenticatesUsers (#18746)

Fixed

  • Fixed an issue with Collection::groupBy() when the provided value is a boolean (#18674)
  • Bring back an old behaviour in resolving controller method dependencies (#18646)
  • Fixed job release when exception occurs (#18737)
  • Fixed eloquent increment() and decrement() update attributes (#18739, 1728a88)

v5.4.17 (2017-04-03)

Added

  • Added getManager() and setManager() to queue worker (#18452)
  • Added support for Pheanstalk's $timeout and $persistent options (#18448)
  • Added Collection::times() method (#18457)
  • Added PostgreSQL's REAL data type (#18513)
  • Added flatMap to collection higher order proxies (#18529)
  • Support multiple --path parameters with migrate:reset (#18540)
  • Store SparkPost Transmission-ID in the header after sending message (#18594)

Changed

  • Check for Htmlable instead of HtmlString in Mailer::renderView() (#18459, da7b006)
  • Added mutex for schedule events (#18295, ae2eb1f)
  • Don't use helper functions in service providers (#18506, #18521)
  • Change user_id to unsigned integer in database session stub (#18557)
  • Improved performance of UrlGenerator::isValidUrl() (#18566)

Fixed

  • Handle missing or malformed config/app.php file (#18466, 92931cf)
  • Only call up and down on migration if the method exists (d27d94e)
  • Fixed overwriting of routes with identical path and method (#18475, 5aee967)
  • Fixing model/route binding with identical name (#18476)
  • Allow rollbackMigrations() path to be with string (#18535)
  • Use getStatusCode() in TestResponse::assertRedirect() (#18559)
  • Case parseIds() to array in InteractsWithPivotTable::sync() (#18547)
  • Preserve route parameter names (#18604)

v5.4.16 (2017-03-21)

Added

  • Added PHPDBG detection to runningInConsole() (#18198)
  • Added Arr:wrap() method (#18216)
  • Allow scheduling of queued jobs (#18235, 7bb67e2)
  • Allow skipping mail sending if a listener to MessageSending returns false (#18245)
  • Added BcryptHasher::cost() method (#18266)
  • Added Command::alert() method (#18272)
  • Added tap() method to query builder (#18284)
  • Added orderByDesc() methods to query builder (#18292)
  • Added Container::makeWith() method (#18271, #18320)
  • Added InteractsWithDatabase::assertSoftDeleted() (#18328, 2d4e1f0, f89f917)
  • Added ability to set queue parameters inside queued listeners (#18375, cf461e2)
  • Added Model::setKeyType() (#18354)
  • Output migration name before starting a migration or rollback (#18379, e47e8b1)
  • Added pipeline(), transaction(), and executeRaw() to PhpRedisConnection (#18421)
  • Added @isset() directive (#18425)
  • Added tinyIncrements() database schema method (#18424)

Changed

  • Throw exception when bootstrap/cache directory is not writable (#18188, b4f0005)
  • Use resource_path() helper in MakeAuthCommand (#18215)
  • Added file_exists() check to Event::emailOutput() (c8eafa8)
  • Allow wildcards in MIME type validations (#18243)
  • Only push existing jobs back into the queue using queue:retry (#18279, e874a56)
  • Support file uploads in nested array (#18276)
  • Don't use config() helper in Mail component (#18290)
  • Return the insert ID from DatabaseJob::release() (#18288, #18291)
  • Changed id in failed jobs migration stub to bigIncrements() (#18300)
  • Prevent make:auth from overwriting existing views (#18319, bef8f35)
  • Ensure Mailable view data is not overridden by order of operations (#18322)
  • Use getAuthIdentifier() method in broadcasters (#18351)
  • Use atomic cache operation when checking for event overlaps (8ebb5b8)
  • Return pretty JSON response from HasInDatabase::failureDescription() (#18377)
  • Allow Validator extension to use array-style callable (#18399)
  • Pass the condition value to query builder's when() method (#18419)
  • Don't require returning the query from when() method (#18422)

Fixed

  • Fixed an issue with slots when passed content equals null (#18246)
  • Do require Closure in orWhereHas() (#18277)
  • Let PHP parse @includeWhen directive (#18285)
  • Only include .php files when loading database factories (#18336)
  • Fixed PHP 5.6 issue in FileFactory::generateImage() (#18345)
  • Allow ImplicitRouteBinding to match camelcase method parameter names (#18307, 4ae31a1)
  • Fixing weird behaviour of Connection::getConfig() when null was passed (#18356)
  • Attempt to solve an issue with using required_* rules while the ConvertEmptyStringToNull middleware is applied (#18376)
  • Fixed faking of model events (d6cb75c)
  • Prevent model event result from firing observable events (#18401, 0607db0)
  • Fix issue in authorizeResource() with compound names (#18435)

v5.4.15 (2017-03-02)

Added

  • Added any() method to ViewErrorBag (#18176)
  • Added Storage and File fakes (#18178, #18180)

Changed

  • Made queue worker properties $shouldQuit and $paused public (e40c0e7)

Fixed

  • Proxy isset() checks on TestResponse (#18182)

v5.4.14 (2017-03-01)

Added

  • Added Str::kebab() and kebab_case() helper (#18084)
  • Added Route::getActionMethod() (#18105)
  • Support granular $tries and $timeout on Mailable (#18103)
  • Added context to the assertJson() response (#18166, da2c892)
  • Add whereNotIn() and whereNotInStrict() to Collection (#18157)

Changed

  • Create TestResponse using composition instead of inheritance (#18089)
  • Changed visibility of Pivot::$parent from protected to public (#18096)
  • Catch Sqlite3 deadlocks in DetectsDeadlocks (#18107)
  • Use fromRawAttributes() when in Model::newPivot() (#18127, 063e5ae)
  • Use default connection in DatabaseManager::purge() when no connection name is provided (#18128)
  • Convert rule objects only once to string (#18141)
  • Respect ShouldQueue contract in Mailer::send() (#18144, 717f1f6, #18160)

Fixed

  • Don't use value() helper in BoundMethod class (#18075)
  • Don't require manifest file when running npm run hot (#18088)
  • Fixed injection placement of dependencies for routing method parameters (#17973)
  • Return false from Model::fireModelEvent() if custom model event returns false (c5a6290)
  • Fixed firstOrFail() on relation setting the wrong model on ModelNotFoundException (#18138)
  • Fixed RateLimiter setting initial attempts count to 2 (#18139)
  • Fixed compiled DELETE query when using JOIN with aliases (#18156, e09b9eb)
  • Fixed validating present in combination with nullable (#18173)

v5.4.13 (2017-02-22)

Added

  • Add $default parameter to Collection::when() method (#17941)
  • Support --resource argument on make:model command (#17955)
  • Added replaceDimensions() for validator messages (#17946, b219058)
  • Allow Slack notifications to use image urls (#18011)
  • Added @includeWhen($condition, $view, $data) directive (#18047)

Changed

  • Prevent Blade from compiling statements inside comments (#17952)
  • Don't flash empty array to session, if withInput() is given empty array (#17979)
  • Use the pagination translation strings in paginator templates (#18009)
  • Use getAuthPassword() method in AuthenticateSession middleware (#17965)
  • Return null from Gate::getPolicyFor() if given class is not a string (#17972)
  • Add missing methods to the Job interface (#18034)
  • Improved PostgreSQL table existence check (#18041)
  • Allow getActualClassNameForMorph() used by morphInstanceTo() to be overridden (#18058)

Fixed

  • Fixed @lang directive when used with JSON file (#17919, 2bd35c1)
  • Improved image dimensions validation rule (#17943, #17944, #17963, #17980)
  • Fixed $willBeAvailableAt having the wrong time if using $retryAfter in MaintenanceModeException (#17991)
  • Trim spaces while collecting section name (#18012)
  • Fixed implementation of SqsQueue::size() (#18037)
  • Fixed bug in PasswordBroker::deleteToken() (#18045)
  • Fixed route parameters binding (#17973)

v5.4.12 (2017-02-15)

Added

  • Allow configuration of Faker locale through app.faker_locale config (#17895)
  • Added when() method to Collection class (#17917)
  • Check for files in request() helper (e08714d, 18d1648)
  • Added TestResponse::assertSessionHasErrors() method (dbaf3b1)

Changed

  • Prevent duplication of embedded files in Mail\Message (#17877)
  • Only unserialize data if needed in CallQueuedListener (964fb7f)
  • Made a couple of properties public (614b94a)
  • Handle Model instances in Authorize middleware (#17898)
  • Use asset() helper in app.stub (#17896)
  • Test PhpRedis connection if extension is loaded (#17882, #17910)
  • Use Carbon::setTestNow() in all tests (#17937)

Fixed

  • Make sub select union queries work with SQLite (#17890)
  • Fix zRangeByScore() options syntax for PhpRedis (#17912)

v5.4.11 (2017-02-10)

Added

  • Support Encrypt and TrustServerCertificate options on SqlServer connections (#17841)
  • Support custom pivot models in MorphToMany::newPivot() (#17862)
  • Support Arrayable objects in Eloquent's whereKey() method (#17812)

Changed

  • Use app.locale lang attribute in app.stub (#17827)
  • Throw JsonEncodingException when JSON encoder fails to encode eloquent attribute (#17804, 11e89f3)
  • Ensure file hashName() is unique (#17879, 830f194)

Fixed

  • Added missing Str class import to TestResponse (#17835)
  • Fixed PhpRedis’ zadd() method signature (#17832)

v5.4.10 (2017-02-08)

Added

  • Added Blade @prepend directive (#17696)
  • Added Collection::tap() method (#17756)
  • Allow multiple manifest files for mix() helper (#17759)
  • Adding facility to Log:useSyslog() (#17789)
  • Added macros to Eloquent builder (#17719)
  • Added TestResponse::assertJsonFragment() method (#17809)

Changed

  • Use route() helper instead of url() in authentication component (#17718)
  • Ensure that the map() method exists before calling in RouteServiceProvider::loadRoutes() (#17784)
  • Clean up how events are dispatched (8c90e7f, c9e8854)
  • Changed job name to displayName (4e85a9a, d033626)
  • Made plain string job payloads more similar to object based payloads (bd49288)
  • Bring back pluralization rules for translations (#17826)

Fixed

  • Apply overrides in factory()->raw() method (#17763)

v5.4.9 (2017-02-03)

Added

  • Added Macroable trait to TestResponse (#17726)
  • Added container alias for the Redis connection instance (#17722)
  • Added raw() method to FactoryBuilder (#17734)
  • Added json() as alias for decodeResponseJson method on TestResponse (#17735)

Changed

  • Use route() helper instead of url() in authentication component (#17718)
  • Added Jedi to uncountable list for pluralization (#17729)
  • Return relative URL from mix() helper (#17727)
  • Sort foreign keys on eloquent relations (#17730)
  • Properly set the JSON payload of FormRequests instead of re-building it (#17760, 2d725c2)
  • Use isset() instead of array_key_exists() in HasAttributes::getAttributeFromArray() (#17739)

Fixed

  • Added missing sleep option to queue:listen (59ef5bf)
  • Switched to strict comparison TrimStrings middleware (#17741)

v5.4.8 (2017-02-01)

Added

  • Added TestResponse::assertJsonStructure() (#17700)
  • Added Macroable trait to Eloquent Relation class (#17707)

Changed

  • Move shouldKill() check from daemon() to stopIfNecessary() (8403b34)
  • Removed isset() check from validateSame() (#17708)

Fixed

  • Added force option to queue:listen signature (#17716)
  • Fixed missing return in HasManyThrough::find() and HasManyThrough::findMany() (#17717)

v5.4.7 (2017-01-31)

Added

  • Added Illuminate\Support\Facades\Schema to notifications.stub (#17664)
  • Added support for numeric arguments to @break and @continue (#17603)

Changed

  • Use usesTimestamps() in Eloquent traits (#17612)
  • Default to null if amount isn't set in factory() helper (#17614)
  • Normalize PhpRedis GET/MGET results (#17196)
  • Changed visibility of Validator::addRules() from protected to public (#17654)
  • Gracefully handle SIGTERM signal in queue worker (b38ba01, 819888c)
  • Support inspecting multiple events of same type using Event fake (55be2ea)
  • Replaced hard-coded year in plain-text markdown emails (#17684)
  • Made button component in plain-text markdown emails easier to read (#17683)

Fixed

  • Set Command::$name in Command::configureUsingFluentDefinition() (#17610)
  • Support post size 0 (unlimited) in ValidatePostSize (#17607)
  • Fixed method signature issues in PhpRedisConnection (#17627)
  • Fixed BelongsTo not accepting id of 0 in foreign relations (#17668)
  • Support double quotes with @section() (#17677)
  • Fixed parsing explicit validator rules (#17681)
  • Fixed SessionGuard::recaller() when request is null (#17688, 565456d)
  • Added missing force and tries options for queue:listen (#17687)
  • Fixed how reservation works when queue is paused (9d348c5)

v5.4.6 (2017-01-27)

Added

  • Generate non-existent models with make:controller (#17587, 382b78c)
  • Added TestResponse::dump() method (#17600)

Changed

  • Switch to ViewFactory contract in Mail/Markdown (#17591)
  • Use implicit binding when generating controllers with make:model (#17588)
  • Made PhpRedis method signatures compatibility with Predis (#17488)
  • Use config('app.name') in markdown/message.blade.php (#17604)
  • Use getStatusCode() instead of status() in TestResponse::fromBaseResponse() (#17590)

Fixed

  • Fixed loading of .env.testing when running PHPUnit (#17596)

v5.4.5 (2017-01-26)

Fixed

  • Fixed database session data not persisting (#17584)

v5.4.4 (2017-01-26)

Added

  • Add hasMiddlewareGroup() and getMiddlewareGroups() method to Router (#17576)

Fixed

  • Fixed --database option on migrate commands (#17574)
  • Fixed $sequence being always overwritten in PostgresGrammar::compileInsertGetId() (#17570)

Removed

  • Removed various unused parameters from view compilers (#17554)
  • Removed superfluous ForceDelete extension from SoftDeletingScope (#17552)

v5.4.3 (2017-01-25)

Added

  • Mock dispatch() method in MocksApplicationServices (#17543, d974a88)

Changed

  • Moved $forElseCounter property from BladeCompiler to CompilesLoops (#17538)

Fixed

  • Fixed bug in Router::pushMiddlewareToGroup() (1054fd2)
  • Fixed indentation in Notifications/resources/views/email.blade.php (0435cfc)

v5.4.2 (2017-01-25)

Fixed

  • Fixed removal of reset tokens after password reset (#17524)

v5.4.1 (2017-01-24)

Fixed

  • Fixed view parent placeholding (64f7e9c)

v5.4.0 (2017-01-24)

General

  • Added real-time facades 😈 (feb52bf)
  • Added retry() helper (e3bd359, 52e9381)
  • Added array_wrap() helper function (0f76617)
  • Added default 503 error page into framework (855a8aa, #16848)
  • Added Encrypter::encryptString() to bypass serialization (9725a8e)
  • Removed compiled class file generation and deprecated ServiceProvider::compiles() (#17003, 733d829)
  • Renamed DetectEnvironment to LoadEnvironmentVariables (c36874d)
  • Switched to ::class notation across the codebase (#17357)

Authentication

  • Secured password reset tokens against timing attacks and compromised databases (#16850, 9d674b0)
  • Refactored authentication component (7b48bfc, 5c4541b)
  • Added names to password reset routes (#16988)
  • Stopped touching the user timestamp when updating the remember_token (#17135)

Authorization

  • Consider interfaces and extended classes in Gate::resolvePolicyCallback() (#15757)

Blade

  • Added Blade components and slots (e8d2a45, a00a201)
  • Refactored Blade component (7cdb6a6, 5e394bb)
  • Refactored View component (#17018, bb998dc)
  • Refactored Blade @parent compilation (#16033, 16f72a5)
  • Added support for translation blocks in Blade templates (7179935)
  • Don't reverse the order of @pushed data (#16325)
  • Allow view data to be passed Paginator methods (#17331)
  • Add mix() helper method (6ea4997)
  • Escape inline sections content (#17453)

Broadcasting

  • Added model binding in broadcasting channel definitions (#16120, 515d97c)
  • Added Dispatchable::broadcast() 0fd8f8d
  • Switched to broadcasting events using new style jobs (#17433)

Cache

  • Added RedisStore::add() to store an item in the cache if the key doesn't exist (#15877)
  • Added cache:forget command (#16201, 7644977)
  • Refactored cache events (b7454f0, #17120)
  • Cache::flush() now returns boolean (#15831, 057492d)

Collections

  • Added higher-order messages for the collections (#16267, e276b3d, 2b7ab30, #16274, 724950a, #17000)
  • Allow collection macros to be proxied (#16749)
  • Added operator support to Collection::contains() method (#16791)
  • Renamed every() method to nth() and added new every() to determine if all items pass the given test (#16777)
  • Allow passing an array to Collection::find() (#16849)
  • Always return a collection when calling Collection::random() with a parameter (#16865)
  • Don't renumber the keys and keep the input array order in mapWithKeys() (#16564)

Console

  • Added --model to make:controller command to generate resource controller with type-hinted model (#16787)
  • Require confirmation for key:generate command in production (#16804)
  • Added ManagesFrequencies trait (e238299)
  • Added Queueable to queued listener stub (dcd64b6)
  • Switched from file to cache based Schedule overlap locking (#16196, 5973f6c)
  • Changed namespace generation in GeneratorCommand (de9e03d)
  • Added Command::$hidden and ScheduleFinishCommand (#16806)
  • Moved all framework command registrations into ArtisanServiceProvider (954a333, baa6054, 87bd2a9)
  • Support passing output buffer to Artisan::call() (#16930)
  • Moved tinker into an external package (#17002)
  • Refactored queue commands (07a9402, a82a25f, f2beb2b)
  • Allow tasks to be scheduled on weekends (#17085)
  • Allow console events to be macroable (#17107)

Container

  • Added Container::factory() method to the Container contract (#15430)
  • Added support for binding methods to the container (#16800, 1fa8ea0)
  • Trigger callback when binding an extension or resolving callback to an alias (c99098f)
  • Support contextual binding with aliases (c99098f)
  • Removed $parameters from Application::make() and app()/resolve() helpers (#17071, #17060)
  • Removed Container::share() (1a1969b)
  • Removed Container::normalize() (ff993b8)

DB

  • Refactored all database components (too many commits, sorry)
  • Allow rolling back to a given transaction save-point (#15876)
  • Added $values parameter to Builder::firstOrNew() (#15567)
  • Allow dependency injection on database seeders run() method (#15959)
  • Added support for joins when deleting deleting records using SqlServer (#16618)
  • Added collation support to SQLServerGrammar (#16227)
  • Don't rollback to save-points on deadlock (nested transaction) (#15932)
  • Improve Connection::selectOne() performance by switching to array_shift() (#16188)
  • Added having() shortcut (#17160)
  • Added customer connection resolver (#17248)
  • Support aliasing database names with spaces (#17312)
  • Support column aliases using chunkById() (#17034)
  • Execute queries with locks only on write connection (#17386)
  • Added compileLock() method to SqlServerGrammar (#17424)

Eloquent

  • Refactored Eloquent (too many commits, sorry)
  • Added support for object-based events for native Eloquent events (e7a724d, 9770d1a)
  • Added custom class support for pivot models (#14293, 5459777)
  • Use the model's primary key instead of id in Model::getForeignKey() (#16396)
  • Made date and datetime cast difference more explicit (#16799)
  • Use getKeyType() instead of $keyType in Model (#16608)
  • Only detach all associations if no parameter is passed to BelongsToMany::detach() (#16144)
  • Return a database collection from HasOneOrMany::createMany() (#15944)
  • Throw JsonEncodingException when Model::toJson() fails (#16159, 0bda866)
  • Default foreign key for belongsTo() relationship is now dynamic (#16847)
  • Added whereKey() method (#16558)
  • Use parent connection if related model doesn't specify one (#16103)
  • Enforce an orderBy clause for chunk() (#16283, #16513)
  • Added $connection parameter to create() and forceCreate() (#17392)

Events

  • Removed event priorities (dbbfc62, #17245, f83edc1)
  • Allow queued handlers to specify their queue and connection (fedd4cd)
  • Converted locale.changed event into LocaleUpdated class (3385fdc)
  • Unified wording (2dcde69)
  • Allow chaining queueable methods onto trait dispatch (9fde549)
  • Removed Queueable trait from event listeners subs (2a90ef4)

Filesystem

  • Use UUID instead of md5() for generating file names in FileHelpers (#16193)
  • Allow array of options on Filesystem operations (481f760)

HTTP

  • Refactored session component (66976ba, d9e0a6a)
  • Added Illuminate\Http\Request\Concerns traits (4810e9d)
  • Use variable-length method signature for CookieJar::queue() (#16290, ddabaaa)
  • Added FormRequestServiceProvider (b892805)
  • Renamed Http/Exception namespace to Http/Exceptions (#17398)
  • Renamed getJsonOptions() to getEncodingOptions() on JsonResponse (e689b2a)
  • Renamed VerifyPostSize middleware to ValidatePostSize (893a044)
  • Converted kernel.handled event into RequestHandled class (43a5e5f)
  • Throw AuthorizationException in FormRequest (1a75409)
  • Use Str::random instead of UUID in FileHelpers (#17046)
  • Moved getOriginalContent() to ResponseTrait (#17137)
  • Added JSON responses to the AuthenticatesUsers and ThrottlesLogins (#17369)
  • Added middleware to trim strings and convert empty strings to null (f578bbc)

Logging

  • Added LogServiceProvider to defer loading of logging code (#15451, 6550153, #15794)
  • The Log facade now uses LoggerInterface instead of the log writer (#15855)
  • Converted illuminate.log event into MessageLogged class (57c82d0)

Mail

  • Added support for Markdown emails and notifications (#16768, b876759, cd569f0, 5325385)
  • Refactored Mail component and removed SuperClosure dependency (50ab994, 5dace8f)
  • Allow Mailer to email HtmlString objects (882ea28)
  • Added hasTo(), hasCc() and hasBcc() to Mailable (fb29b38)

Notifications

  • Added NotificationSender class (5f93133)
  • Removed to and cc from mail MailMessage (ff68549)
  • Add salutation option to SimpleMessage notification (#17429)

Queue

Redis

Routing

Testing

Translations

  • Added JSON loader for translations and __() helper (#16424, #16470, 9437244)
  • Replaced Symfony's translator (#15563)
  • Added namespaces() method to translation loaders (#16664, fe7bbf7)
  • Switched to trans() helper in AuthenticatesUsers (#17202)

Validation

  • Refactored Validation component (#17005, 9e98e7a, 9b817f1)
  • Removed files hydration in Validator (#16017)
  • Added IPv4 and IPv6 validators (#16545)
  • Made date_format validation more precise (#16858)
  • Add place-holder replacers for *_or_equal rules (#17030)
  • Made sometimes() chainable (#17241)
  • Support wildcards in MessageBag::first() (#15217)
  • Support implicit keys in MessageBag::first() and MessageBag::first() (#17001)
  • Support arrays with empty string as key (#17427)
  • Add type check to validateUrl() (#17504)