Release Date: Unreleased
4.7.4 release of CodeIgniter4
- API: Fixed a bug in Transformers where the root request's
fieldsandincludequery parameters leaked into nested transformers created insideinclude*()methods, causing incorrect field filtering, unexpected includes, or infinite recursion. - Commands: Fixed a bug where
make:model --return entitydid not preserve sub-namespaces when generating the related Entity class. - Common: Fixed a bug in
env()where aTypeErrorcould be thrown when non-string values were passed. - Common: Fixed
esc()to propagate encoding correctly and prevent reference leaks. - Commands: Fixed a bug where
spark lang:findtreated translation keys already provided by the framework or another namespace (such asErrors.*insystem/Language) as new, listing them under--show-newand writing untranslated placeholders intoapp/Languagethat overrode the existing translations. - Config: Fixed a bug where
BaseService::injectMockdid not applystrtolowerconsistently, causing inconsistent Service and Mock registration and resolution. - Database: Fixed a bug where
updateBatch()could be called after Query Builderwhere()conditions, even though it's not supported. In this situation, now theDatabaseExceptionis thrown. - Encryption: Fixed bugs in
SodiumHandlerwhere incorrect key handling and mismatched block sizes caused encryption and decryption failures. - Filters: Fixed a bug in
InvalidCharsfilter where invalid UTF-8 or control characters in array keys were not checked. - HTTP: Fixed a bug where the User Agent library reported Safari's WebKit version instead of the browser version from the
Versiontoken. - Model: Fixed a bug in
Model::objectToRawArray()where the$recursiveparameter was ignored. - Session: Fixed a bug in
RedisHandlerwhere the configured$lockMaxRetriesand$lockRetryIntervalvalues were not respected when acquiring session locks. - Testing: Fixed a bug where using
MockInputOutputwithin a test that also usesStreamFilterTraittore down the trait's stream filters, so CLI output produced after theMockInputOutputinteraction (such as intearDown()) was no longer captured and leaked to the console.
See the repo's CHANGELOG.md for a complete list of bugs fixed.