v4.7.0 (2026-02-01)
- feat: require double curly braces for placeholders in
regex_matchrule by @michalsn in codeigniter4#9597 - feat(cache): add
deleteMatchingmethod definition in CacheInterface by @yassinedoghri in codeigniter4#9809 - feat(cache): add native types to all CacheInterface methods by @yassinedoghri in codeigniter4#9811
- feat(entity): deep change tracking for objects and arrays by @michalsn in codeigniter4#9779
- feat(model): primary key validation by @michalsn in codeigniter4#9840
- feat(entity): properly convert arrays of entities in
toRawArray()by @michalsn in codeigniter4#9841 - feat: add configurable status code filtering for
PageCachefilter by @michalsn in codeigniter4#9856 - fix: inconsistent
keyhandling in encryption by @michalsn in codeigniter4#9868 - refactor: complete
QueryInterfaceby @paulbalandan in codeigniter4#9892 - feat: add
remember()toCacheInterfaceby @datamweb in codeigniter4#9875 - refactor: Use native return types instead of using
#[ReturnTypeWillChange]by @paulbalandan in codeigniter4#9900
- fix: ucfirst all cookie samesite values by @paulbalandan in codeigniter4#9564
- fix: controller attribute filters with parameters by @michalsn in codeigniter4#9769
- fix: Fixed test Transformers by @neznaika0 in codeigniter4#9778
- fix: signal trait by @michalsn in codeigniter4#9846
- feat: signals by @michalsn in codeigniter4#9690
- feat(app): Added controller attributes by @lonnieezell in codeigniter4#9745
- feat: API transformers by @lonnieezell in codeigniter4#9763
- feat: FrankenPHP Worker Mode by @michalsn in codeigniter4#9889
- feat: add email/smtp plain auth method by @ip-qi in codeigniter4#9462
- feat: rewrite
ImageMagickHandlerto rely solely on the PHPimagickextension by @michalsn in codeigniter4#9526 - feat: add
Time::addCalendarMonths()andTime::subCalendarMonths()methods by @christianberkman in codeigniter4#9528 - feat: add
clearMetadata()method to provide privacy options when using imagick handler by @michalsn in codeigniter4#9538 - feat: add
dns_cache_timeoutfor optionCURLRequestby @ddevsr in codeigniter4#9553 - feat: added
fresh_connectoptions toCURLRequestby @ddevsr in codeigniter4#9559 - feat: update
CookieInterface::EXPIRES_FORMATto use date format per RFC 7231 by @paulbalandan in codeigniter4#9563 - feat: share connection & DNS Cache to
CURLRequestby @ddevsr in codeigniter4#9557 - feat: add option to change default behaviour of
JSONFormattermax depth by @ddevsr in codeigniter4#9585 - feat: customizable
.envdirectory path by @totoprayogo1916 in codeigniter4#9631 - feat: migrations lock by @michalsn in codeigniter4#9660
- feat: uniform rendering of stack trace from failed DB operations by @paulbalandan in codeigniter4#9677
- feat: make
insertBatch()andupdateBatch()respect model rules by @michalsn in codeigniter4#9708 - feat: add enum casting by @michalsn in codeigniter4#9752
- feat(app): Added pagination response to API ResponseTrait by @lonnieezell in codeigniter4#9758
- feat: update robots definition for
UserAgentclass by @michalsn in codeigniter4#9782 - feat: added
async&persistentoptions to Cache Redis by @ddevsr in codeigniter4#9792 - feat: Add support for HTTP status in
ResponseCacheby @sk757a in codeigniter4#9855 - feat: prevent
Maximum call stack size exceededon client-managed requests by @datamweb in codeigniter4#9852 - feat: add
isPast()andisFuture()time convenience methods by @datamweb in codeigniter4#9861 - feat: allow overriding namespaced views via
app/Viewsdirectory by @datamweb in codeigniter4#9860 - feat: make DebugToolbar smarter about detecting binary/streamed responses by @datamweb in codeigniter4#9862
- feat: complete
Superglobalsimplementation by @michalsn in codeigniter4#9858 - feat: encryption key rotation by @michalsn in codeigniter4#9870
- feat: APCu caching driver by @sk757a in codeigniter4#9874
- feat: added
persistentconfig item to redis handlerSessionby @ddevsr in codeigniter4#9793 - feat: Add CSP3
script-src-elemdirective by @mark-unwin in codeigniter4#9722 - feat: Add support for CSP3 keyword-sources by @paulbalandan in codeigniter4#9906
- feat: enclose hash-based CSP directive values in single quotes by @paulbalandan in codeigniter4#9908
- feat: add support for more CSP3 directives by @paulbalandan in codeigniter4#9909
- feat: add support for CSP3
report-todirective by @paulbalandan in codeigniter4#9910
- refactor: cleanup code in
Emailby @ddevsr in codeigniter4#9570 - refactor: remove deprecated types in random_string() helper by @michalsn in codeigniter4#9592
- refactor: do not use future-deprecated
DATE_RFC7231constant by @paulbalandan in codeigniter4#9657 - refactor: remove
curl_closehas no effect since PHP 8.0 by @ddevsr in codeigniter4#9683 - refactor: remove
finfo_closehas no effect since PHP 8.1 by @ddevsr in codeigniter4#9684 - refactor: remove
imagedestroyhas no effect since PHP 8.0 by @ddevsr in codeigniter4#9688 - refactor: deprecated PHP 8.5 constant
FILTER_DEFAULTforfilter_*()by @ddevsr in codeigniter4#9699 - chore: bump minimum required
PHP 8.2by @ddevsr in codeigniter4#9701 - refactor: add the
SensitiveParameterattribute to methods dealing with sensitive info by @paulbalandan in codeigniter4#9710 - fix: Remove check ext-json by @neznaika0 in codeigniter4#9713
- refactor(app): Standardize subdomain detection logic by @lonnieezell in codeigniter4#9751
- refactor: Types for
BaseModel,Modeland dependencies by @neznaika0 in codeigniter4#9830 - chore: remove IncomingRequest deprecations by @michalsn in codeigniter4#9851
- refactor: Session library by @neznaika0 in codeigniter4#9831
- refactor: Superglobals - remove property promotion and fix PHPDocs by @paulbalandan in codeigniter4#9871
- refactor: Rework
Entityclass by @neznaika0 in codeigniter4#9878 - refactor: compare
$db->connIDtofalseby @paulbalandan in codeigniter4#9891 - refactor: cleanup
ContentSecurityPolicyby @paulbalandan in codeigniter4#9904 - refactor: deprecate
CodeIgniter\HTTP\ContentSecurityPolicy::$noncessince never used by @paulbalandan in codeigniter4#9905
For the changelog of v4.6, see CHANGELOG_4.6.md.
For the changelog of v4.5, see CHANGELOG_4.5.md.
For the changelog of v4.4, see CHANGELOG_4.4.md.
For the changelog of v4.3, see CHANGELOG_4.3.md.
For the changelog of v4.2, see CHANGELOG_4.2.md.
For the changelog of v4.1, see CHANGELOG_4.1.md.
For the changelog of v4.0, see CHANGELOG_4.0.md.