Skip to content

refactor(ui): replace the installed-extension tag cloud with a compact Composer namespace ledger. - #28

Merged
terabytesoftw merged 2 commits into
mainfrom
refactor/replace-installed-extensions
Aug 29, 2026
Merged

refactor(ui): replace the installed-extension tag cloud with a compact Composer namespace ledger.#28
terabytesoftw merged 2 commits into
mainfrom
refactor/replace-installed-extensions

Conversation

@terabytesoftw

Copy link
Copy Markdown
Contributor

Pull Request

  • Breaking change (fix or feature that would cause existing functionality to change)
  • Bugfix (non-breaking change that fixes an issue)
  • CI/build configuration
  • Documentation update
  • New feature (non-breaking change that adds functionality)
  • Refactoring (no functional changes)

@codecov

codecov Bot commented Aug 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (d99999f) to head (24b08ae).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@             Coverage Diff              @@
##                main       #28    +/-   ##
============================================
  Coverage     100.00%   100.00%            
- Complexity      1724      1744    +20     
============================================
  Files            141       141            
  Lines           6774      7065   +291     
============================================
+ Hits            6774      7065   +291     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@coderabbitai

coderabbitai Bot commented Aug 29, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

Next included review available in 49 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 617db3b6-cfc5-4f9e-a116-ef7e46cc90f8

📥 Commits

Reviewing files that changed from the base of the PR and between 4981e14 and 24b08ae.

📒 Files selected for processing (1)
  • tests/Toolbar/ToolbarDataTest.php

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 2fdd6d6f-efef-4e9a-bd2a-7f068342b1f1

📥 Commits

Reviewing files that changed from the base of the PR and between d99999f and 4981e14.

⛔ Files ignored due to path filters (1)
  • resources/assets/dist/css/debug.min.css is excluded by !**/dist/**, !**/*.min.css
📒 Files selected for processing (10)
  • CHANGELOG.md
  • resources/src/styles/main.css
  • src/Panel/Config/ConfigCardRenderer.php
  • src/Storage/RequestSummary.php
  • src/Toolbar/ToolbarData.php
  • src/View/Sidebar/SidebarSnapshot.php
  • tests/Panel/Config/ConfigCardRendererTest.php
  • tests/Storage/RequestSummaryTest.php
  • tests/Toolbar/ToolbarDataTest.php
  • tests/View/Sidebar/SidebarRendererTest.php

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout. (4)
  • GitHub Check: mutation / PHP 8.5-ubuntu-latest
  • GitHub Check: Verify Vite build reproduces dist.
  • GitHub Check: mutation / PHP 8.5-ubuntu-latest
  • GitHub Check: Verify Vite build reproduces dist.
🧰 Additional context used
🪛 PHPMD (2.15.0)
tests/View/Sidebar/SidebarRendererTest.php

[warning] 19-421: The class SidebarRendererTest has 12 public methods. Consider refactoring SidebarRendererTest to keep number of public methods under 10. (undefined)

(TooManyPublicMethods)

tests/Toolbar/ToolbarDataTest.php

[error] 21-21: Avoid using static access to class '\PHPForge\Debug\Toolbar\ToolbarData' in method 'testCreateAndWithersBuildAnImmutablePayload'. (undefined)

(StaticAccess)

tests/Panel/Config/ConfigCardRendererTest.php

[warning] 17-402: The class ConfigCardRendererTest has 12 public methods. Consider refactoring ConfigCardRendererTest to keep number of public methods under 10. (undefined)

(TooManyPublicMethods)

tests/Storage/RequestSummaryTest.php

[error] 19-19: Avoid using static access to class '\PHPForge\Debug\Storage\RequestSummary' in method 'testCreateAndWithersBuildAnImmutableSummary'. (undefined)

(StaticAccess)

src/Storage/RequestSummary.php

[warning] 157-157: Avoid excessively long variable names like $excessiveCallersCount. Keep variable name length under 20. (undefined)

(LongVariable)


[error] 230-230: The method withRequest has a boolean flag argument $ajax, which is a certain sign of a Single Responsibility Principle violation. (undefined)

(BooleanArgumentFlag)


[warning] 230-230: Avoid variables with short names like $ip. Configured minimum length is 3. (undefined)

(ShortVariable)

src/View/Sidebar/SidebarSnapshot.php

[error] 124-124: The method withCursor has a boolean flag argument $isCursor, which is a certain sign of a Single Responsibility Principle violation. (undefined)

(BooleanArgumentFlag)


[error] 217-217: The method withRequest has a boolean flag argument $isAjax, which is a certain sign of a Single Responsibility Principle violation. (undefined)

(BooleanArgumentFlag)

src/Panel/Config/ConfigCardRenderer.php

[error] 26-347: The class ConfigCardRenderer has a coupling between objects value of 16. Consider to reduce the number of dependencies under 13. (undefined)

(CouplingBetweenObjects)

🔇 Additional comments (15)
src/Panel/Config/ConfigCardRenderer.php (1)

10-19: LGTM!

Also applies to: 71-84, 95-102, 270-301, 306-314

resources/src/styles/main.css (1)

5343-5428: LGTM!

tests/Panel/Config/ConfigCardRendererTest.php (1)

102-106: LGTM!

Also applies to: 121-162

CHANGELOG.md (1)

34-34: LGTM!

src/Storage/RequestSummary.php (4)

49-70: LGTM!


176-199: LGTM!


226-269: LGTM!


157-174: 🎯 Functional Correctness

No change required based on the available contract.

withDatabase defines 0 as the default, and the repository call site passes both counters. The code does not require an omitted counter to preserve the previous value.

tests/Storage/RequestSummaryTest.php (1)

17-53: LGTM!

src/Toolbar/ToolbarData.php (3)

47-60: LGTM!


121-146: LGTM!

Also applies to: 148-168, 170-192


194-214: 🎯 Functional Correctness

No actionable issue established.

Optional wither arguments in this repository can intentionally reset values to their defaults. No contract requires withPresentation() to preserve iconBaseUrl when omitted.

tests/Toolbar/ToolbarDataTest.php (1)

19-83: LGTM!

src/View/Sidebar/SidebarSnapshot.php (1)

96-119: LGTM!

Also applies to: 124-147, 152-175, 180-207, 212-240, 245-268

tests/View/Sidebar/SidebarRendererTest.php (1)

406-419: LGTM!


📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Composer packages in the configuration panel are now organized by vendor namespace.
    • Each vendor group displays its package count and lists package names with versions in a compact layout.
    • Updated section styling improves readability and removes distracting hover effects.
  • Documentation

    • Updated the development changelog to reflect the new Composer package presentation.

Walkthrough

The change replaces the installed-extension tag cloud with a vendor-grouped Composer package ledger. It also adds immutable factory and enrichment methods to request, toolbar, and sidebar data classes, with tests for the new APIs.

Changes

Composer package ledger

Layer / File(s) Summary
Vendor-grouped package rendering
src/Panel/Config/ConfigCardRenderer.php, resources/src/styles/main.css, tests/Panel/Config/ConfigCardRendererTest.php, CHANGELOG.md
Composer packages are grouped by vendor and rendered with package counts, aligned names, and versions. CSS and changelog text describe the new ledger layout. Tests verify the grouped HTML.

Immutable data builders

Layer / File(s) Summary
Request summary factory and enrichment
src/Storage/RequestSummary.php, tests/Storage/RequestSummaryTest.php
RequestSummary gains create() and immutable methods for request, response, database, mail, and profiling data.
Toolbar payload factory and enrichment
src/Toolbar/ToolbarData.php, tests/Toolbar/ToolbarDataTest.php
ToolbarData gains create() and immutable methods for branding, navigation, panels, and presentation data.
Sidebar snapshot factory and enrichment
src/View/Sidebar/SidebarSnapshot.php, tests/View/Sidebar/SidebarRendererTest.php
SidebarSnapshot gains create() and immutable methods for cursor, navigation, request, and response state. The sidebar test helper uses the new API.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to 4981e

The PR reorganizes debug UI presentation and adds immutable data builders without introducing a concrete production or user-facing hazard; no actionable merge-blocking risk remains after normal checks and review.

Poem

A rabbit hops through grouped code,
With Composer rows in tidy mode.
New builders copy, then softly grow,
While tests confirm the fields they show.
The ledger shines; the carrots glow.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 75.76% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 33 functions across 8 files. (2 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the primary UI refactoring: replacing the installed-extension tag cloud with a Composer namespace ledger.
Description check ✅ Passed The description identifies the change as a refactoring with no functional changes, which matches the pull request objectives and changeset.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 75.76% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 33 functions across 8 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/replace-installed-extensions

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@terabytesoftw
terabytesoftw merged commit 7a3c33e into main Aug 29, 2026
43 checks passed
@terabytesoftw
terabytesoftw deleted the refactor/replace-installed-extensions branch August 29, 2026 12:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant