Skip to content

Latest commit

 

History

History
518 lines (435 loc) · 46.3 KB

CHANGELOG.md

File metadata and controls

518 lines (435 loc) · 46.3 KB

Changelog

v4.5.3 (2024-06-25)

Full Changelog

Fixed Bugs

  • fix: RedisHandler::deleteMatching() not deleting matching keys if cache prefix is used by @paulbalandan in #8952
  • fix: TypeError in DefinedRouteCollector::collect() by @kenjis in #8957
  • fix: migrate:rollback -b does not work due to TypeError by @kenjis in #8958
  • fix: [Validation] if_exist does not work with array data by @kenjis in #8959
  • chore: add Config namespace to appstarter autoload.psr4 by @kenjis in #8963
  • fix: spark routes may show BadRequestException when a route has a regexp by @kenjis in #8974
  • docs: fix incorrect description for route group filter by @kenjis in #8978
  • fix: return and param types of BaseConnection by @paulbalandan in #8983
  • fix: precedence of command classes with the same $name by @kenjis in #8898
  • fix: [OCI8] if conditions to build DSN by @kenjis in #8986
  • fix: [Auto Routing Improved] Default Method Fallback does not work with $translateUriToCamelCase by @kenjis in #8980
  • fix: command() may execute rewrite.php by @kenjis in #8995

Refactoring

  • refactor: BaseBuilder::orderBy() by @kenjis in #8970
  • refactor: using phpunit 10 assertObjectHasNotProperty() and assertObjectHasProperty() by @samsonasik in #8991

v4.5.2 (2024-06-10)

Full Changelog

Fixed Bugs

  • chore: fix phpunit.xml.dist for appstarter by @kenjis in #8785
  • fix: update preload.php for 4.5 by @kenjis in #8805
  • fix: [ErrorException] Undefined array key in spark phpini:check by @kenjis in #8804
  • fix: incorrect Security exception message by @kenjis in #8818
  • fix: [QueryBuilder] TypeError in join() with BETWEEN by @kenjis in #8792
  • fix: [SQLSRV] Query Builder always sets "<database>"."<schema>". to the table name. by @ping-yee in #8786
  • fix: remove unused undefined param $raw in MockCache::save() by @kenjis in #8847
  • fix: FileCollection pseudo-regex by @kenjis in #8868
  • fix: [Model] casting may throw InvalidArgumentException: Invalid parameter: nullable by @kenjis in #8870
  • fix: [Model] casting causes TypeError when finding no record by @kenjis in #8871
  • fix: correct property default values in Email by @kenjis in #8855
  • fix: CLI::promptByMultipleKeys() and prompt() by @kenjis in #8873
  • fix: [Postgres] show missing error message by @kenjis in #8913
  • fix: TypeError in number_to_amount() by @kenjis in #8932
  • fix: Model::find() returns incorrect data with casting by @kenjis in #8933

Refactoring

  • refactor: remove unused path parameter on PhpStreamWrapper::stream_open() by @samsonasik in #8926

v4.5.1 (2024-04-14)

Full Changelog

Fixed Bugs

  • fix: TypeError in form() by @kenjis in #8736
  • fix: [DebugBar] TypeError in Toolbar by @kenjis in #8727
  • fix: TypeError when Time is passed to Model by @kenjis in #8738
  • docs: added Config\Feature::$oldFilterOrder to app/Config/Feature.php… by @mullernato in #8749
  • fix: Factories::get() cannot get defined classes by @kenjis in #8744
  • fix: BaseConnection::escape() does not accept Stringable by @kenjis in #8756
  • fix: [CURLRequest] getHeaderLine('Content-Type') causes InvalidArgumentException by @kenjis in #8760
  • fix: [CURLRequest] construct param $config is not used by @kenjis in #8761
  • fix: [FileLocator] Cannot declare class XXX, because the name is already in use by @kenjis in #8745
  • fix: [DebugBar] Toolbar display may be broken by @kenjis in #8772
  • fix: Cannot declare class CodeIgniter\Config\Services, because the name is already in use by @kenjis in #8776
  • docs: fix Postgre DSN sample by @kenjis in #8774

Refactoring

  • test: refactor Config/Registrar.php by @kenjis in #8731
  • test: add return void by @kenjis in #8746
  • refactor: system/CLI/BaseCommand.php by @mcsaygili in #8741
  • refactor: system/View/Plugins.php by @mcsaygili in #8742
  • refactor: fix method name ValidationErrors in View\Plugins by @kenjis in #8758
  • refactor: system/Debug/Toolbar/Collectors/Routes.php by @mcsaygili in #8751
  • refactor: improve error message in BaseExceptionHandler by @kenjis in #8766
  • refactor: FabricatorModel by @kenjis in #8770

v4.5.0 (2024-04-07)

Full Changelog

Breaking Changes

  • refactor: always use multiple filters by @kenjis in #7903
  • fix: update psr/log to v2 and fix Logger interface by @kenjis in #7967
  • fix: incorrect return type for Model::objectToRawArray() by @kenjis in #7986
  • fix: filter exec order by @kenjis in #7955
  • refactor: Remove deprecated Config\Config by @kenjis in #8016
  • fix: FileLocator::findQualifiedNameFromPath() behavior by @kenjis in #8010
  • refactor: remove deprecated methods in Model by @kenjis in #8032
  • fix: route options are not merged (outer filter is merged with inner filter) by @kenjis in #8033
  • fix: route options are not merged (inner filter overrides outer filter) by @kenjis in #7981
  • feat: FileLocator caching by @kenjis in #8017
  • refactor: remove deprecated properties and methods in CodeIgniter class by @kenjis in #8050
  • fix: make Factories final by @kenjis in #8056
  • refactor: remove deprecated test classes by @kenjis in #8057
  • refactor: make IncomingRequest::$uri protected by @kenjis in #8067
  • refactor: remove deprecated spark commands by @kenjis in #8086
  • refactor: remove deprecated Request::isValidIP() by @kenjis in #8090
  • fix: set_cookie() $expire type by @kenjis in #8080
  • fix: remove traditional validation rule param types (1/2) by @kenjis in #8078
  • fix: filters are executed when controller does not exist with Auto Routing (Legacy). by @ping-yee in #7925
  • fix: remove traditional validation rule param types (2/2) by @kenjis in #8124
  • refactor: remove deprecated ModelFactory by @kenjis in #8139
  • refactor: remove deprecated properties in Response by @kenjis in #8142
  • fix: remove deprecated upper functionality in Request::getMethod() by @kenjis in #8186
  • feat: new Required Filters by @kenjis in #8053
  • refactor: remove deprecated CastException exception by @kenjis in #8469
  • refactor: remove deprecated MockSecurityConfig by @kenjis in #8472
  • refactor: remove deprecated CodeIgniter\Entity by @kenjis in #8497
  • refactor: remove deprecated Cache\Exceptions\ExceptionInterface by @kenjis in #8498
  • fix: API\ResponseTrait can't return string as JSON by @kenjis in #8490
  • feat: Validation::run() accepts DB connection by @kenjis in #8499
  • feat: 404 Override sets 404 by default by @kenjis in #8535
  • refactor: remove deprecated const SPARKED by @kenjis in #8559
  • refactor: remove deprecated BaseService::discoverServices() by @kenjis in #8589
  • fix: move Kint loading to Autoloader by @kenjis in #8603
  • feat: add Boot class by @kenjis in #8604

Fixed Bugs

  • fix: error on Config\Kint with Config Caching by @kenjis in #8003
  • fix: route key lowercase HTTP verbs by @kenjis in #8235
  • fix: use addHeader() by @kenjis in #8240
  • fix: QueryBuilder limit(0) bug by @kenjis in #8280
  • fix: SQLite3 may not throw DatabaseException by @kenjis in #8467
  • [4.5] fix: DEBUG-VIEW comments are not output by @kenjis in #8523
  • [4.5] fix: $db->dateFormat merge by @kenjis in #8539
  • [4.5] fix: spark does not work with composer install --no-dev by @kenjis in #8534
  • [4.5] fix: Composer autoload.psr4 by @kenjis in #8569
  • [4.5] fix: errors when not updating Config\Feature by @kenjis in #8570
  • [4.5] fix: TypeError in Filters by @kenjis in #8683

New Features

  • feat: Language translations finder and update by @neznaika0 in #7896

Enhancements

  • feat: domparser - ability to write more advanced expressions by @michalsn in #7946
  • feat: [Validation] Callable Rules by @kenjis in #7933
  • perf: autoloader by @kenjis in #8005
  • feat: db:table shows db config by @kenjis in #7972
  • feat: add {memory_usage} replacement by @kenjis in #8008
  • perf: replace $locator->getClassname() with findQualifiedNameFromPath() by @kenjis in #8012
  • feat: add Method/Route logging in exceptionHandler() by @kenjis in #8108
  • feat: add config:check command to check Config vaules by @kenjis in #8110
  • feat: one generator command could have multiple views by @kenjis in #8119
  • feat: improve CLI input testability by @kenjis in #7978
  • feat: add ArrayHelper::dotKeyExists() by @kenjis in #8131
  • feat: add CSP clearDirective() to clear existing directive by @kenjis in #8220
  • feat: [Validation] add field_exists rule by @kenjis in #8123
  • feat: add Message::addHeader() to add header with the same name by @kenjis in #8194
  • feat: spark filter:check shows "Required Filters" by @kenjis in #8236
  • feat: [Commands] lang:find show bad keys when scanning (v2) by @neznaika0 in #8285
  • feat: add --dbgroup option to spark db:table by @kenjis in #8292
  • feat: [Auto Routing Improved] add option to translate uri to camel case by @kenjis in #8321
  • feat: spark routes shows "Required Filters" by @kenjis in #8237
  • feat: HTTP method-aware web page caching by @kenjis in #8364
  • feat: spark make:test creates test files in /tests/ directory v2 by @kenjis in #8388
  • feat: [Routing] add option to pass multiple URI segments to one Controller parameter by @kenjis in #8348
  • feat: add DataConverter to convert types by @kenjis in #8230
  • feat: [Model] add option $updateOnlyChanged by @kenjis in #8455
  • feat: add event points for spark commands by @kenjis in #8496
  • feat: 404 controller also can get PageNotFoundException message by @kenjis in #8491
  • feat: add DB config dateFormat to provide default date/time formats by @kenjis in #8525
  • feat: use $db->dateFormat in Model by @kenjis in #8538
  • feat: permit __invoke() method as Controller default method by @kenjis in #8533
  • feat: add Model field casting by @kenjis in #8243
  • feat: add spark command to check php.ini by @kenjis in #8581
  • feat: improve Redis Session by @kenjis in #8578
  • feat: add Config\Optimize by @kenjis in #8605
  • feat: support database name with dots by @kenjis in #8664
  • feat: add spark optimize command by @kenjis in #8610
  • feat: add CORS filter by @kenjis in #8649
  • feat: Support faker modifiers on Fabricator by @paulbalandan in #8671
  • feat: environment-specific Config\Security::$redirect by @kenjis in #8673
  • feat: spark config:check detects Config Caching by @kenjis in #8711

Refactoring

  • Drop PHP 7.4 support by @kenjis in #7924
  • [4.5] refactor: remove unused use in Model by @kenjis in #8045
  • [4.5] refactor: remove BaseModel assert() by @kenjis in #8046
  • [4.5] refactor: Filters by rector by @kenjis in #8071
  • perf: defer instantiation of Validation in Model by @kenjis in #8087
  • refactor: fix types by @kenjis in #8091
  • refactor: move ArrayHelper class by @kenjis in #8130
  • [4.5] refactor: fix types by @kenjis in #8138
  • refactor: fix param types by @kenjis in #8175
  • refactor: Validation rule field_exists by @kenjis in #8242
  • refactor: TestResponse is now a class of its own by @paulbalandan in #8264
  • refactor: fix TypeError in strict mode by @kenjis in #8270
  • refactor: add declare(strict_types=1) by @kenjis in #8072
  • refactor: remove deprecated Controller::loadHelpers() by @kenjis in #8286
  • refactor: remove deprecated methods in Security by @kenjis in #8287
  • refactor: HTTP verbs in Router by @kenjis in #8317
  • refactor: remove unused exception classes by @kenjis in #8468
  • [4.5] refactor: add declare(strict_types=1) to ForgeModifyColumnTest by @kenjis in #8502
  • [4.5] refactor: use local variables in Model by @kenjis in #8565
  • refactor: remove unnecessary BaseService::$services assignment by @kenjis in #8609
  • perf: add Factories::get() v2 by @kenjis in #8600
  • perf: add Services::get() by @kenjis in #8607
  • refactor: remove deprecated items in Request by @kenjis in #8617
  • refactor: followup performance service() by @ddevsr in #8623
  • [4.5] refactor: add declare(strict_types=1) in BadRequestException by @kenjis in #8682
  • refactor: DB config properties by @kenjis in #8693
  • refactor: upgrade to PHP 8.1 with rector by @kenjis in #8354
  • refactor: update PHPUnit to 10 by @kenjis in #8069

v4.4.8 (2024-04-07)

Full Changelog

Fixed Bugs

  • fix: [ImageMagickHandler] early terminate processing of invalid library path by @paulbalandan in #8680
  • docs: fix PHPDoc types in BaseModel by @kenjis in #8679
  • fix: the error view is determined by Exception code by @kenjis in #8689
  • fix: Pager::only([]) does not work by @kenjis in #8702
  • refactor: remove unneeded code in SQLite3\Table and fix PHPDoc types in Database by @kenjis in #8703
  • docs: fix return type in BaseResult by @Pebryan354 in #8709

Refactoring

  • refactor: simplify ImageMagickHandler::getVersion() by @paulbalandan in #8681
  • refactor: [Rector] Apply ExplicitBoolCompareRector by @samsonasik in #8704

v4.4.7 (2024-03-29)

Full Changelog

SECURITY

  • Language: Language class DoS Vulnerability was fixed. See the Security advisory for more information.
  • URI Security: The feature to check if URIs do not contain not permitted strings has been added. This check is equivalent to the URI Security found in CodeIgniter 3. This is enabled by default, but upgraded users need to add a setting to enable it.
  • Filters: A bug where URI paths processed by Filters were not URL-decoded has been fixed.

Breaking Changes

  • fix: Time::difference() DST bug by @kenjis in #8661

Fixed Bugs

  • fix: [Validation] FileRules cause error if getimagesize() returns false by @kenjis in #8592
  • fix: isWriteType() to recognize CTE; always excluding RETURNING by @markconnellypro in #8599
  • fix: duplicate Cache-Control header with Session by @kenjis in #8601
  • fix: [DebugBar] scroll to top by @ddevsr in #8595
  • fix: Model::shouldUpdate() logic by @kenjis in #8614
  • fix: esc() for 'raw' context by @Cleric-K in #8633
  • docs: fix incorrect CURLRequest allow_redirects description by @kenjis in #8653
  • fix: Model::set() does not accept object by @kenjis in #8670

Refactoring

  • refactor: replace PHP_VERSION by PHP_VERSION_ID by @justbyitself in #8618
  • refactor: apply early return pattern by @justbyitself in #8621
  • refactor: move footer info to top in error_exception.php by @kenjis in #8626

v4.4.6 (2024-02-24)

Full Changelog

Breaking Changes

  • fix: Time::createFromTimestamp() returns Time with UTC by @kenjis in #8544

Fixed Bugs

  • fix: [OCI8] getFieldData() returns incorrect default value by @kenjis in #8459
  • fix: [SQLite3] getFieldData() returns incorrect primary_key values by @kenjis in #8460
  • fix: [OCI8][Postgre][SQLSRV][SQLite3] change order of properties returned by getFieldData() by @kenjis in #8481
  • docs: fix supported SQL Server version by @kenjis in #8489
  • fix: [SQLite3] Forge::modifyColumn() messes up table by @kenjis in #8457
  • docs: fix incorrect @return type in ResultInterface-getCustomRowObject() by @kenjis in #8503
  • fix: [Postgre] updateBatch() breaks char type data by @kenjis in #8524
  • fix: DebugBar block by CSP by @YapsBridging in #8411
  • docs: fix @phpstan-type in Model by @kenjis in #8543
  • fix: [CURLRequest] Multiple HTTP 100 return by API. by @ping-yee in #8466
  • fix: PHPDoc types in controller.tpl.php by @kenjis in #8561
  • fix: [Session] Redis session race condition by @kenjis in #8323

Refactoring

  • test: refactor ImageMagickHandlerTest by @paulbalandan in #8461
  • test: refactor GetFieldDataTest by @kenjis in #8480
  • refactor: use ternary operators in Helpers by @ddevsr in #8529
  • refactor: use official site URLs by @kenjis in #8541
  • refactor: remove redundant URL helper loading by @kenjis in #8556
  • refactor: small improvement in loadInNamespace Autoloader by @ddevsr in #8553

v4.4.5 (2024-01-27)

Full Changelog

Fixed Bugs

  • fix: bug 4.4.4 spark serve not working when using Session in Routes.php by @ALTITUDE-DEV-FR in #8389
  • fix: highlightFile() in BaseExceptionHandler for PHP 8.3 by @michalsn in #8401
  • fix: [Validation] DotArrayFilter returns incorrect array when numeric index array is passed by @grimpirate in #8425
  • fix: OCI8 Forge always sets NOT NULL when BOOLEAN is specified by @kenjis in #8440
  • fix: DB Seeder may use wrong DB connection during testing by @kenjis in #8447
  • fix: [Postgre] QueryBuilder::updateBatch() does not work (No API change) by @kenjis in #8439
  • fix: [Postgre] QueryBuilder::deleteBatch() does not work by @kenjis in #8451
  • fix: [Email] setAttachmentCID() does not work with buffer string by @kenjis in #8446
  • fix: add undocumented Model $allowEmptyInserts by @kenjis in #8456

Refactoring

  • refactor: remove overrides for coding-standard v1.7.12 by @paulbalandan in #8386
  • refactor: Table class to fix phpstan errors by @kenjis in #8402
  • fix: typo in pager default_simple by @jasonliang-dev in #8407
  • refactor: improve Forge variable names by @kenjis in #8434

v4.4.4 (2023-12-28)

Full Changelog

Breaking Changes

  • fix: Validation rule with * gets incorrect values as dot array syntax by @kenjis in #8129
  • fix: validation rule matches and differs by @kenjis in #8122
  • fix: [CURLRequest] skip hostname checks if options 'verify' false by @NicolaeIotu in #8258
  • fix: get_filenames() does not follow symlinks by @kenjis in #8298

Fixed Bugs

  • fix: change make:command default $group to App by @kenjis in #8109
  • fix: typo in help message in spark filter:check by @kenjis in #8118
  • fix: Hot reloading when session is enabled by @michalsn in #8112
  • fix: make:cell help message by @kenjis in #8133
  • fix: [DebugBar] dark mode timeline "Controller" by @kenjis in #8125
  • fix: PHPDoc types in controller.tpl.php by @kenjis in #8144
  • fix: @return in filter.tpl.php by @kenjis in #8145
  • fix: when request body is 0, $body will be null by @kenjis in #8161
  • fix: spark routes outputs <unknown> only when {locale} with useSupportedLocalesOnly(true) by @kenjis in #8167
  • fix: Undefined array key error in spark db:table by @kenjis in #8173
  • fix: force_https() redirects to wrong URL when baseURL has subfolder by @kenjis in #8191
  • fix: Validation raises TypeError when invalid JSON comes by @kenjis in #8153
  • fix: FilterTestTrait Undefined variable $filterClasses by @kenjis in #8195
  • fix: Image::save() causes error with webp by @kenjis in #8210
  • fix issue where running FileLocator::getClassname() on a directory would cause a PHP error by @colethorsen in #8216
  • fix: make Request::getEnv() deprecated by @kenjis in #8234
  • fix: ExceptionHandler displays incorrect Exception classname by @kenjis in #8239
  • fix: [Cache] Double prefix for increment in FileHandler by @il-coder in #8255
  • docs: fix Database Utility Class getXMLFromResult() by @kenjis in #8276
  • fix: autoload helpers in test bootstrap by @kenjis in #8275
  • fix: Model handling of Entity $primaryKey casting by @kenjis in #8282
  • fix: Handle non-array JSON in validation by @woodongwong in #8288
  • fix: DEPRECATED error in Honeypot by @kenjis in #8316
  • fix: [Auto Routing Improved] spark routes shows incorrect routes when translateURIDashes is enabled by @kenjis in #8320
  • fix: migrations not using custom DB connection of migration runner by @paulbalandan in #8221
  • Always return a new instance of a Cell by @michalsn in #8330
  • fix: DOMParser cannot see element with id="0" by @kenjis in #8360

Refactoring

  • [Rector] Apply SingleInArrayToCompareRector by @samsonasik in #8102
  • refactor: RedisHandler ttl() calls by @kenjis in #8155
  • [Testing] Use assertEqualsWithDelta() when possible by @samsonasik in #8158
  • refactor: replace non-boolean if conditions in Model by @kenjis in #8193
  • refactor: View classes to fix PHPStan errors by @kenjis in #8208
  • refactor: Model by @kenjis in #8260
  • replace -1 with E_ALL in error_reporting calls by @ThomasMeschke in #8212
  • refactor: apply SimplifyEmptyCheckOnEmptyArrayRector by @kenjis in #8341
  • refactor: apply DisallowedEmptyRuleFixerRector by @kenjis in #8344
  • refactor: rely on $config property in ViewDecoratorTrait by @mostafakhudair in #8021
  • refactor: replace empty() Part 1 by @kenjis in #8345

v4.4.3 (2023-10-26)

Full Changelog

SECURITY

  • Detailed Error Report is Displayed in Production Environment was fixed. See the Security advisory for more information.

Fixed Bugs

  • fix: FilterTestTrait::getFilterCaller() does not support Filter classes as array by @kenjis in #8058
  • fix: add dbgroup to model template only when specified as an option by @sammyskills in #8077
  • Update phpstan-codeigniter and fix errors on Modules by @paulbalandan in #8036
  • fix: [Validation] exact_length does not pass int values by @kenjis in #8088
  • fix: [Table] field named data will produce bugged output by @ping-yee in #8054
  • docs: fix event points descriptions by @kenjis in #8076
  • docs: fix helper loading by @kenjis in #8084

v4.4.2 (2023-10-19)

Full Changelog

Fixed Bugs

  • Fix: [Session] the problem of secondary retrieving values ​​in RedisHandler by @ping-yee in #7887
  • fix: spark migrate -g option by @kenjis in #7894
  • fix: [DebugBar] dark mode timeline-color-open color text on Debug by @ddevsr in #7907
  • fix: base_url()/site_url() does not work on CLI by @kenjis in #7901
  • Fix: Routing::loadRoutes() in windows do not validate correctly $routesFiles by @pjsde in #7930
  • fix: Services::request() should call AppServices instead static by @pjsde in #7985
  • fix: lang() may return false by @kenjis in #7966
  • fix: CI returns "200 OK" when PageNotFound by @kenjis in #8011
  • fix: spark may not show exceptions or show backtrace as json by @kenjis in #7962
  • fix: CLI prompt validation message by @kenjis in #7977
  • fix: CSP style nonce is added even if honeypot is not attached by @kenjis in #8025
  • fix: named routes don't work with spark by @kenjis in #8028
  • fix: add a primary key to an existing table by @michalsn in #8031
  • fix: reverse route for '' is not false by @kenjis in #8024
  • fix: spark routes may show incorrect route names by @kenjis in #8040
  • fix: Factories caching bug by @kenjis in #8037
  • fix: file sort order in Files DebugBar by @kenjis in #8048

Enhancements

  • fix: check for CSRF token in the raw body by @michalsn in #7915

Refactoring

  • fix: add types to View $filters and $plugins by @paulbalandan in #7885
  • test: use PHP_VERSION_ID instead of PHP_VERSION by @kenjis in #7913
  • [PHP 8.3] refactor: ReflectionProperty::setValue() signature deprecation by @kenjis in #7911
  • refactor: remove unneeded arguments to session by @paulbalandan in #7919
  • fix: types for common functions by @paulbalandan in #7917
  • Refactor: Apply PHPStan rule "Short ternary operator is not allowed" to RouteCollection by @pjsde in #7947
  • refactor: remove $_SESSION from methods and functions by @pjsde in #7982
  • refactor: if condition in OCI8/Connection.php by @kenjis in #7994
  • style: remove unnecessary () in Toolbar by @kenjis in #8013
  • refactor: replace deprecated Services::request(config, false) by @kenjis in #7998
  • refactor: delete duplicate code for Composer loading by @kenjis in #8004
  • [Rector] Apply BooleanInIfConditionRuleFixerRector by @samsonasik in #7951

v4.4.1 (2023-09-05)

Full Changelog

Fixed Bugs

  • docs: add missing Config updates for Hot Reloading by @kenjis in #7862
  • fix: auto route legacy does not work by @kenjis in #7871
  • fix: Factories may not return shared instance by @kenjis in #7868
  • fix: replace config(DocTypes::class) with new DocTypes() by @kenjis in #7872
  • fix: FeatureTest may cause risky tests by @kenjis in #7867
  • fix: reverse routing causes ErrorException by @kenjis in #7880
  • fix: Email library forces to switch to TLS when setting port 465 by @kenjis in #7883
  • fix: [DebugBar] make CSS rotate class less broad by @sanchawebo in #7882
  • fix: FeatureTest fails when forceGlobalSecureRequests is true by @kenjis in #7890

v4.4.0 (2023-08-25)

Full Changelog

Breaking Changes

  • fix: URI::setSegment() accepts the last +2 segment without Exception by @kenjis in #7251
  • feat: custom exception handler by @kenjis in #7087
  • Clean router config by @lonnieezell in #7380
  • feat: add ValidationInterface::getValidated() by @kenjis in #7429
  • [4.4] refactor: moving RedirectException. by @iRedds in #7545
  • Remove Config\App Session items by @kenjis in #7255
  • perf: RouteCollection $routes optimization by @kenjis in #7175
  • Remove Config\App Security items by @kenjis in #7630
  • refactor: extract ResponseCache class for Web Page Caching by @kenjis in #7644
  • fix: change Services::session() config param type by @kenjis in #7671
  • feat: add Factories::define() to explicitly override a class by @kenjis in #7733
  • Return signatures of Autoloader's loaders should be void by @paulbalandan in #7747
  • fix: remove instantiation of Response in Services::exceptions() by @kenjis in #7670
  • refactor: move callExit() to index.php by @kenjis in #7800
  • rework: URI creation and URL helper by @kenjis in #7282

Fixed Bugs

  • fix: incorrect segment number in URI::getSegment() exception message by @kenjis in #7267
  • fix: can't change and override valid locales by @kenjis in #7309
  • fix: Validation::check() does not accept array rules by @kenjis in #7424
  • fix: directory separator from routing file. by @ping-yee in #7487
  • [4.4] Fix output buffering by @iRedds in #7500
  • fix: [Auto Routing Improved] one controller method has more than one URI when $translateURIDashes is true by @kenjis in #7422
  • fix: [4.4] merge Exception::maskSensitiveData() fix into BaseExceptionHandler by @kenjis in #7736

New Features

  • feat: Hot Reloading by @lonnieezell in #7489

Enhancements

  • feat: renderSection option to retained data by @addngr in #7126
  • feat: [Auto Routing Improved] fallback to default method by @kenjis in #7162
  • feat: Filter Arguments with $filters in Config\Filters by @kenjis in #7159
  • feat: New method DownloadResponse::inline() by @iRedds in #7207
  • feat: add --host option to spark routes by @kenjis in #7213
  • feat: add Entity::injectRawData() to avoid name collision by @kenjis in #7208
  • feat: [MySQLi] add config to use MYSQLI_OPT_INT_AND_FLOAT_NATIVE by @kai890707 in #7265
  • feat: add new setter/getter for Entity by @kenjis in #7230
  • feat: [SQLSRV] getFieldData() supports nullable by @kenjis in #7301
  • feat: HTML Table data keys synchronize order with Heading keys by @rumpfc in #7409
  • feat: [Validation] add method to get the validated data by @kenjis in #7420
  • feat: [Auto Routing Improved] Module Routing by @kenjis in #7416
  • feat: function array_group_by by @rumpfc in #7438
  • feat: add Session::close() by @kenjis in #7508
  • feat: GDHandler make WebP with option quality by @ddevsr in #7506
  • feat: [Auto Routing Improved] fallback to default controller's default method by @kenjis in #7406
  • Add access to full_path index of uploaded files by @JamminCoder in #7541
  • [4.4] Rework redirect exception by @iRedds in #7610
  • feat: [CURLRequest] add option for Proxy by @kenjis in #7632
  • feat: improve View route output by @kenjis in #7646
  • feat: add SiteURI class by @kenjis in #7252
  • feat: add SiteURIFactory by @kenjis in #7256
  • feat: [Factories] Config caching by @kenjis in #7696

Refactoring

  • refactor: remove Cookie config items in Config\App by @kenjis in #7221
  • refactor: deprecate $request and $response in Exceptions::__construct() by @kenjis in #7232
  • refactor: use config(Cache::class) in CodeIgniter by @kenjis in #7297
  • [4.4] refactor: a single point of sending the Response. by @iRedds in #7519
  • refactor: [Entity] fix incorrect return value by @kenjis in #7544
  • [4.4] refactor: use ::class to config() param by @kenjis in #7619
  • refactor: drop support for Config\App::$proxyIPs = '' by @kenjis in #7621
  • refactor: extract DefinedRouteCollector by @kenjis in #7653
  • refactor: remove uneeded if in Commands\Utilities\Routes by @kenjis in #7661
  • refactor: [4.4] add types for phpstan by @kenjis in #7723
  • Remove trimming logic of Autoloader::loadClass() by @paulbalandan in #7763

See CHANGELOG_4.3.md