Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
8d92c55
feat(monorepo-toolbox): add helper script for managing monorepo packages
JoelAlphonso May 15, 2026
f5d3ae1
ci(workflows): update PHP versions and monorepo command in GitHub Act…
JoelAlphonso May 15, 2026
3ad70a9
ci(workflows): update PHP version in GitHub Actions to 8.5
JoelAlphonso May 15, 2026
9f4efa5
chore(dependencies): update composer dependencies to latest versions
JoelAlphonso May 15, 2026
9a9d0a1
chore(dependencies): downgrade PHP requirement to ^8.3 in composer.json
JoelAlphonso May 15, 2026
b6d1264
tests(phpcs): update script to use `./monorepo packages` and simplify…
JoelAlphonso May 15, 2026
dfd94ac
feat(date-helper): replace `strftime` with `IntlDateFormatter` for im…
JoelAlphonso May 15, 2026
08fff27
chore(ddev): add DDEV configuration for local development with PHP 8.…
JoelAlphonso May 19, 2026
b12447a
tests(script): simplify `phpunit` script by using `./monorepo package…
JoelAlphonso May 19, 2026
1627f42
tests(bootstrap): add `strict_types` declaration in test bootstrap file
JoelAlphonso May 19, 2026
e9eafd6
chore(dependencies): update composer.lock after dependencies upgrade
JoelAlphonso May 19, 2026
7adf894
chore(dependencies): update `phpunit` to ^12.5 and fix namespace in `…
JoelAlphonso May 19, 2026
a8ea26f
chore(tests): update PHPUnit configuration to match version 12.5 sche…
JoelAlphonso May 19, 2026
dc3f349
chore(rector): add Rector configuration for PHP 8.5 and PHPUnit upgrades
JoelAlphonso May 19, 2026
8f7a66b
chore(gitignore): update .gitignore to include PHPUnit and test-relat…
JoelAlphonso May 19, 2026
8c6dbcd
chore(monorepo): enable strict typing, upgrade to PHP 8.3, and refact…
JoelAlphonso May 19, 2026
e07c83c
chore(translator, core): add return type hints and allow dynamic prop…
JoelAlphonso May 19, 2026
c7fce1b
chore(core): add table existence cache and use modern PHP syntax
JoelAlphonso May 20, 2026
5078f99
chore(dependencies): bump Symfony dependencies to ^7.4, update Guzzle…
JoelAlphonso May 20, 2026
76b9d66
chore(dependencies): upgrade multiple dependencies including Symfony …
JoelAlphonso May 21, 2026
42c58e9
chore(core, translator): remove deprecated Symfony `MessageSelector`,…
JoelAlphonso May 21, 2026
70daf98
chore(core, admin, translator): add type hints, refactor deprecated m…
JoelAlphonso May 21, 2026
918bb2d
chore(core): add strict is_array check in `ModelStructureProperty` logic
JoelAlphonso May 21, 2026
38d1d0f
chore(translator): add `#[AllowDynamicProperties]` for PHP 8.2 compat…
JoelAlphonso May 22, 2026
3d1c3e6
chore(core): add isset check in `ModelStructureProperty`, update depr…
JoelAlphonso May 22, 2026
37fd820
chore(translator): update deprecated annotations, add return type hin…
JoelAlphonso May 22, 2026
95b0b4a
chore(admin): add return type hints and improve strict typing complia…
JoelAlphonso May 22, 2026
d6b7f9f
chore(dependencies): bump PHP_CodeSniffer to ^4.0, update composer lock
JoelAlphonso May 22, 2026
6abcad3
chore(phpcs): remove deprecated rules `NoSpaceAfterCast` and `CallTim…
JoelAlphonso May 22, 2026
c507b33
chore(phpcs): enforce strict typing by removing spaces after casts, u…
JoelAlphonso May 22, 2026
79cea4f
chore(dependencies): upgrade `mustache/mustache` to ^3.2, update comp…
JoelAlphonso May 22, 2026
6ec4fa8
chore(route-manager): fix route pattern generation logic in `setupTem…
JoelAlphonso May 22, 2026
e1d0533
chore(mustache): update namespace usage and enforce strict typing acr…
JoelAlphonso May 25, 2026
f5e7757
chore(property): add missing return type hints for `save` and `sqlExt…
JoelAlphonso May 25, 2026
3fd7602
chore(mustache): update namespace references to PSR-4 standard and en…
JoelAlphonso May 25, 2026
2bd9c36
chore(admin): replace `filter_input` with `htmlspecialchars` for impr…
JoelAlphonso May 25, 2026
ed60e31
chore(core): add `#[AllowDynamicProperties]` attribute to classes for…
JoelAlphonso May 25, 2026
c059842
chore(typing): add strict typing enhancements across various classes,…
JoelAlphonso May 25, 2026
5ccb74b
chore(authorizer): deprecate `userAllowed()` in favor of `AbstractAut…
JoelAlphonso May 25, 2026
56572cc
chore(rector): skip `DeprecatedAnnotationToDeprecatedAttributeRector`…
JoelAlphonso May 25, 2026
974baad
chore(admin): apply phpcs fixes using phpcbf
JoelAlphonso May 25, 2026
2babf02
chore(widget, revision): remove `static` return type and adjust retur…
JoelAlphonso May 25, 2026
5767547
chore(admin, phpcs): refactor to consistently use parentheses for nul…
JoelAlphonso May 25, 2026
4fef607
chore(attachment, phpcs): reorder traits and properties, enforce pare…
JoelAlphonso May 25, 2026
404f7da
chore(cache, phpcs): enforce parentheses for null coalesce expression…
JoelAlphonso May 25, 2026
e8feb4f
chore(cms, phpcs): enforce parentheses for null coalesce expression i…
JoelAlphonso May 25, 2026
7043f5f
chore(config, phpcs): enforce parentheses for null coalesce expressio…
JoelAlphonso May 25, 2026
ca7cf92
chore(model, phpcs): enforce parentheses for null coalesce expression…
JoelAlphonso May 25, 2026
9e9180a
chore(factory, phpcs): enforce parentheses for null coalesce expressi…
JoelAlphonso May 25, 2026
df5c9e6
chore(object, phpcs): enforce parentheses for null coalesce expressio…
JoelAlphonso May 25, 2026
8ddcbd9
chore(property, phpcs): enforce parentheses for null coalesce express…
JoelAlphonso May 25, 2026
3828759
chore(translator, phpcs): enforce parentheses for null coalesce expre…
JoelAlphonso May 25, 2026
1968226
chore(user, phpcs): enforce parentheses for null coalesce expressions…
JoelAlphonso May 25, 2026
f0e6c6c
chore(view, phpcs): enforce parentheses for null coalesce expression …
JoelAlphonso May 25, 2026
d0208d2
chore(admin): update return type to `static` in `ElfinderTemplate::se…
JoelAlphonso May 25, 2026
2724c0c
chore(app): update type checks and enforce stricter return casting in…
JoelAlphonso May 26, 2026
f550df0
chore(loader): update return types to `static` and specify return typ…
JoelAlphonso May 26, 2026
814c0d3
chore(attachment): update type comparisons to use strict type checks …
JoelAlphonso May 26, 2026
3ef5ce0
chore(workflow): update PHP matrix to include dependency version cons…
JoelAlphonso May 26, 2026
d418950
tests(admin): PHPUNIT: replace mock objects with concrete implementat…
JoelAlphonso May 27, 2026
341856d
tests(app): PHPUNIT: replace mock objects with concrete implementatio…
JoelAlphonso May 27, 2026
7c426e9
tests(cache): PHPUNIT: adjust test stubs and remove unused method in …
JoelAlphonso May 27, 2026
2c5f91f
tests(route, template): PHPUNIT: replace mocks with concrete implemen…
JoelAlphonso May 27, 2026
5c0248e
tests(config): PHPUNIT: replace dependency annotations with attribute…
JoelAlphonso May 28, 2026
23f6338
tests(core): PHPUNIT: enforce static data providers, remove deprecate…
JoelAlphonso May 28, 2026
6179d9e
tests(email): PHPUNIT: replace mocked traits with anonymous classes i…
JoelAlphonso May 28, 2026
e9d38e8
chore(database): enforce UTF-8 configuration only for non-SQLite driv…
JoelAlphonso May 28, 2026
cf4a96f
tests(factory): PHPUNIT: replace mock objects with anonymous classes …
JoelAlphonso May 28, 2026
60a6a97
tests(image): PHPUNIT: replace mocked abstract classes with anonymous…
JoelAlphonso May 29, 2026
c3c957a
tests(object): PHPUNIT: replace mocked traits with test doubles and a…
JoelAlphonso May 29, 2026
5e4415f
tests(property): enforce static methods, fix typos, and replace mocks…
JoelAlphonso May 29, 2026
453e4d8
tests(translator): enforce static methods, replace deprecated mocks, …
JoelAlphonso May 29, 2026
782d01b
tests(ui): PHPUNIT: replace mocked abstract classes with anonymous cl…
JoelAlphonso May 29, 2026
50334bc
tests(user): PHPUNIT: replace mocked abstract classes with anonymous …
JoelAlphonso May 29, 2026
0a2c295
tests(view): PHPUNIT: replace mocked abstract classes with anonymous …
JoelAlphonso May 29, 2026
fb999bb
tests(config): disable PHPUnit warnings and notices to prevent test s…
JoelAlphonso May 29, 2026
48771ae
chore(deps): add `ext-pdo_mysql` as a required extension in composer.…
JoelAlphonso May 29, 2026
1e1e248
chore(deps): build composer.lock
JoelAlphonso May 29, 2026
364906c
tests(script): streamline test_package function by using phpunit.xml.…
JoelAlphonso Jun 1, 2026
247a6cd
tests: update PHPUnit configurations to use bootstrap scripts and mod…
JoelAlphonso Jun 1, 2026
35d2af4
tests(workflow): add TEST_MODE environment variable for PHPUnit runs …
JoelAlphonso Jun 1, 2026
3d7d577
tests(user): switch from $_ENV to getenv for TEST_MODE detection in b…
JoelAlphonso Jun 1, 2026
c610168
tests(workflow): set TEST_MODE environment variable in GitHub Actions…
JoelAlphonso Jun 1, 2026
37b5682
tests(script): set TEST_MODE variable inline for package testing and …
JoelAlphonso Jun 1, 2026
5f15581
tests(bootstrap): replace $_ENV with getenv for TEST_MODE detection a…
JoelAlphonso Jun 1, 2026
00139fa
tests(config): disable PHPUnit warnings and notices across all packag…
JoelAlphonso Jun 1, 2026
9245ddd
style(config): fix PSR-12 formatting for __serialize() and __unserial…
JoelAlphonso Jun 1, 2026
f15eb63
chore(build): remove obsolete code coverage reports for image effect …
JoelAlphonso Jun 1, 2026
05797be
chore(gitignore): add build report directories to ignore list
JoelAlphonso Jun 1, 2026
dfa5069
tests(config): add failOnDeprecation and failOnPhpunitWarning to PHPU…
JoelAlphonso Jun 1, 2026
c8c1a8b
refactor(core): remove #[Override] attributes and replace arrow funct…
JoelAlphonso Jun 1, 2026
09b8b98
refactor(rector): add RemoveOverrideAttributeFromPropertiesRector to …
JoelAlphonso Jun 1, 2026
c3e0d39
refactor(rector): downgrade PHP version compatibility from 8.5 to 8.3…
JoelAlphonso Jun 1, 2026
9fef649
refactor(composer): update PSR-4 autoload mappings to include Rector …
JoelAlphonso Jun 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
  •  
  •  
  •  
16 changes: 16 additions & 0 deletions .ddev/config.yaml

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a .gitattributes file and exclude .ddev with export-ignore.

https://php.watch/articles/composer-gitattributes

Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: charcoal
type: php
docroot: ""
php_version: "8.5"
webserver_type: apache-fpm
xdebug_enabled: true
additional_hostnames: []
additional_fqdns: []
database:
type: mariadb
version: "10.11"
use_dns_when_possible: true
composer_version: "2"
web_environment:
- XDEBUG_MODE=coverage,debug,develop
corepack_enable: false
2 changes: 2 additions & 0 deletions .ddev/php/php-xdebug.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[PHP]
xdebug.mode=coverage,debug,develop
18 changes: 14 additions & 4 deletions .github/workflows/php.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: PHP Testing

on:
push:
branches: [ main ]
# branches: [ main ]
pull_request:
branches: [ main ]

Expand All @@ -28,15 +28,15 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.0
php-version: 8.5
coverage: none

- name: Install Composer dependencies
uses: ramsey/composer-install@v2

- name: Output list of packages as JSON
id: output_data
run: echo "matrix=$(vendor/bin/monorepo-builder packages-json)" >> $GITHUB_OUTPUT
run: echo "matrix=$(./monorepo packages -t json)" >> $GITHUB_OUTPUT

outputs:
matrix: ${{ steps.output_data.outputs.matrix }}
Expand All @@ -48,7 +48,13 @@ jobs:

strategy:
matrix:
php-versions: ['7.4', '8.0']
php-versions:
- '8.3'
- '8.4'
- '8.5'
include:
- php-versions: '8.3'
dependencies: 'highest'
package: ${{fromJson(needs.provide_packages_json.outputs.matrix)}}

steps:
Expand All @@ -67,6 +73,8 @@ jobs:

- name: Install Composer dependencies
uses: ramsey/composer-install@v2
with:
dependency-versions: ${{ matrix.dependencies }}

- name: Install ImageMagick
if: ${{ matrix.package == 'image' }}
Expand All @@ -82,4 +90,6 @@ jobs:
run: tests/script/phpcs --ci ${{ matrix.package }}

- name: Run PHPunit for all packages
env:
TEST_MODE: PACKAGE
run: tests/script/phpunit --ci ${{ matrix.package }}
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
.phpunit.result.cache

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With .phpunit.cache, I think we can remove .phpunit.result.cache.

phpunit.xml.dist.bak

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I recommend removing this rule. .bak is a generic extension used by various tools. It should be ignored globally rather than ignored at this specific level and file name.

.phpunit.cache
charcoal_test
node_modules/
packages/**/composer.lock
Expand All @@ -7,3 +9,6 @@ phpstan.neon
phpunit.xml
psalm.xml
vendor/
tests/logs
build/report/
packages/**/build/report
35 changes: 21 additions & 14 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,33 +32,35 @@
}
],
"require": {
"php": "^7.4 || ^8.0",
"php": "^8.3",
"ext-fileinfo": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-pdo": "*",
"ext-pdo_mysql": "*",
"ext-simplexml": "*",
"ext-spl": "*",
"assetic/framework": "^3.1",
"barryvdh/elfinder-flysystem-driver": "^0.3",
"erusev/parsedown": "^1.7",
"guzzlehttp/guzzle": "^6.0 || ^7.0",
"kriswallsmith/assetic": "^1.4",
"laminas/laminas-permissions-acl": "^2.8",
"league/climate": "^3.2",
"league/flysystem": "^1.0",
"mcaskill/php-html-build-attributes": "^1.0",
"monolog/monolog": "^1.17",
"phpmailer/phpmailer": "~6.0",
"pimple/pimple": "^3.0",
"psr/cache": "^1.0",
"psr/cache": "^2.0",
"psr/container": "^1.0",
"psr/http-message": "^1.0",
"psr/log": "^1.0",
"seld/jsonlint": "^1.9",
"slim/slim": "^3.7",
"studio-42/elfinder": "2.1.64",
"symfony/translation": "^3.4",
"tedivm/stash": "~0.16",
"slim/slim": "^3.13",
"studio-42/elfinder": "^2.1.64",
"symfony/polyfill-php85": "^1.37",
"symfony/translation": "^7.2",
"tedivm/stash": "^1.1",
"vlucas/phpdotenv": "^5.4"
},
"require-dev": {
Expand All @@ -68,14 +70,16 @@
"league/flysystem-memory": "^1.0",
"league/flysystem-sftp": "^1.0",
"mockery/mockery": "^1.0",
"mustache/mustache": "^2.11",
"mustache/mustache": "^3.2",
"php-coveralls/php-coveralls": "^2.2",
"phpstan/phpstan": "^1.6",
"phpunit/phpunit": "^9.5",
"squizlabs/php_codesniffer": "^3.5",
"symfony/yaml": "^3.0",
"symplify/monorepo-builder": "^10.2",
"twig/twig": "^3.4"
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^12.5",
"rector/rector": "^2.4",
"squizlabs/php_codesniffer": "^4.0",
"symfony/yaml": "^7.2",
"symplify/monorepo-builder": "^12.7",
"twig/twig": "^3.4",
"yoast/phpunit-polyfills": "^4.0"
},
"autoload": {
"psr-4": {
Expand Down Expand Up @@ -123,6 +127,9 @@
"packages/ui/tests/Charcoal",
"packages/user/tests/Charcoal/",
"packages/view/tests/Charcoal"
],
"Charcoal\\Rector\\Property\\": [
"src/Rector/Property/"
]
}
},
Expand Down
Loading
Loading