Skip to content

Add publisher discovery, namespace profiles, and package URLs - #183

Merged
josbeir merged 9 commits into
masterfrom
feature/namespace-pages
Nov 13, 2026
Merged

josbeir merged 9 commits into
masterfrom
feature/namespace-pages

Conversation

@josbeir

@josbeir josbeir commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Adds /publishers to discover the people and teams behind the catalogue. Rankings default to monthly downloads of plugins compatible with the newest tracked CakePHP major. Visitors can select older majors or all versions, rank by lifetime downloads, stars, or plugin count, and search and paginate with URL-backed Interact state. Rows include avatars or initials, rank badges, two popular plugins, exact accessible counts, and latest release dates. The directory does not fetch GitHub API metadata.

Public namespace profiles live at /plugins/{namespace} and plugin details at /plugins/{namespace}/{name}. Profiles retain the catalogue filters and include a themed animated hero, stable staggered counters, GitHub/Packagist links, and lazily loaded avatars and bios with DaisyUI skeletons and fallbacks. The Back link returns to the referring local page with its filters, falling back to the catalogue for direct visits. Navigation and forms also work without JavaScript.

Imports derive an indexed Composer namespace and store monthly downloads. Apply both new migrations and clear schema metadata when deploying. Existing monthly counts remain unknown until the next successful Packagist sync; incomplete publisher totals are not presented as zero or partial figures. Monthly downloads cover all releases of compatible packages, rather than downloads attributed to a specific CakePHP version.

GitHub profile and login membership requests share a container-injected API service, with optional GITHUB_API_TOKEN authentication and public avatar fallbacks under rate limiting. Routine dependencies use autowiring, with resolution caching when debug is disabled; Interact island roots remain fresh.

Validation:

  • PHP: 184 tests, 879 assertions; four existing incomplete tests.
  • Playwright: all 54 browser tests pass, including responsive themes, count-up stability, filtered return links, history, and JavaScript-disabled browsing.
  • Production build, PHPCS, PHPStan, and Rector pass.
  • Publisher aggregation, compatibility filtering, duplicate-tag handling, and unknown monthly counts also pass against MariaDB.

@josbeir
josbeir marked this pull request as draft November 13, 2026 14:02
@josbeir
josbeir force-pushed the feature/namespace-pages branch from bf9c036 to 83529bf Compare November 13, 2026 14:25
@josbeir josbeir changed the title Add namespace pages and Composer package URLs Add publisher discovery, namespace profiles, and package URLs Nov 13, 2026
@josbeir
josbeir marked this pull request as ready for review November 13, 2026 15:45
@josbeir
josbeir merged commit c18fcdf into master Nov 13, 2026
3 checks passed
@josbeir
josbeir deleted the feature/namespace-pages branch November 13, 2026 15: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