User tests: Successful: Unsuccessful:
update php-debugbar to 3.8.1
use the debug plugin
use old version 2.2.6
use last version 3.8.1
Please select:
Documentation link for guide.joomla.org:
No documentation changes for guide.joomla.org needed
Pull Request link for manual.joomla.org:
No documentation changes for manual.joomla.org needed
| Status | New | ⇒ | Pending |
| Category | ⇒ | External Library Composer Change |
| Labels |
Added:
Composer Dependency Changed
PR-6.3-dev
|
||
| Category | External Library Composer Change | ⇒ | External Library Composer Change JavaScript NPM Change Front End Plugins |
| Labels |
Added:
NPM Resource Changed
|
||
| Title |
|
||||||
should be fixed
i dont consider removing the joomla logo a fix
should be fixed now
all the things I reported before are now fixed. Everything seems to be working now - i guess it needs a review of the existing js and css to see if theyre all still needed
I have tested this item 🔴 unsuccessfully on 5871966
Verdict: needs changes. The bar itself works (all tabs, admin and site, no console errors), but two things regress.
Storage/FileStorage.php now writes plain <id>.json into administrator/cache/plg_system_debug_administrator/ (site: cache/plg_system_debug_site/). Before it wrote <id>.php with a <?php die(); ?> prefix, so the web server returned nothing.
"Track request history" on, logged in as admin, then without cookies GET /administrator/cache/plg_system_debug_administrator/<id> |
before | after |
|---|---|---|
| response | 200, 0 bytes | 200, 61 KB JSON with all collectors |
admin session ID ($_COOKIE / $_SERVER) in the file |
(not readable) | yes, in 5 of 7 files |
The IDs are random and directory listing is off, so it needs a leaked ID, but the protection the override existed for is gone. Fix: keep the .php extension and the die() prefix in the override (makeFilename(), get(), find(), and prune() which now only looks for .json), or store the files outside the web root.
QueryCollector still sends explain, explain_col and profile, but the stock SQLQueriesWidget of 3.x only renders params and backtrace. Before, each query had an "Explain" link with the EXPLAIN table (same query SELECT * FROM jos_users WHERE id = :userid: before table with select_type, possible_keys …; after only Params and Backtrace). Either render them (extend the widget) or drop the two options and the collection.
ListWidget now shows array:2 [▶"/var/www/html/language/en-GB/mod_login.i…", 33 ] per error instead of the relative file:line link of the removed languageErrorsWidget. Map the data to strings or keep a small widget.Debug.php:257 keeps ['jquery'] as dependency of debug.min.js, which doesn't use it (debugbar 3 doesn't either). Same for fontawesome on debug.css.widgets/sqlqueries/*, widgets/languageErrors/*, and the widget.css of languageFiles / languageStrings. They can go (plus the removed-files list in script.php).strict-dynamic) the bar doesn't load, because renderHead() prints <script src> without nonce (debugbar.min.js blocked → "PhpDebugBar is not defined"). 3.x has setCspNonce(); setting it before renderHead() and using the parent's output would cover it.6.3-dev + PR (DDEV, PHP 8.3, MariaDB 11.8), debug system and language debug on, all plugin options on. Before = same instance with the debug plugin files and php-debugbar 2.2.6 from 6.3-dev. Info, Request, Session, Profile, Queries (params, backtrace, copy, sort), Loaded, Untranslated (stack), Errors, Settings, and the request history list all work. php-cs-fixer and phpstan clean.
I have tested this item 🔴 unsuccessfully on 5871966
Verdict: needs changes. The bar itself works (all tabs, admin and site, no console errors), but two things regress.
Storage/FileStorage.php now writes plain <id>.json into administrator/cache/plg_system_debug_administrator/ (site: cache/plg_system_debug_site/). Before it wrote <id>.php with a <?php die(); ?> prefix, so the web server returned nothing.
"Track request history" on, logged in as admin, then without cookies GET /administrator/cache/plg_system_debug_administrator/<id> |
before | after |
|---|---|---|
| response | 200, 0 bytes | 200, 61 KB JSON with all collectors |
admin session ID ($_COOKIE / $_SERVER) in the file |
(not readable) | yes, in 5 of 7 files |
The IDs are random and directory listing is off, so it needs a leaked ID, but the protection the override existed for is gone. Fix: keep the .php extension and the die() prefix in the override (makeFilename(), get(), find(), and prune() which now only looks for .json), or store the files outside the web root.
QueryCollector still sends explain, explain_col and profile, but the stock SQLQueriesWidget of 3.x only renders params and backtrace. Before, each query had an "Explain" link with the EXPLAIN table (same query SELECT * FROM jos_users WHERE id = :userid: before table with select_type, possible_keys …; after only Params and Backtrace). Either render them (extend the widget) or drop the two options and the collection.
ListWidget now shows array:2 [▶"/var/www/html/language/en-GB/mod_login.i…", 33 ] per error instead of the relative file:line link of the removed languageErrorsWidget. Map the data to strings or keep a small widget.Debug.php:257 keeps ['jquery'] as dependency of debug.min.js, which doesn't use it (debugbar 3 doesn't either). Same for fontawesome on debug.css.widgets/sqlqueries/*, widgets/languageErrors/*, and the widget.css of languageFiles / languageStrings. They can go (plus the removed-files list in script.php).strict-dynamic) the bar doesn't load, because renderHead() prints <script src> without nonce (debugbar.min.js blocked → "PhpDebugBar is not defined"). 3.x has setCspNonce(); setting it before renderHead() and using the parent's output would cover it.6.3-dev + PR (DDEV, PHP 8.3, MariaDB 11.8), debug system and language debug on, all plugin options on. Before = same instance with the debug plugin files and php-debugbar 2.2.6 from 6.3-dev. Info, Request, Session, Profile, Queries (params, backtrace, copy, sort), Loaded, Untranslated (stack), Errors, Settings, and the request history list all work. php-cs-fixer and phpstan clean.
thanks for the detaild feedback @tecpromotion
i should have adressed them minus this one:
Now unused but still built and shipped: widgets/sqlqueries/, widgets/languageErrors/, and the widget.css of languageFiles / languageStrings. They can go (plus the removed-files list in script.php).
cause i don't think is true
This test was carried out with the assistance of AI and then verified manually.
The points from my last test are fixed, but two CSS leftovers break the display.
<id>.php with the die() prefix again: fetched without cookies → 200, 0 bytes. History list loads, old .json files get converted.file:line again.strict-dynamic): bar and all widget scripts get the nonce and load, site and admin, no console errors.Clicking a query row removes the hidden attribute from the params table (debugbar 3 toggles table.hidden), but sqlqueries/widget.css still has display: none on table.phpdebugbar-widgets-params, so it stays invisible (computed display: none, height 0). Fix (tested): drop display: none from that rule. Then params + backtrace open on click and close again.
You're right that sqlqueries and languageErrors are used again. But getAssets() in LanguageFilesCollector and LanguageStringsCollector now only returns js (6.3-dev also returned css), so their widget.min.css is built but never loaded. "Loaded" has no monospace, borders or green rows any more, "Untranslated" no column spacing.
Fix (tested): add the line back in both collectors:
'css' => Uri::root(true) . '/media/plg_system_debug/widgets/languageFiles/widget.min.css',(languageStrings the same.) Same trap as 1. there: languageStrings/widget.css has display: none on table.phpdebugbar-widgets-callstack, while the widget toggles hidden. Once the CSS loads, "Stack" no longer opens, so drop that display: none too.
plus one more on hover - made a video to show it
the dark-theme issues should have been fixed
for the last #48731 (comment) i'm unable to replicate
the dark-theme issues should have been fixed
for the last #48731 (comment) i'm unable to replicate
the test failure have nothing to do with the pr
the dark-theme issues should have been fixed
for the last #48731 (comment) i'm unable to replicate
the test failure have nothing to do with the pr
This pull request has conflicts, please resolve those before we can evaluate the pull request.
| Labels |
Added:
Conflicting Files
|
||
| Labels |
Removed:
Conflicting Files
|
||