- High Impact Changes
- Medium Impact Changes
- [spiral/validation] Error messages for 'number::lower' and 'number::higher' rules were changed to reflect that these checks are in fact 'lower or equal' and 'higher or equal'. You may need to adjust translations file accordingly.
- Other Features
- [spiral/validation] Add array::count, array::range, array::shorter and array::longer rules (#435)
- Bug Fixes
-
New Functionality
- Added new
spiral/storage
component (See https://spiral.dev/docs/component-storage) - Added new
spiral/distribution
component (See https://spiral.dev/docs/component-distribution) - Introduced and improved
spiral/attributes
component (See https://spiral.dev/docs/component-attributes)
- Added new
-
High Impact Changes
- Added
league/flysystem: ^2.0
dependency.
- Added
-
Other Features
- Added basic RoadRunner 2.0 support (only HTTP)
- [data-grid] Implement fragment/expression injections for DataGrid sorters (#400)
- [data-grid] Datagrid/fix inarray accessor edge case (#379)
- [boot] ExceptionHandler does not account for error_reporting setting (#386)
-
High Impact Changes
- A minimal version of
monolog/monolog
increased to^2.2
- A minimal version of
-
Other Features
- Added PHP 8 support
- [spiral/prototype] added typed properties support for php 7.4
- [spiral/validation] arrayOf validation checker
- [spiral/validation] introduce
now
parameter in datetime checker - [spiral/validation] extract abstract validator
- [spiral/data-grid] datetime from formatted string value needed
- [spiral/data-grid] add mixed specifications
- [spiral/data-grid] make grid factory more reusable
- [spiral/data-grid] add
ilike
postgres filter - [spiral/domain] add pipeline interceptor
- [spiral/domain] extract permissions provider for
GuardInterceptor
-
Bug Fixes
- [spiral/prototype] name conflict resolver
- [spiral/prototype] trait remove problem
- [spiral/prototype] inherited injections problem
-
High Impact Changes
- A minimal version of
symfony/translation
increased to^5.1
- A minimal version of
symfony/console
increased to^5.1
- A minimal version of
symfony/finder
increased to^5.1
- A minimal version of
-
Medium Impact Changes
- Dependence of
zend/zend-diactoros
was replaced bylaminas/laminas-diactoros ^2.3
- [spiral/dumper]
Spiral\Debug\Dumper
class marked asfinal
- Dependence of
-
Other Features
- [spiral/http] Implementation of RFC7231 "Accept" header parser
- [spiral/http] Simplified ErrorHandlerMiddleware injection
- [spiral/reactor] Fix render comment for namespace declaration
- [spiral/validation] Add
any
,none
conditions
- RR updated to 1.8.2 (don't use broken 1.8.1 tag)
- Jobs plugin updated to 2.2.0 (see the changelog)
- Allow json requests with empty body by @rauanmayemir
- Add the ability to control view cache separately from DEBUG via VIEW_CACHE env variable
- added support for Postgres Cycle Auth tokens
- added the ability to redefine the error message in Guarded annotation
- Update RR to 1.8.0
- [bugfix] invalid value associated with validation context by CycleInterceptor
- added
JobRegistry
with the ability to route jobs into custom pipelines - added the ability to bind job name to the concrete implementation
- added EntityChecker to check the existence and uniqueness of ORM entities
- the Auth/CookieTransport will respect the application base path
- the command
encrypt:key
is no longer private - cleaned up the Publisher extension by @ncou
- fixed a number of PHPUnit 8.0 warnings
- RouterBootloader no longer blocks the HttpConfig (easier middleware creation)
- show list of actions in multi-action routes in
route:list
by @ncou - added default alias for
notNull
validation rule - fixed path behavior in
grpc:generate
command by @matthewhall-ca - FilterInterceptor can automatically detect the validation context
- RoadRunner version updated to 1.7.0
- build.sh script updated. Included
-trimpath
andmusl
target - RoadRunner version updated to 1.6.4
- jobs updated to version 2.1.3
- roadrunner updated to version 1.6.3
- fix issue with debug http collector fail in console mode
- WebSocket module updated to v1.1.0
- added reload module
- fix
TableCommand
render for fragments - Add return status code to the ConsoleDispatcher.php
- minor code-base quality improvements
- added
route:list
command - app server updated with recent roadrunner version
- queue server does not show
PUSH
message anymore - added
roave/security-advisories
- bump
spiral/validation
dependency - register
DatetimeChecker
in theValidationBootloader
- added striker payload validation for jobs
- added support for SerializerRegistryInterface for spiral/jobs
- refactor in WebsocketBootloader
- fixed bug in stop sequence of ws roadrunner service
- added broadcast service
- added WebSocket server
- minor refactoring in json exception handler
- bugfix: client exceptions no longer sent with 500 code in application/json payloads
- bugfix: fixed issue with forced expiration of session auth tokens
- the framework can work without any snapshooter
- improved code coverage
- fixed invalid middleware association for http state collector
- improved debug state management
- exceptions are able to display current request state, logs and etc.
- ability to register custom debug state collectors
- the plain snapshots enabled by default instead of HTML based
- improved error handling for JSON requests
- lighter API and abstract class base injection for
spiral/filters
- FileSnapshotter now sends logs into "default" log channel
- CycleInterceptor use parameter as entity value instead of entity role
- added interceptable core support and DomainBootloader
- the ability to automatically inject Cycle entity via route parameter
- the ability to automatically pre-validate Filters
- the ability to authorize controller methods using @Guarded annotation
- improving the Cycle TokenStorage for better testing capabilities
- authorizes trait removed in favor of core interceptors
- Auth Cycle\TokenStorage now requests TransactionInterface directly, for simpler testing
- json payload middleware read stream content via (string) conversion
- JsonPayloadParserBootloader renamed to JsonPayloadsBootloader
- minor CS in CycleBootloader, cleaner dependencies
- the ORM schema can be pre-heated automatically
- ability to create injectors to interfaces
- added auth component
- new CS fixes in compliance with PSR-12
- minor improvements in session scopes
- added health service to the app server
- added CookieManager for simpler access to cookies in request scope
- added SessionScope for simpler access to session in request scope
- added automatic CS formatting
- update
cycle/proxy-factory
dependency
spiral/jobs
updated to2.0
- job handlers introduced
- typo fix:
JsonPayloadBootload
toJsonPayloadParserBootloader
- added
JsonPayloadMiddleware
andJsonPayloadBootloader
- more tests
- added 7.4 tests to travis
- 7.1 support is officially dropped
- ability to inject constructor dependencies into cycle repositories and classes from app container
- added support for Prometheus metrics for
jobs
(queue) andgrpc
services - exceptions will use default style
- bugfix: inability to render
FragmentInterface
indb:table
command view:compile
won't compileNativeEngine
templates anymore- ability to skip server download if version did not change
- fixed config method names in spiral/views
- cycle/annotated is now based on doctrine/annotations
- cycle/annotated is not required to work with cycle anymore
- DatabaseTable command has been modified to display composite FKs
- added ability to configure worker relay using ENV RR_WORKER by @myavchik
- automatically configure worker based on rr relay settings
- cycle/annotated is not required for cycle to work
- added MetricsInterface service for Prometheus
- fixed i18n tests
- updated RoadRunner dependency
- added RR services: headers, metrics
- updated dependency (and interfaces) with cycle/proxy-factory
- http component split into cookies and csrf packages
- decoupled from zend/diactoros
- http component split into cookies and csrf packages
- decoupled from zend/diactoros
- added support for pre-loading specific relations using eager or lazy loading methods
- cycle:sync does not require configuration now
- added
dumprr
function (dump to STDERR)
- no more migration warnings while running static analysis on a project
- fixed container binding for cycle repository
- migration command now adds
\n
after each migration - bugfix
vendor/bin/spiral get-binary
on linux machines
grpc:generate
command now includes all proto files from given directoryRbacBootloader
renamed toGuardBootloader
- added
vendor/bin/spiral get-binary
command to download application server by @Alex-Bond
- added GRPC dispatcher
- added encrypter:key command
- added binary server release
- renamed MvcBootloader to RouterBootloader
- minor cs
- TBD
- Fixed bug with incorrect Request association for already exists bags
- Added charset UTF-8 for response wrapper
- Improved error handling for CLI applications
- Ability to specify JSON response code inside jsonSerialize
- Fixed a bug when error message was converted to empty array
- Fixed a bug when multidepth requests contained invalid prefix (in case of depth more than 3)
- ability to locate view cache files by view name and namespace
- ability to add conditions to skip validation rules
- ValidatesEntity now caches last set of produced errors
- Ability to use EntityInterface as parameter for ValidatorInterface->setData() method
- Improved cache management for StemplerEngine (fixed issue with non-stable cache key)
- Ability to force view recompilation thought ViewManager
- first public release, no BC changes
- improvements in Translation indexations
- bugfix in Loader caused an exception with Swift::autoloader
uri
function restored- Router is now available outside of http scope
- Cache directory is now relative to runtime directory
- DateTime accessors now can accept DateTimeInterface
- Dependencies update
- Validator can now accept checkers outside of it's config
- Proper timezone detection for datetime accessors
- RenderException now shows original error location in views
- Improvements in cache management for Twig engine
Encrypter
- Proper exception when encryption key is invalid
Session
- Session does not force session id in cookie when session not started
Framework
- Dropped support of PHP5+
- Added secure session implementation
- Code coverage improvements
- Twig updated to 2.0 branch
- PHPUnit updated to 5.0 branch
- Components split into separate repositories
- Symfony dependencies updated to 3.0 branch
- added
bind()
function to specify IoC dependencies in configs - ViewSource class added into views
Common
- Dropped support of PHP5+
- Code coverage improvements
- Cache component removed (replaced with PSR-16)
- Views component moved to Framework bundle
- Validation component moved to Framework bundle
- Translation component moved to Framework bundle
- Encryption component moved to Framework bundle
- Migrations component moved in
- Automatic migration generation is now part of Migration component
- Security component moved in
- Monolog dependency removed
- PHPUnit updated to 5.0 branch
- Symfony dependencies updated to 3.0 branch
- Schema definitions moved to array constants instead of default property values
- Simplified PaginatorInterface
- Reactor component moved in
- Debugger (log manager) component removed
- Improved implementation of Tokenizer component
- Lazy wire declaration for FactoryInterface
Core
- ScoperInterface moved into Framework bundle
- Container now validates scalar agument types when supplied by user
DBAL
- Improved polyfills for SQLServer
- Improved SQL injection prevention
- Improved timezone management
- Refactoring of DBAL schemas
- Bugfixes
- Unions with ordering in SQLServer
- Invalid parameter handling for update queries with nested selection
- Pagination classes are immutable now
- Ability to use nested queries in JOIN statements
- on argument in join() methods is deprecated, use on() function directly
Models
- Removed features
- Embedded validations
- Magic getter and setter methods via __call()
- setValue and packValue methods added
- "fields" property is now private
- SolidableTrait is now part of models ORM
- Refactoring of SchemaBuilder
- RecordSelector does not extend SelectQuery anymore
- Transactional (UnitOfWork) support
- Improvements in memory mapping
- Improvements in tree operations (save)
- Removed features
- ActiveRecord thought direct table communication
- MutableNumber accessor
- Validations
- Bugfixes
- ManyToMany relations to non-saved records
- BelongsToRelation to non-saved records
- Definition of morphed relations must be explicit now
- All ORM entities MUST have proper primary key now
- Ability to define custom column types in combination with accessors
- Relation loaders and schemas are immutable now
- Memory scope are optional now
- Record does not have "source" method by default now (see SourceTrait)
- Optimizations in load method with "using" option
- Added late bindings (locate outer record based on Interface or role name)
- Added detach() method into HasMany relation
Stempler
- StemplerLoader synced with Twig abstraction, StemplerSource introduced
- SourceContext (twig like) have been added
ODM
- Moved to latest PHP7 mongo drivers
- Removed features
- Validations
- Removed parent document reference in compositions
- Scalar array split into multiple versions
- CompositableInterface improved
- Document does not have "source" method by default now (see SourceTrait)
Storage
- Improved implementation of RackspaceServer
- Added GridFS server support