Skip to content
Open
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 37 additions & 34 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,44 +1,47 @@
{
"name": "xoops/base-requires",
"license": "GPL-2.0-or-later",
"type": "project",
"description": "Primary dependencies for XOOPS/XoopsCore",
"type": "metapackage",
"description": "Primary dependencies for XOOPS/XoopsCore (PHP 8.4+)",
"require": {
"php": ">7.1",
"php": "^8.4",
Comment on lines +4 to +7
Copy link

@coderabbitai coderabbitai bot Feb 9, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Confirm intended PHP floor (8.4 vs PR objective “8.2+”).

The PR objective says PHP 8.2+, but the manifest now requires ^8.4 and advertises PHP 8.4+. If that higher floor isn’t intentional, it will exclude 8.2/8.3 users.

✅ Possible alignment (if 8.2+ is intended)
-    "description": "Primary dependencies for XOOPS/XoopsCore (PHP 8.4+)",
+    "description": "Primary dependencies for XOOPS/XoopsCore (PHP 8.2+)",
...
-        "php": "^8.4",
+        "php": "^8.2",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"type": "metapackage",
"description": "Primary dependencies for XOOPS/XoopsCore (PHP 8.4+)",
"require": {
"php": ">7.1",
"php": "^8.4",
"type": "metapackage",
"description": "Primary dependencies for XOOPS/XoopsCore (PHP 8.2+)",
"require": {
"php": "^8.2",
🤖 Prompt for AI Agents
In `@composer.json` around lines 4 - 7, The composer.json currently advertises and
requires PHP 8.4 ("description": "Primary dependencies for XOOPS/XoopsCore (PHP
8.4+)" and the "php" entry under "require" set to "^8.4"); confirm whether the
project target is PHP 8.2+ and if so update the "php" requirement from "^8.4" to
the intended floor (e.g. "^8.2") and adjust the "description" text to "PHP 8.2+"
so the manifest and messaging align; if 8.4 is intentional, confirm the PR
objective and keep as-is.

Copy link
Author

Choose a reason for hiding this comment

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

PHP 8.4 is intentional. The PR title is outdated from an earlier iteration — updating it now to "composer updates PHP 8.4+".

The ^8.4 floor is required because:

  • endroid/qr-code ^6.0.9 requires PHP 8.4+ (v5.x has implicit-nullable deprecation warnings on 8.4)
  • Several other package upgrades (league/container, scssphp, wikimedia/less.php) were specifically chosen for their PHP 8.4 implicit-nullable fixes
  • The project goal is to use PHP 8.4 as the new minimum, then fix XOOPS core code against it

Dropping to ^8.2 would force downgrading endroid/qr-code and leave deprecation warnings in several other packages. Keeping as-is.

Copy link

Choose a reason for hiding this comment

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

🧩 Analysis chain

🌐 Web query:

endroid qr-code version 6.0.9 PHP requirements

💡 Result:

For endroid/qr-code v6.0.9, you need PHP 8.2+ (v6 dropped PHP 8.1). [1][2]

Note: newer 6.1.x releases require PHP ^8.4, so if you’re on PHP 8.2/8.3 you’ll want to pin to 6.0.x (e.g., 6.0.9). [3]

Sources: [1] [2] [3]


🌐 Web query:

endroid qr-code version 6.1 PHP requirements

💡 Result:

For endroid/qr-code v6.1.x, Composer requires:

  • PHP: ^8.4 (PHP 8.4+)
  • Dependency: bacon/bacon-qr-code ^3.0 [1]

Common optional requirements (depending on what you use):

  • ext-gd (to write PNG images)
  • khanamiryan/qrcode-detector-decoder (image validation)
  • setasign/fpdf (PDF writer) [1]

Sources: [1]


@mambax7, thank you for the clarification! That makes perfect sense.

I can confirm that endroid/qr-code ^6.0.9 will indeed pull in 6.1.x versions (which require PHP 8.4+), so the ^8.4 floor is correctly aligned with your dependency constraints. Your reasoning about avoiding implicit-nullable deprecation warnings by targeting PHP 8.4 across the dependency chain is sound.

Appreciate the update to the PR title to reflect the actual intent!


✏️ Learnings added
Learnt from: mambax7
Repo: XOOPS/base-requires PR: 50
File: composer.json:4-7
Timestamp: 2026-02-09T08:48:18.320Z
Learning: The XOOPS/XoopsCore project (in xoops/base-requires) is targeting PHP 8.4+ as the new minimum version to avoid implicit-nullable deprecation warnings and ensure compatibility with modern dependency versions.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

"ext-PDO": "*",
"ext-session": "*",
"ext-pcre": "*",
"ext-json": "*",
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

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

Composer package names are normalized to lowercase; using "ext-PDO" is inconsistent with the other ext-* requirements (e.g., ext-json/ext-mbstring) and can be confusing. Consider renaming it to "ext-pdo" for consistency and to match Composer docs.

Copilot uses AI. Check for mistakes.
"league/container": "~3.0",
"doctrine/dbal": "2.9.*",
"psr/log": "1.1.*",
"patchwork/utf8": "^1.3",
"geekwright/assetic-fork": "^2.0",
"symfony/console": "^4.2",
"ptachoire/cssembed": "1.0.*",
"lmammino/jsmin4assetic": "1.0.*",
"wikimedia/less.php": "^2.0",
"scssphp/scssphp": "^1.0",
"natxet/cssmin": "3.0.*",
"patchwork/jsqueeze": "~2.0.5",
"kint-php/kint": "^3.0",
"symfony/yaml": "^4.2",
"tedivm/stash": "^0.15",
"dflydev/apache-mime-types": "1.0.*",
"geekwright/regdom": "^1.0",
"smarty/smarty": "^3.1",
"punic/punic": "^3",
"moneyphp/money": "^3.0",
"ext-mbstring": "*",
"ext-pcre": "*",
"ext-session": "*",
Comment on lines +10 to +12
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

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

The requirements include both "ext-mbstring" and "symfony/polyfill-mbstring". If mbstring is mandatory (as implied by ext-mbstring), the polyfill is redundant; if mbstring should be optional, consider dropping the ext-mbstring requirement and relying on the polyfill (or documenting why both are needed).

Copilot uses AI. Check for mistakes.
"assetic/framework": "^3.1",
"dflydev/apache-mime-types": "^1.0",
"doctrine/dbal": "^4.3.2",
"embed/embed": "^4.4",
"endroid/qr-code": "^6.0.9",
"ezyang/htmlpurifier": "^4.18",
"firebase/php-jwt": "^6.10.2",
"geekwright/po": "^2.0",
"embed/embed": "^3.0.0",
"ezyang/htmlpurifier": "^4.8.0",
"firebase/php-jwt": "^5.0.0",
"webmozart/assert": "^1.2",
"monolog/monolog": "^1.20.0",
"maximebf/debugbar": "^1.11",
"tecnickcom/tcpdf": "6.2.*",
"endroid/qr-code": "^3.5.0",
"kint-php/kint": "^6.0",
"league/container": "^4.2.3",
"matthiasmullie/minify": "^1.3",
"moneyphp/money": "^4.5",
"monolog/monolog": "^3.0",
"php-debugbar/php-debugbar": "^3.3",
"phpmailer/phpmailer": "^6.9.3",
"psr/log": "^2.0|^3.0",
"ptachoire/cssembed": "^1.0",
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check ptachoire/cssembed package info
curl -s https://repo.packagist.org/p2/ptachoire/cssembed.json | jq '.packages["ptachoire/cssembed"][0:3] | .[] | {version, require, time}'

Repository: XOOPS/base-requires

Length of output: 336


Consider replacing ptachoire/cssembed with an actively maintained alternative.

This package was last updated in 2013 and specifies only php >= 5.3.0, with no explicit support for PHP 8.4. Using an unmaintained dependency poses compatibility and security risks.

🤖 Prompt for AI Agents
In `@composer.json` at line 29, The dependency "ptachoire/cssembed" in
composer.json is unmaintained; remove it and replace with an actively maintained
alternative (e.g., sabberworm/php-css-parser or another modern CSS
minifier/parser) by updating composer.json to require the new package, running
composer update, and changing any code that references ptachoire/cssembed to the
new library's API (search for usages of "ptachoire/cssembed" or
classes/functions from that package and adapt them to the replacement's
class/method names); run the test suite and static analysis to ensure PHP 8.4
compatibility and adjust code where APIs differ.

"punic/punic": "^3.8.1",
"scssphp/scssphp": "^2.0",
"smarty/smarty": "^4.5.6",
"stefangabos/zebra_image": "^2.2",
"phpmailer/phpmailer": "^6.0"
"symfony/console": "^6.4|^7.2",
"symfony/polyfill-mbstring": "^1.31",
"symfony/process": "^6.4|^7.2",
"symfony/yaml": "^6.4|^7.2",
"tecnickcom/tcpdf": "^6.10",
"tedivm/stash": "^1.2.1",
"webmozart/assert": "^1.2",
"wikimedia/less.php": "^5.0",
"xoops/regdom": "^2.0"
},
"conflict": {
"smarty/smarty": ">=5.0"
}
}