Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
c283d1a
docs: add changelog and upgrade for v4.7.0 (#9464)
michalsn Feb 25, 2025
b1f2bee
feat: add email/smtp plain auth method (#9462)
ip-qi Mar 3, 2025
c970fd7
Merge branch 'develop' into 4.7
paulbalandan Mar 11, 2025
2b9b314
Merge branch 'develop' into 4.7
paulbalandan Mar 16, 2025
86cf38a
Merge branch 'develop' into 4.7
paulbalandan Mar 18, 2025
8fbdbd4
Merge branch 'develop' into 4.7
paulbalandan Apr 10, 2025
7d8e085
Merge branch 'develop' into 4.7
paulbalandan Apr 13, 2025
115d37e
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn Apr 16, 2025
3d3ba05
Merge branch 'develop' into 4.7
paulbalandan Apr 19, 2025
489d0be
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn Apr 22, 2025
e15078c
feat: rewrite `ImageMagickHandler` to rely solely on the PHP `imagick…
michalsn Apr 22, 2025
9d12f04
feat: add `Time::addCalendarMonths()` and `Time::subCalendarMonths()`…
christianberkman Apr 25, 2025
958cd54
Merge branch 'develop' into 4.7
paulbalandan May 2, 2025
6cddc29
Merge remote-tracking branch 'upstream/develop' into 4.7
paulbalandan May 2, 2025
8119039
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn May 8, 2025
ac89c61
feat: add `clearMetadata()` method to provide privacy options when us…
michalsn May 8, 2025
f7d6142
feat: add `dns_cache_timeout` for option `CURLRequest` (#9553)
ddevsr May 15, 2025
59a4819
feat: added `fresh_connect` options to `CURLRequest` (#9559)
ddevsr May 16, 2025
e1317af
refactor: cleanup code in Email (#9570)
ddevsr May 19, 2025
cf6011f
feat: update `CookieInterface::EXPIRES_FORMAT` to use date format per…
paulbalandan May 19, 2025
4d912e3
fix: ucfirst all cookie samesite values (#9564)
paulbalandan May 20, 2025
b014438
Merge branch 'develop' into 4.7
paulbalandan May 21, 2025
4046b8d
feat: share connection & DNS Cache to `CURLRequest` (#9557)
ddevsr May 26, 2025
37445bc
Merge branch 'develop' into 4.7
paulbalandan May 27, 2025
fa1178d
feat: add option to change default behaviour of `JSONFormatter` max d…
ddevsr May 31, 2025
3f2a434
chore: fix psalm error on 4.7 (#9590)
paulbalandan Jun 1, 2025
5ff2df0
Merge branch 'develop' into 4.7
paulbalandan Jun 3, 2025
06340ce
refactor: remove deprecated types in random_string() helper (#9592)
michalsn Jun 3, 2025
15f56bb
feat: require double curly braces for placeholders in `regex_match` r…
michalsn Jun 16, 2025
b8a036d
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn Jul 10, 2025
a850820
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn Jul 25, 2025
d1ee696
Merge remote-tracking branch 'upstream/develop' into 4.7
paulbalandan Jul 26, 2025
a5caa4d
feat: customizable `.env` directory path (#9631)
totoprayogo1916 Jul 27, 2025
cfc1e24
Merge remote-tracking branch 'upstream/develop' into 4.7
paulbalandan Aug 2, 2025
bb1cefa
Merge branch 'develop' into 4.7
paulbalandan Aug 2, 2025
ebc25b4
refactor: do not use future-deprecated `DATE_RFC7231` constant (#9657)
paulbalandan Aug 3, 2025
5d8baed
Merge branch 'develop' into 4.7
paulbalandan Aug 12, 2025
500d4ad
feat: migrations lock (#9660)
michalsn Aug 17, 2025
e6dcf5b
Merge branch 'develop' into 4.7
paulbalandan Aug 17, 2025
1326621
feat: uniform rendering of stack trace from failed DB operations (#9677)
paulbalandan Aug 18, 2025
dfc34fd
refactor: remove `curl_close` as has no effect since PHP 8.0 (#9683)
ddevsr Aug 19, 2025
ae08d14
refactor: remove `finfo_close` has no effect since PHP 8.0 (#9684)
ddevsr Aug 19, 2025
3c10cc1
refactor: remove `imagedestroy` has no effect since PHP 8.0 (#9688)
ddevsr Aug 19, 2025
97a5462
chore: add `PHP 8.5` to Github Action (#9667)
ddevsr Aug 28, 2025
797eebf
refactor: deprecated PHP 8.5 constant FILTER_DEFAULT for filter_*()
ddevsr Sep 2, 2025
cbea67a
chore: added rules RenameConstantRector on Rector
ddevsr Sep 2, 2025
d25f87b
Merge pull request #9699 from ddevsr/deprecated-filter-default
samsonasik Sep 2, 2025
fca548d
chore: bump minimum required `PHP 8.2` (#9701)
ddevsr Sep 5, 2025
8a94ce6
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn Sep 5, 2025
f03ce85
feat: signals (#9690)
michalsn Sep 5, 2025
e39c749
feat: make `insertBatch()` and `updateBatch()` respect model rules (#…
michalsn Sep 5, 2025
3b7018c
refactor: add the `SensitiveParameter` attribute to methods dealing w…
paulbalandan Sep 8, 2025
4a0f3c2
Merge branch 'develop' into 4.7
paulbalandan Sep 13, 2025
3473349
fix: Remove check ext-json (#9713)
neznaika0 Sep 13, 2025
6824b69
feat(app): Added controller attributes (#9745)
lonnieezell Oct 8, 2025
d945236
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn Oct 9, 2025
37ff9fa
feat: add enum casting (#9752)
michalsn Oct 10, 2025
01a45be
refactor(app): Standardize subdomain detection logic (#9751)
lonnieezell Oct 10, 2025
a143349
chore: bump `laminas/laminas-escaper` to v1.28 as minimum
ddevsr Oct 15, 2025
815a02b
run composer update
ddevsr Oct 15, 2025
ddc06b5
Merge pull request #9760 from ddevsr/patch-4
samsonasik Oct 15, 2025
5add16d
feat(app): Added pagination response to API ResponseTrait (#9758)
lonnieezell Oct 16, 2025
05c7217
feat: API transformers (#9763)
lonnieezell Oct 19, 2025
6a64c4c
fix: controller attribute filters with parameters (#9769)
michalsn Oct 23, 2025
7596279
fix: Fixed test Transformers (#9778)
neznaika0 Oct 30, 2025
858d040
feat: update robots definition for `UserAgent` class (#9782)
michalsn Oct 31, 2025
a84634d
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn Nov 19, 2025
2609108
feat: added `async` & `persistent` options to Cache Redis (#9792)
ddevsr Nov 21, 2025
43bd5bb
feat(cache): add `deleteMatching` method definition in CacheInterface…
yassinedoghri Nov 27, 2025
76bea16
feat(cache): add native types to all CacheInterface methods (#9811)
yassinedoghri Nov 29, 2025
4c88a27
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn Dec 11, 2025
04a34ed
fix: tests with migrations_lock (#9833)
michalsn Dec 12, 2025
7719a03
Merge remote-tracking branch 'upstream/develop' into 4.7
paulbalandan Dec 12, 2025
c9d3dcd
refactor: Types for `BaseModel`, `Model` and dependencies (#9830)
neznaika0 Dec 13, 2025
3d993c5
feat(entity): deep change tracking for objects and arrays (#9779)
michalsn Dec 14, 2025
53a4b41
fix: signal trait (#9846)
michalsn Dec 18, 2025
59cbed5
refactor: remove `ignore-platform-req` (#9847)
ddevsr Dec 19, 2025
08bc0f8
fix: `null` as an array offset is deprecated, use an empty string ins…
michalsn Dec 20, 2025
23b64e6
chore: remove IncomingRequest deprecations (#9851)
michalsn Dec 21, 2025
0bd3e09
docs: improve wording and clarity (#9850)
michalsn Dec 22, 2025
cbe2ed0
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn Dec 26, 2025
fe1e944
feat(model): primary key validation (#9840)
michalsn Dec 26, 2025
877d1da
feat(entity): properly convert arrays of entities in `toRawArray()` (…
michalsn Dec 27, 2025
e2fc524
feat: Add support for HTTP status in `ResponseCache` (#9855)
sk757a Dec 28, 2025
0d52f5a
feat: prevent `Maximum call stack size exceeded` on client-managed re…
datamweb Dec 30, 2025
455068a
feat: add configurable status code filtering for `PageCache` filter (…
michalsn Dec 30, 2025
772eaf4
refactor: Session library (#9831)
neznaika0 Jan 1, 2026
ff20d81
feat: add `isPast()` and `isFuture()` time convenience methods (#9861)
datamweb Jan 1, 2026
2226f89
fix: resolve inconsistent PHPStan errors between local and CI environ…
michalsn Jan 3, 2026
5f104f6
feat: allow overriding namespaced views via `app/Views` directory (#9…
datamweb Jan 4, 2026
a46eeee
fix: inconsistent `key` handling in encryption (#9868)
michalsn Jan 4, 2026
e88e03a
feat: make DebugToolbar smarter about detecting binary/streamed respo…
datamweb Jan 5, 2026
f204ff7
feat: complete `Superglobals` implementation (#9858)
michalsn Jan 5, 2026
516c50d
refactor: Superglobals - remove property promotion and fix PHPDocs (#…
paulbalandan Jan 6, 2026
12cf2b4
feat: encryption key rotation (#9870)
michalsn Jan 6, 2026
cb9bcc8
fix: make router cache attributes time independent (#9881)
michalsn Jan 10, 2026
af86430
Merge branch 'develop' into 4.7
paulbalandan Jan 11, 2026
41a92ec
feat: APCu caching driver (#9874)
sk757a Jan 17, 2026
1b56deb
refactor: Rework `Entity` class (#9878)
neznaika0 Jan 17, 2026
8561f53
chore: rerun `phpstan:baseline` for accurate errors count (#9890)
paulbalandan Jan 18, 2026
6cd74bf
refactor: compare `$db->connID` to `false` (#9891)
paulbalandan Jan 18, 2026
4685507
refactor: complete `QueryInterface` (#9892)
paulbalandan Jan 18, 2026
21fbcf6
feat: add `remember()` to `CacheInterface` (#9875)
datamweb Jan 19, 2026
b00e8b9
feat: add ``persistent`` config item to Session's Redis handler (#9793)
ddevsr Jan 19, 2026
c38a267
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn Jan 20, 2026
84bd795
fix: rector
michalsn Jan 20, 2026
c7e784f
Merge pull request #9896 from michalsn/fix/rector
samsonasik Jan 20, 2026
fc0cb19
refactor: Use native return types instead of using `#[ReturnTypeWillC…
paulbalandan Jan 30, 2026
819a02a
feat: FrankenPHP Worker Mode (#9889)
michalsn Jan 30, 2026
1b377d1
Merge remote-tracking branch 'upstream/develop' into 4.7
michalsn Jan 30, 2026
7b48592
refactor: cleanup `ContentSecurityPolicy` (#9904)
paulbalandan Feb 1, 2026
bdad80d
docs: Create a new Make a RESTful API guide (#9808)
lonnieezell Feb 1, 2026
4bb89b6
feat: Add CSP3 `script-src-elem` directive (#9722)
mark-unwin Feb 1, 2026
4f2fe41
refactor: deprecate `CodeIgniter\HTTP\ContentSecurityPolicy::$nonces`…
paulbalandan Feb 1, 2026
bbaa088
feat: Add support for CSP3 keyword-sources (#9906)
paulbalandan Feb 1, 2026
6905da3
Merge branch 'develop' into 4.7
paulbalandan Feb 1, 2026
131bc58
feat: enclose hash-based CSP directive values in single quotes (#9908)
paulbalandan Feb 1, 2026
112f4e9
feat: add support for more CSP3 directives (#9909)
paulbalandan Feb 1, 2026
d3c5dcc
Merge remote-tracking branch 'upstream/develop' into 4.7
paulbalandan Feb 1, 2026
729cbbe
feat: add support for CSP3 `report-to` directive (#9910)
paulbalandan Feb 1, 2026
c0c18b6
Merge pull request #9916 from codeigniter4/4.7
paulbalandan Feb 1, 2026
3ac71c3
chore: move v4.6 changelog and fix references (#9917)
paulbalandan Feb 1, 2026
5c0e695
Prep for 4.7.0 release (#9918)
paulbalandan Feb 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ body:
description: Which PHP versions did you run your code?
multiple: true
options:
- '8.1'
- '8.2'
- '8.3'
- '8.4'
- '8.5'
validations:
required: true

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/deploy-apidocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
php-version: '8.2'
tools: phive
coverage: none

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/deploy-userguide-latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
php-version: '8.2'
coverage: none

- name: Setup Python
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/reusable-phpunit-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ jobs:
- name: Setup global environment variables
run: |
echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV
echo "ARTIFACT_NAME=${{ inputs.job-id || github.job }}-php-${{ inputs.php-version }}-db-${{ inputs.db-platform || 'none' }}" >> $GITHUB_ENV
echo "ARTIFACT_NAME=${{ inputs.job-id || github.job }}-php-${{ inputs.php-version }}-db-${{ inputs.db-platform || 'none' }}${{ inputs.mysql-version || '' }}" >> $GITHUB_ENV
- name: Cache dependencies
uses: actions/cache@v5
Expand Down Expand Up @@ -214,6 +214,7 @@ jobs:
DB: ${{ inputs.db-platform }}
TACHYCARDIA_MONITOR_GA: ${{ inputs.enable-profiling && 'enabled' || '' }}
TERM: xterm-256color
continue-on-error: ${{ inputs.php-version == '8.5' }}

- name: Upload coverage results as artifact
if: ${{ inputs.enable-artifact-upload }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/test-autoreview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ jobs:
name: Automatic Code Review
uses: ./.github/workflows/reusable-serviceless-phpunit-test.yml # @TODO Extract to codeigniter4/.github repo
with:
job-name: PHP 8.1
php-version: '8.1'
job-name: PHP 8.2
php-version: '8.2'
job-id: auto-review-tests
group-name: AutoReview

Expand All @@ -47,7 +47,7 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
php-version: '8.2'

- name: Install dependencies
run: composer update
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/test-coding-standards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ jobs:
fail-fast: false
matrix:
php-version:
- '8.1'
- '8.4'
- '8.2'
include:
- php-version: '8.5'
composer-option: '--ignore-platform-req=php'

steps:
- name: Checkout base branch for PR
Expand Down Expand Up @@ -61,7 +63,7 @@ jobs:
${{ runner.os }}-
- name: Install dependencies
run: composer update --ansi --no-interaction
run: composer update --ansi --no-interaction ${{ matrix.composer-option }}

- name: Run lint
run: composer cs
2 changes: 1 addition & 1 deletion .github/workflows/test-deptrac.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
php-version: '8.2'
tools: composer
extensions: intl, json, mbstring, gd, mysqlnd, xdebug, xml, sqlite3

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-phpstan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
php-version: '8.2'
extensions: intl
coverage: none

Expand Down
13 changes: 7 additions & 6 deletions .github/workflows/test-phpunit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,10 @@ jobs:
strategy:
matrix:
php-version:
- '8.1'
- '8.2'
- '8.3'
- '8.4'
- '8.5'

uses: ./.github/workflows/reusable-phpunit-test.yml # @TODO Extract to codeigniter4/.github repo
with:
Expand All @@ -83,10 +83,10 @@ jobs:
fail-fast: false
matrix:
php-version:
- '8.1'
- '8.2'
- '8.3'
- '8.4'
- '8.5'
db-platform:
- MySQLi
- OCI8
Expand All @@ -96,7 +96,7 @@ jobs:
mysql-version:
- '8.0'
include:
- php-version: '8.1'
- php-version: '8.2'
db-platform: MySQLi
mysql-version: '5.7'

Expand All @@ -123,10 +123,10 @@ jobs:
strategy:
matrix:
php-version:
- '8.1'
- '8.2'
- '8.3'
- '8.4'
- '8.5'

uses: ./.github/workflows/reusable-phpunit-test.yml # @TODO Extract to codeigniter4/.github repo
with:
Expand All @@ -149,10 +149,10 @@ jobs:
strategy:
matrix:
php-version:
- '8.1'
- '8.2'
- '8.3'
- '8.4'
- '8.5'

uses: ./.github/workflows/reusable-phpunit-test.yml # @TODO Extract to codeigniter4/.github repo
with:
Expand All @@ -163,7 +163,8 @@ jobs:
enable-artifact-upload: ${{ matrix.php-version == needs.coverage-php-version.outputs.version }}
enable-coverage: ${{ matrix.php-version == needs.coverage-php-version.outputs.version }}
enable-profiling: ${{ matrix.php-version == needs.coverage-php-version.outputs.version }}
extra-extensions: redis, memcached
extra-extensions: redis, memcached, apcu
extra-ini-options: apc.enable_cli=1
extra-composer-options: ${{ matrix.composer-option }}

coveralls:
Expand Down
13 changes: 10 additions & 3 deletions .github/workflows/test-psalm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,12 @@ jobs:
build:
name: Psalm Analysis
runs-on: ubuntu-latest
if: (! contains(github.event.head_commit.message, '[ci skip]'))

strategy:
fail-fast: false
matrix:
php-version:
- '8.2'

steps:
- name: Checkout base branch for PR
Expand All @@ -39,7 +44,7 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
php-version: ${{ matrix.php-version }}
extensions: intl, json, mbstring, xml, mysqli, oci8, pgsql, sqlsrv, sqlite3
coverage: none
env:
Expand All @@ -66,7 +71,9 @@ jobs:
restore-keys: ${{ runner.os }}-psalm-

- name: Install dependencies
run: composer update --ansi --no-interaction
run: |
composer require sebastian/diff:^5.0 --ansi --working-dir utils
composer update --ansi --no-interaction
- name: Run Psalm analysis
run: utils/vendor/bin/psalm
13 changes: 9 additions & 4 deletions .github/workflows/test-rector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,17 @@ permissions:

jobs:
build:
name: PHP ${{ matrix.php-versions }} Analyze code (Rector)
name: PHP ${{ matrix.php-version }} Analyze code (Rector)
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
php-versions: ['8.1', '8.4']
php-version:
- '8.2'
include:
- php-version: '8.5'
composer-option: '--ignore-platform-req=php'

steps:
- name: Checkout base branch for PR
if: github.event_name == 'pull_request'
Expand All @@ -59,7 +64,7 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
php-version: ${{ matrix.php-version }}
extensions: intl

- name: Use latest Composer
Expand All @@ -79,7 +84,7 @@ jobs:
restore-keys: ${{ runner.os }}-composer-

- name: Install dependencies
run: composer update --ansi --no-interaction
run: composer update --ansi --no-interaction ${{ matrix.composer-option }}

- name: Rector Cache
uses: actions/cache@v5
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ $RECYCLE.BIN/
.env
.vagrant
Vagrantfile
user_guide_src/venv/
.python-version
user_guide_src/.python-version

#-------------------------
# Temporary Files
Expand Down
Loading
Loading