Skip to content

v4.0.0 - Complete Bundle Redesign with Modern Architecture#6

Merged
calliostro merged 34 commits into
mainfrom
feature/v4.0.0-beta
Dec 1, 2025
Merged

v4.0.0 - Complete Bundle Redesign with Modern Architecture#6
calliostro merged 34 commits into
mainfrom
feature/v4.0.0-beta

Conversation

@calliostro
Copy link
Copy Markdown
Owner

This release represents a fundamental architectural overhaul, prioritizing developer experience, type safety, and Symfony integration best practices.

Breaking Changes

  • Authentication: Personal Access Token support added, OAuth 1.0a built-in without external dependencies
  • Method Naming: All 60 methods follow consistent verb-first pattern (getArtist, listArtistReleases, searchDatabase)
  • Clean Parameters: Array parameters eliminated - direct typed parameters with camelCase naming
  • Rate Limiting: Legacy throttle system replaced with Symfony Rate Limiter component integration
  • Configuration: Simplified structure with modern Symfony conventions

Migration Required

This is a new installation, not an upgrade from v3.x. All configuration and method calls must be updated. See CHANGELOG.md and UPGRADE.md for detailed migration guide.

Features

  • Modern Symfony 6.4 | 7.x | 8.x integration
  • Full type safety with automatic parameter validation
  • Perfect IDE autocomplete support
  • PHP 8.1 - 8.5 compatibility
  • 100% test coverage with PHPStan Level 8
  • Zero configuration mode for public API access

Documentation

- Upgrade to calliostro/php-discogs-api v4.0.0-beta.1 (breaking changes)
- Implement Symfony 6.4+ configuration with modern best practices
- Add comprehensive integration test system with real API testing
- Modernize bundle configuration validation and error handling
- Clean up README structure and remove outdated upgrade notices
- Complete rewrite for PHP 8.1+ and modern Symfony ecosystem
- Allow exact version constraints for beta/alpha/rc versions
- Use --no-check-version flag instead of --strict for pre-release branches
- Maintain strict validation for stable releases
- Remove optional OAuth token references from environment setup
- Simplify credential requirements to essential secrets only
- Focus on the three secrets actually used in CI pipeline
…integration

- Implement all 60 Discogs API methods with named parameters
- Integrate Symfony Rate Limiter component
- Remove legacy throttle system and array parameters
…e credential validation and support for environment variables. Update tests accordingly.
….5, ensuring stricter validation for Symfony compatibility
…iting documentation; refine composer.json dependencies for Symfony 8.0 compatibility; enhance MockOAuthToken class definition.
…Stan analysis commands and documentation for clarity
Copilot AI review requested due to automatic review settings December 1, 2025 21:54
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Dec 1, 2025

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR represents a complete architectural rewrite of the Discogs Bundle for Symfony, introducing v4.0.0 with breaking changes and modern best practices.

Summary

The bundle has been completely redesigned from the ground up, transitioning from a v3.x architecture to a modern, type-safe implementation. This is not an incremental upgrade but a fresh start that prioritizes developer experience, modern PHP 8.1+ features, and simplified configuration.

Key Changes

  • Authentication modernization: Added Personal Access Token support and built-in OAuth 1.0a without external dependencies
  • API redesign: All 60 methods refactored with consistent verb-first naming and camelCase parameters instead of arrays
  • Configuration simplification: Removed complex OAuth and throttle configurations, replaced with modern Symfony Rate Limiter integration
  • Testing improvements: Comprehensive unit and integration test suites with proper separation

Reviewed changes

Copilot reviewed 49 out of 49 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
composer.json Updated dependencies to require calliostro/php-discogs-api ^4.0, moved Symfony deps to require-dev
src/CalliostroDiscogsBundle.php Added getPath() and getContainerExtension() implementations
src/DependencyInjection/CalliostroDiscogsExtension.php Complete rewrite with factory-based client creation and rate limiter integration
src/DependencyInjection/Configuration.php Simplified configuration tree with personal_access_token, consumer credentials, and rate_limiter options
src/DependencyInjection/DiscogsClientFactory.php New factory service for runtime credential validation with helpful error messages
src/Middleware/RateLimiterMiddleware.php New Guzzle middleware integrating Symfony Rate Limiter component
src/Resources/config/services.php New PHP-based service configuration replacing XML
tests/Unit/* Comprehensive unit test suite for bundle integration, configuration, and dependency injection
tests/Integration/* Integration tests for public and authenticated API endpoints
tests/Fixtures/TestKernel.php Enhanced test kernel with better cache management
README.md, UPGRADE.md, CHANGELOG.md, DEVELOPMENT.md Complete documentation overhaul with migration guides
phpunit.xml.dist Updated with separate test suites for Unit and Integration tests
.github/workflows/ci.yml Enhanced CI workflow with Symfony version matrix testing

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread CHANGELOG.md
Comment thread UPGRADE.md Outdated
Comment thread composer.json Outdated
Comment thread src/Middleware/RateLimiterMiddleware.php Outdated
Comment thread composer.json Outdated
@calliostro calliostro merged commit a1e3478 into main Dec 1, 2025
34 checks passed
@calliostro calliostro deleted the feature/v4.0.0-beta branch December 1, 2025 22:21
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.

3 participants