New Features 🥳
- [DX] Add "setup-ci" command to ease integration to CI (#3425)
- [CI] Move from EndBug/add-and-commit to stefanzweifel/git-auto-commit-action (#3426)
- [CodeQuality] Add concat support on ReturnTypeFromStrictScalarReturnExprRector to be string (#3435)
- [Php80] Add typed property Closure support on ClassPropertyAssignToConstructorPromotionRector (#3453)
Bugfixes 🐛
- [Privatization] Fix crash on assign inside Arg on ChangeReadOnlyVariableWithDefaultValueToConstantRector (#3423)
- [TypeDeclaration] Only apply false type on php 8.2+ configured on TypedPropertyFromAssignsRector (#3422)
- [Php71] Set public constant on final constant on PublicConstantVisibilityRector (#3431)
- [CodingStyle] Fix infinite loop on NewlineAfterStatementRector when parent attribute is different (#3434)
- [Php80] Skip array append different keys in cases on ChangeSwitchToMatchRector (#3437)
- Alternative Rector workflow on check repo before steps run (#3440)
- Handle $reflectionProperty->getDefaultValueExpression() return null (#3446)
- [CodingStyle] Skip case not constant value on BinarySwitchToIfElseRector (#3452)
- [CodingStyle] Use ExprAnalyzer::isDynamicExpr() to detect dynamic value case cond on BinarySwitchToIfElseRector (#3456)
- [DeadCode] Skip assign inside if cond on RemoveAlwaysTrueIfConditionRector (#3447)