v4.4.1 (2023-09-05)
- 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)
withnew 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)
- 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
- 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
- feat: Hot Reloading by @lonnieezell in #7489
- 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 tospark 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
makeWebP
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
- 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
v4.3.8 (2023-08-25)
- fix: [Pager] knocks down variables for View by @kenjis in #7758
- fix: Model::insertBatch() causes error to non auto increment table by @kenjis in #7759
- fix: [Model] updateBatch() may generate invalid SQL statement by @kenjis in #7787
- fix: Model inserts cast $primaryKey value when using Entity by @kenjis in #7806
- fix: instances of Validation rules are incremented each time
run()
is executed by @kenjis in #7815 - fix: filter except empty by @kenjis in #7823
- fix:
set_checkbox()
checks unchecked checkbox by @kenjis in #7818
- Normalize data provider names by @paulbalandan in #7656
- refactor: remove Model::$tempPrimaryKeyValue by @kenjis in #7760
- Remove unused cast on RedisHandler by @samsonasik in #7786
v4.3.7 (2023-07-30)
- fix: FeatureTestTrait may change $params values passed to call(), and a few bug fixes by @kenjis in #7602
- fix: auto routing legacy and $route->add() by @kenjis in #7690
- fix: [Model] setValidationRule() cannot use with ruleGroup by @kenjis in #7691
- docs: fix incorrect description on RedirectException (1) by @kenjis in #7629
- docs: fix incorrect description on RedirectException (2) by @kenjis in #7633
- fix: skip http proxy added header by @jozefrebjak in #7622
- fix: number_to_roman() param type by @kenjis in #7640
- fix: [Auto Routing Improved] feature testing may use incorrect param count by @kenjis in #7597
- fix:
url_to()
error message by @kenjis in #7652 - fix: [ViewCells] caching by @kenjis in #7663
- fix: [ViewCells] when there are cells with the same short name, only the first cell is loaded by @kenjis in #7686
- Fix number comparison in number_to_amount() in number_helper.php by @sba in #7701
- fix: wrong Config classname to config() in Toolbar by @kenjis in #7735
- fix: $sensitiveDataInTrace does not work by @kenjis in #7725
- Remove PHPStan from pre-commit hook by @lonnieezell in #7618
- refactor: remove unused property in Encryption\Handlers\BaseHandler by @kenjis in #7579
- refactor: use ::class to config() param by @kenjis in #7611
- refactor: remove unused non-empty array in RequestTrait by @kenjis in #7620
- refactor: [Cache] simplify code of
FileHandler::getItem()
by @paulbalandan in #7667 - refactor: replace
config(Paths::class)
by @kenjis in #7702
v4.3.6 (2023-06-18)
- fix: [Validation] DBGroup is ignored when checking the value of a placeholder by @kenjis in #7549
- fix: [Auto Routing Improved] feature testing may not find controller/method by @kenjis in #7543
- fix: feature test with validation by @kenjis in #7548
- fix: [Postgre] Semicolon in the connection parameters break the DSN string by @michalsn in #7552
- fix: [QueryBuilder] incorrect SQL without space before "ON DUPLICATE KEY UPDATE" by @kenjis in #7564
- fix: wrong classname in exception message in Cell by @kenjis in #7569
- fix:
imagecreatefrompng()
gd-png: libpng warning by @ping-yee in #7570
- refactor: remove unneeded code in IncomingRequest by @kenjis in #7525
- refactor: View by @kenjis in #7534
- refactor: [Entity] fix incorrect return value by @kenjis in #7542
- refactor: Database::initDriver() by @kenjis in #7553
- refactor: remove Factories::models() by @paulbalandan in #7566
- refactor: Validation::processRules() by @kenjis in #7565
- refactor: [Auto Routing Improved] ensure $httpVerb is lower case by @kenjis in #7575
v4.3.5 (2023-05-21)
- Remote Code Execution Vulnerability in Validation Placeholders was fixed. See the Security advisory for more information.
- fix: Session::stop() does not destroy session by @kenjis in #7503
- docs: remove incorrect @property in ResponseTrait by @kenjis in #7495
- fix: validation error when a closure is used in combination with permit_empty or if_exist rules by @michalsn in #7492
- fix: standardize behavior of
make:cell
andCells
by @paulbalandan in #7481 - fix: PostgreSQL getVersion() logic by @marekmosna in #7488
- fix: PostgreSQL getVersion() output by @kenjis in #7509
- feat: user guide dark mode by @michalsn in #7463
- refactor: Entity variable by @kenjis in #7499
v4.3.4 (2023-04-27)
- fix: redirect status code by @kenjis in #7445
- fix: [SQLite3][Postgres][SQLSRV][OCI8] Forge::modifyColumn() changes NULL constraint incorrectly by @kenjis in #7371
- fix: view cell cannot locate the auto-generated view file by @sammyskills in #7392
- fix: CURLRequest - clear response headers between requests by @michalsn in #7398
- fix: [Auto Routing Improved] spark routes shows invalid routes by @kenjis in #7419
- fix: remove $insertID in make:model template by @kenjis in #7443
- fix: add missing 'make:cell' in app/Config/Generators.php by @kenjis in #7458
- refactor: Security::getPostedToken() by @kenjis in #7377
v4.3.3 (2023-03-26)
- docs: fix $systemDirectory path in existing project. by @jozefrebjak in #7289
- docs: fix message.rst and improve content_negotiation.rst by @kenjis in #7280
- fix: Encryption CI3 compatibility by @kenjis in #7273
- fix: [QueryBuilder] RawSql causes error when using like() and countAllResults() by @kenjis in #7277
- fix: handling of null bytes in
Exceptions::renderBacktrace()
by @paulbalandan in #7306 - fix: incorrect metadata querying of Redis cache by @paulbalandan in #7307
- fix: [Email] add missing TLS 1.3 support by @kenjis in #7317
- docs: add warning to random_string() by @kenjis in #7333
- fix: random_string() numeric by @kenjis in #7336
- docs: add note for addColumn() and NULL by @kenjis in #7342
- fix: respondNoContent() returns Kint script in development mode by @anggadarkprince in #7347
- fix: use first exception in exceptionHandler() by @kenjis in #7341
- fix: random_string() alpha alnum nozero by @kenjis in #7344
- fix: migrate:rollback -b negative number by @kenjis in #7350
- fix: site_url() does not support protocol-relative links by @kenjis in #7353
- docs: add uri_string() BC in v4.3.2 by @kenjis in #7356
- fix: Cache FileHandler error when there is a folder in cache dir by @kenjis in #7361
- refactor: consistent header name case by @kenjis in #7299
v4.3.2 (2023-02-18)
- fix: base_url() removes trailing slash in baseURL by @kenjis in #7200
- fix: remove parameter $relative in
uri_string()
by @kenjis in #7135
- docs: fix incorrect sample code in view_parser by @kenjis in #7103
- docs: add missing items in upgrade_430.rst/v4.3.0.rst by @kenjis in #7119
- fix: remove
All
fromOptions All -Indexes
in .htaccess by @sba in #7093 - fix: bug on stuck content-type header in Feature Testing by @baycik in #7112
- fix: ordering
Validation
show error by callsetRule()
by @ddevsr in #7149 - fix: [QueryBuilder] where() generates incorrect SQL when using RawSql by @sclubricants in #7147
- fix: [QueryBuilder] RawSql passed to set() disappears without error by @kenjis in #7148
- fix: [Parser] local_currency causes "Passing null to parameter" by @kenjis in #7157
- fix: [Parser]
!
does not work if delimiters are changed by @kenjis in #7142 - fix: Throttler token time calculation by @rumpfc in #7160
- fix: [QueryBuilder] getOperatorFromWhereKey() misses EXISTS, BETWEEN by @kenjis in #7155
- docs: Correcting documentation mistakes in upgrading from one version to another by @objecttothis in #7191
- fix: [Session]
Redis
connect to protocolTLS
by @ddevsr in #7187 - fix: Autoloader may not add Composer package's namespaces by @kenjis in #7193
- fix: add try/catch to real_path() in clean_path() by @kenjis in #7195
- fix: cannot create shared View instance when using debugbar by @kenjis in #7172
- fix: RouteCollection::getRegisteredControllers() may not return all controllers by @kenjis in #7174
- fix:
spark routes
shows incorrect hostname routes by @kenjis in #7176 - docs: add missing composer.json in Mandatory File Changes by @kenjis in #7170
- fix: stack trace displayed when Exception handler runs out of memory is useless by @kenjis in #7212
- fix: support for display of error message using wildcard (*) by @sammyskills in #7226
- fix: routing behavior when $uriProtocol is QUERY_STRING by @kenjis in #7199
- fix: site_url() does not use alt Config by @kenjis in #7215
- docs: add missing @method having() in Model by @paul45 in #7258
- add
application/vnd.microsoft.portable-executable
andapplication/x-dosexec
by @totoprayogo1916 in #7144
- refactor: add PHPDoc types in RouteCollection by @kenjis in #7129
- refactor: URI::parseStr() by @kenjis in #7154
- refactor: error_exception.php by @kenjis in #7171
- [Rector] Apply Rector to app/Views by @samsonasik in #7169
- refactor: Update PHPDoc Common::config by @maniaba in #7224
v4.3.1 (2023-01-14)
- fix: Email config in the .env doesn't appear as expected by @kenjis in #7078
- fix: TypeError in Validation is_unique/is_not_unique by @kenjis in #7085
- fix: revert method name resetQuery() changed accidentally by @kenjis in #7083
- fix: handling float in Validation Strcit Rules (greater_than, greater_than_equal_to, less_than, less_than_equal_to) by @kenjis in #7098
- docs: add missing instruction for Config/Exceptions in PHP 8.2 by @kenjis in #7100
- fix: Call to undefined method Composer\InstalledVersions::getAllRawData() error by @kenjis in #7107
- [Rector] Enable AddDefaultValueForUndefinedVariableRector by @samsonasik in #7088
v4.3.0 (2023-01-10)
- fix: throws DatabaseException in DB connections by @kenjis in #6163
- config: DB Error always throws Exception CI_DBUG by @kenjis in #6183
- Config Property Types by @kenjis in #6214
- refactor: loading app/Config/routes.php by @kenjis in #6293
- fix: exceptionHandler may return invalid HTTP status code by @kenjis in #6228
- feat: add Form helpers for Validation Errors by @kenjis in #6384
- fix: ValidationInterface by @kenjis in #6253
- fix: types in database classes by @kenjis in #6527
- fix: ResponseInterface (1) by @kenjis in #6556
- Improve BaseConnection::getForeignKeyData() and Forge::addForeignKey() by @sclubricants in #6468
- Refactor BaseBuilder *Batch() Methods by @sclubricants in #6536
- refactor: remove
type="text/javascript"
in <script> tag by @kenjis in #6606 - fix: ResponseInterface (2) by @kenjis in #6569
- Add ability to set index names by @sclubricants in #6552
- fix: MessageInterface inheritance by @MGatner in #6695
- fix: add missing getProtocolVersion() in MessageInterface by @kenjis in #6702
- Add Forge::processIndexes() to create indexes on existing table by @sclubricants in #6676
- fix: add missing ResultInterface::getNumRows() by @kenjis in #6778
- feat: add OutgoingRequestInterface by @kenjis in #6698
- fix: make Time immutable by @kenjis in #6771
- feat: disallow
Model::update()
without WHERE clause by @kenjis in #6883 - feat: do not throw exceptions during transactions by default by @kenjis in #6917
- fix: don't change the variable type and filter all values in JSON request by @michalsn in #6954
- fix: SecurityException's HTTP status code by @kenjis in #6408
- Fix UpsertTest::testUpsertWithMultipleSet by @sclubricants in #6692
- fix: support for assigning extra data for the view() method in controlled cells by @michalsn in #6681
- Fix testMode() with upsert() and getCompiledUpsert() by @sclubricants in #6697
- Fix BaseBuilder setAlias() and RawSql use with key value pairs by @sclubricants in #6741
- fix: BasePreparedQuery class to return boolean values for write-type queries by @michalsn in #6750
- fix: Time::now() does not respect timezone when using setTestNow() by @kenjis in #6752
- fix: remove CI_DEBUG check in Model by @kenjis in #6863
- fix: BaseBuilder::getOperator() doesn't recognize LIKE operator in array expression by @kenjis in #6986
- fix: Honeypot field appears when CSP is enabled by @kenjis in #7029
- Feature: Adding StreamFilterTrait by @iRedds in #6112
- feat: add routes useSupportedLocalesOnly property by @pjsde in #6073
- Feat add events for insertBatch()/updateBatch() by @pjsde in #6125
- feat: improve namespaces command by @kenjis in #6142
- feat: add method to insert empty data in Model by @kenjis in #6109
- feat: Autoloader::sanitizeFilename() throws Exception by @kenjis in #6193
- Language: Make production error message translatable (replaces #6197) by @sba in #6235
- feat: add methods to modify files in Publisher by @kenjis in #6133
- SQLite3 Connection getIndexData() by @sclubricants in #6221
- feat:
spark filter:check
command by @kenjis in #6283 - feat: Encryption CI3 compatibility by @kenjis in #6277
- feat:
spark routes
shows route name by @kenjis in #6271 - error_404.php translation and design by @sba in #6288
- feat: make
CLI::input()
testable by @kenjis in #6335 - Feature for Timer to measure callable performance by @rumpfc in #6321
- feat: add IntBoolCast for Entity by @kenjis in #6348
- Add new method
promptByMultipleKeys()
in CLI class by @rivalarya in #6302 - Allow calling help info using
spark --help
by @paulbalandan in #6383 - feat: autoload helpers by @kenjis in #6397
- Add RawSql to BaseConnection->escape() by @sclubricants in #6332
- feat: add locale param to
route_to()
by @kenjis in #6448 - Postgre & SQLSRV - Should Never Have A Field Length For TEXT by @sclubricants in #6405
- [4.3] Fix tests. Changed StreamFilterTrait and CITestStreamFilter. by @iRedds in #6450
- Create Forge::dropPrimaryKey() by @sclubricants in #6488
- feat: add manual config for Composer package auto-discovery by @kenjis in #6503
- Added view() method to route collections by @kenjis in #6568
- When/WhenNot methods for db in a trait by @lonnieezell in #6574
- Allow Cells to be auto-located within */Cells directories by @lonnieezell in #6601
- Decamelize function by @lonnieezell in #6615
- feat: Controlled Cells by @lonnieezell in #6620
- Allow HTTP/3 to work and not be blocked. by @lonnieezell in #6595
- feat: add method to disable controller filters by @kenjis in #6652
- feat: implementation option http2 in
CURLRequest
by @ddevsr in #6679 - Add BaseBuilder::upsert() and BaseBuilder::upsertBatch() by @sclubricants in #6600
- Deallocate prepared statements by @fpoy in #6665
- feat: Check logs against parts of the message only by @paulbalandan in #6704
- feat: Opt-in logging of deprecations by @paulbalandan in #6705
- feat: void element tags in helpers are selectable between
>
and/>
by @ddevsr in #6789 - feat: add $allowedHostnames for multiple domain support by @kenjis in #6785
- new make:cell command by @lonnieezell in #6864
- Add BaseBuilder::deleteBatch() by @sclubricants in #6734
- Update Kint to 5.0.1 by @kenjis in #6893
- Add
is_windows()
global function by @paulbalandan in #6884 - fix: HTML output by @kenjis in #6899
- feat: add SQLite3 Config busyTimeout by @kenjis in #6939
- insertBatch updateBatch upsertBatch deleteBatch from query by @sclubricants in #6689
- feat: add IncomingRequest::getRawInputVar() method by @michalsn in #6943
- feat: add closure validation rule by @kenjis in #6951
- refactor: add Config\Session by @kenjis in #6989
- feat: add IncomingRequest::is() method by @kenjis in #6995
- feat:
spark routes
option to sort by handler by @kenjis in #7015
- Extracting the call handler for Spark commands from kernel. by @iRedds in #6110
- chore: move Kint to
require-dev
by @kenjis in #6449 - Improve
BaseBuilder::updateBatch()
SQL by @sclubricants in #6373 - refactor: to fix psalm errors by @kenjis in #6535
- Add template types to
Connection
by @paulbalandan in #6709 - refactor: around URI by @kenjis in #6784
- Add template types to Result by @paulbalandan in #6749
- refactor: make now() testable by @kenjis in #6753
- refactor: remove Workaround for Faker deprecation errors in PHP 8.2 by @kenjis in #6987
- refactor: to fix psalm error by @kenjis in #6999
See CHANGELOG_4.2.md