Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
09031f4
Update to v4.0.0-beta.1 with breaking changes
calliostro Sep 12, 2025
42d0529
Temporarily relax composer validation for beta versions
calliostro Sep 12, 2025
43fd098
Fix PHPStan baseline for Symfony 7.4/8.0 compatibility
calliostro Sep 12, 2025
b417295
Fix CI composer validation for beta branches
calliostro Sep 12, 2025
5f79c8d
Clean up integration test documentation
calliostro Sep 12, 2025
ffcf4c9
Remove outdated author information from composer.json
calliostro Sep 12, 2025
7b4997e
Update changelog and README for consistency and clarity
calliostro Sep 12, 2025
37ef509
Complete v4.0 redesign: Modern architecture and Symfony Rate Limiter …
calliostro Sep 13, 2025
edd9961
Remove standalone PHP tests from CI - bundle requires Symfony
calliostro Sep 13, 2025
9f31ec5
Remove standalone PHP dev stability tests - all tests require Symfony
calliostro Sep 13, 2025
313e566
Update changelog and composer.json for v4.0.0-beta.3 release
calliostro Oct 26, 2025
41b9c1a
Refactor CI configuration and service loading for Symfony compatibility
calliostro Oct 26, 2025
536da3c
Update code quality check instructions for Symfony 7.4 compatibility
calliostro Nov 8, 2025
a2b282e
Add Discogs API credentials to CI test environments for improved test…
calliostro Nov 8, 2025
bde09da
Refactor configuration validation and client factory to enable runtim…
calliostro Nov 12, 2025
62a2ed2
Clarify Discogs API credential setup instructions for improved consis…
calliostro Nov 12, 2025
0eee8b0
Clarify Discogs API credential setup instructions for improved consis…
calliostro Nov 13, 2025
24e323d
Update .gitattributes to refine export-ignore rules
calliostro Dec 1, 2025
46de34e
Update CI configuration to remove 'allowed-to-fail' for PHP 8.4 and 8…
calliostro Dec 1, 2025
1d1a30a
Update composer.json to require stable versions of dependencies and i…
calliostro Dec 1, 2025
8c77d03
Refactor CI workflow to use Composer commands for testing and coverage
calliostro Dec 1, 2025
7188142
Update DEVELOPMENT.md and README.md for improved testing and rate lim…
calliostro Dec 1, 2025
959b826
Refactor PHPStan analysis commands for Symfony version compatibility
calliostro Dec 1, 2025
c0d9e3e
Add PHPStan baseline configuration for Symfony 6.4 and update analysi…
calliostro Dec 1, 2025
c136ef8
Refactor PHPStan analysis for Symfony versions; remove obsolete basel…
calliostro Dec 1, 2025
728d34e
Update CI configuration for Symfony version compatibility; adjust PHP…
calliostro Dec 1, 2025
f923791
Fix Symfony version check in PHPStan analysis for legacy support
calliostro Dec 1, 2025
f12d64e
Update Symfony version specification for CI compatibility
calliostro Dec 1, 2025
d1c8557
Add comprehensive RateLimiterMiddleware unit tests for complete code …
calliostro Dec 1, 2025
02e177e
Update system requirements to reflect stable v4.0.0 release
calliostro Dec 1, 2025
0e15fac
Update require-dev dependencies to support all compatible Symfony ver…
calliostro Dec 1, 2025
b90b6d9
Fix rate limiter retry logic to properly loop until request is accepted
calliostro Dec 1, 2025
56d5627
Add explicit Symfony bundle dependencies to require section
calliostro Dec 1, 2025
c425d79
Remove duplicate Symfony dependencies from require-dev section
calliostro Dec 1, 2025
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
33 changes: 33 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Normalize line endings
* text=auto

# PHP files
*.php text eol=lf diff=php

# Config files
*.json text eol=lf
*.md text eol=lf
*.neon text eol=lf
*.xml text eol=lf
*.yaml text eol=lf
*.yml text eol=lf

# Exclude from releases
.editorconfig export-ignore
.gitattributes export-ignore
.github/ export-ignore
.gitignore export-ignore
.markdownlint.json export-ignore
.php-cs-fixer.php export-ignore
.phpstan/ export-ignore
.phpunit.* export-ignore
codecov.yml export-ignore
coverage/ export-ignore
coverage.clover export-ignore
coverage.xml export-ignore
DEVELOPMENT.md export-ignore
phpstan/ export-ignore
phpunit.xml* export-ignore
tests/ export-ignore
var/ export-ignore
vendor/ export-ignore
5 changes: 0 additions & 5 deletions .github/phpstan/generic-baseline.neon

This file was deleted.

109 changes: 56 additions & 53 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
branches:
- 'main'
- 'legacy/*' # Legacy branches: legacy/v3.x
- 'feature/*' # Feature branches: feature/new-feature
- 'feature/*' # Feature branches: feature/new-feature
- 'hotfix/*' # Hotfix branches: hotfix/urgent-fix
- 'release/*' # Release branches: release/v4.0.0
pull_request:
Expand All @@ -22,81 +22,58 @@ jobs:
fail-fast: false
matrix:
include:
# Core PHP version testing
- php: '8.1'
allowed-to-fail: false
- php: '8.2'
allowed-to-fail: false
- php: '8.3'
allowed-to-fail: false
- php: '8.4'
allowed-to-fail: false

# Symfony 6.4 LTS compatibility
- php: '8.2'
symfony-version: '^6.4'
symfony-version: '6.4.*'
allowed-to-fail: false
- php: '8.3'
symfony-version: '^6.4'
symfony-version: '6.4.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '^6.4'
symfony-version: '6.4.*'
allowed-to-fail: false

# Symfony 7.x current versions
- php: '8.2'
symfony-version: '^7.0'
symfony-version: '7.0.*'
allowed-to-fail: false
- php: '8.3'
symfony-version: '^7.0'
symfony-version: '7.0.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '^7.0'
symfony-version: '7.0.*'
allowed-to-fail: false
- php: '8.3'
symfony-version: '^7.1'
symfony-version: '7.1.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '^7.1'
symfony-version: '7.1.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '^7.2'
symfony-version: '7.2.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '^7.3'
symfony-version: '7.3.*'
allowed-to-fail: false
- php: '8.4'
symfony-version: '^7.4'
stability: 'dev'
allowed-to-fail: true
symfony-version: '7.4.*'
allowed-to-fail: false

# Future-ready: Symfony 8.0 (beta/dev) - Requires PHP 8.4+
# Symfony 8.0 - Requires PHP 8.4+
- php: '8.4'
symfony-version: '^8.0'
stability: 'dev'
allowed-to-fail: true
symfony-version: '8.0.*'
allowed-to-fail: false

# Future-ready: PHP 8.5 (alpha/dev) - when available
- php: '8.5'
symfony-version: '^7.3'
stability: 'dev'
allowed-to-fail: true
# PHP 8.5 with various Symfony versions
- php: '8.5'
symfony-version: '^7.4'
stability: 'dev'
allowed-to-fail: true
symfony-version: '7.3.*'
allowed-to-fail: false
- php: '8.5'
symfony-version: '^8.0'
stability: 'dev'
allowed-to-fail: true

# Development stability tests
- php: '8.4'
stability: 'dev'
allowed-to-fail: true
symfony-version: '7.4.*'
allowed-to-fail: false
- php: '8.5'
stability: 'dev'
allowed-to-fail: true
symfony-version: '8.0.*'
allowed-to-fail: false

name: "PHP ${{ matrix.php }}${{ matrix.symfony-version && format(' | Symfony {0}', matrix.symfony-version) || '' }}${{ matrix.stability && format(' | {0}', matrix.stability) || '' }}"

Expand Down Expand Up @@ -148,21 +125,38 @@ jobs:
run: composer update --prefer-dist --no-interaction --no-progress

- name: Validate composer.json and composer.lock
run: composer validate --strict
run: |
if [[ "${{ github.ref }}" == *"beta"* || "${{ github.ref }}" == *"alpha"* || "${{ github.ref }}" == *"rc"* ]]; then
composer validate --no-check-version
else
composer validate --strict
fi

- name: Run code style check
run: composer cs

- name: Run static analysis
run: |
if [[ "${{ matrix.symfony-version }}" == "^7.4" || "${{ matrix.symfony-version }}" == "^8.0" ]]; then
composer analyse-generics
if [[ "${{ matrix.symfony-version }}" == "8.0.*" ]]; then
# Symfony 8.0: Use specific baseline for remaining issues
vendor/bin/phpstan analyse src --level=8 --configuration phpstan/symfony8-baseline.neon
elif [[ "${{ matrix.symfony-version }}" == "7.4.*" ]]; then
# Symfony 7.4 LTS: Functionally identical to 8.0, needs same baseline
vendor/bin/phpstan analyse src --level=8 --configuration phpstan/symfony74-baseline.neon
elif [[ "${{ matrix.symfony-version }}" == "6.4.*" || "${{ matrix.symfony-version }}" == "7.0.*" || "${{ matrix.symfony-version }}" == "7.1.*" || "${{ matrix.symfony-version }}" == "7.2.*" || "${{ matrix.symfony-version }}" == "7.3.*" ]]; then
# Older Symfony versions 6.4-7.3: Use legacy baseline for children() issue
composer analyse-legacy
else
# Future versions: Try without baseline first
composer analyse
fi

- name: Run tests
run: ./vendor/bin/simple-phpunit -v
run: composer test
env:
DISCOGS_CONSUMER_KEY: ${{ secrets.DISCOGS_CONSUMER_KEY }}
DISCOGS_CONSUMER_SECRET: ${{ secrets.DISCOGS_CONSUMER_SECRET }}
DISCOGS_PERSONAL_ACCESS_TOKEN: ${{ secrets.DISCOGS_PERSONAL_ACCESS_TOKEN }}

code-quality:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -195,7 +189,12 @@ jobs:
run: composer install --prefer-dist --no-interaction --no-progress

- name: Validate composer.json and composer.lock
run: composer validate --strict
run: |
if [[ "${{ github.ref }}" == *"beta"* || "${{ github.ref }}" == *"alpha"* || "${{ github.ref }}" == *"rc"* ]]; then
composer validate --no-check-version
else
composer validate --strict
fi

coverage:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -228,7 +227,11 @@ jobs:
run: composer install --prefer-dist --no-interaction --no-progress

- name: Run tests with coverage
run: ./vendor/bin/simple-phpunit --coverage-clover coverage.xml
run: composer test-coverage
env:
DISCOGS_CONSUMER_KEY: ${{ secrets.DISCOGS_CONSUMER_KEY }}
DISCOGS_CONSUMER_SECRET: ${{ secrets.DISCOGS_CONSUMER_SECRET }}
DISCOGS_PERSONAL_ACCESS_TOKEN: ${{ secrets.DISCOGS_PERSONAL_ACCESS_TOKEN }}

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
Expand Down
53 changes: 50 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,53 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [4.0.0](https://github.com/calliostro/discogs-bundle/releases/tag/v4.0.0) – 2025-12-01
Comment thread
calliostro marked this conversation as resolved.

### 🚀 Complete Rewrite — Fresh Start

This version represents a complete architectural rewrite. v4.0.0 is essentially a new bundle that happens to have the same name.

### Added

- **Personal Access Token Support** for simple authentication
- **All 60 Discogs API Methods** with consistent verb-first naming and modern parameter style
- **Zero Configuration Mode** for public API access
- **Named Parameter Support** – Methods accept individual parameters in camelCase instead of arrays
- **Built-in OAuth 1.0a** with no external dependencies
- **Symfony Rate Limiter Integration** – Optional advanced rate limiting with configurable policies (sliding_window, fixed_window, token_bucket)
- **Symfony 6.4 | 7.x | 8.x Support** with future compatibility
- **Modern PHP 8.1+ Architecture** with full type safety and modern features
- **Comprehensive Test Suite** with unit and integration tests
- **Professional Documentation** with clear examples and setup guides
- **Modern Bundle Structure** following all Symfony best practices
- **Robust Configuration Validation** with meaningful error messages
- **Modern Music References** throughout documentation and examples

### Changed

- **Configuration Structure** simplified and more intuitive
- **Method Parameter Style** – All methods now accept individual parameters (e.g., `getArtist(artistId: 123)`) instead of arrays (`getArtist(['id' => '123'])`)
- **Method Names** use consistent verb-first patterns (e.g., `listArtistReleases()`)
- **Parameter Naming** – All parameters use camelCase convention (e.g., `perPage` instead of `per_page`)
- **Rate Limiting** – Replaced simple throttle system with Symfony Rate Limiter component integration
- **Service Naming** follows modern Symfony conventions with proper aliases
- **Error Handling** improved with better exceptions and validation
- **Performance** optimized for modern PHP versions
- **Complete API Integration** now based on `calliostro/php-discogs-api`
- **Code Standards** fully compliant with @Symfony and @Symfony:risky rules

### Removed

- **Complex Configuration** – Simplified to essential options only
- **Array Parameter Style** – Methods no longer accept parameter arrays
- **Throttle Configuration** – Legacy `throttle` config replaced with modern `rate_limiter` integration
- **Legacy Dependencies** – No more Guzzle Services or external OAuth libraries
- **Backward Compatibility** – This is a fresh start, not an upgrade

---

## Historical Releases (Pre-v4.0)

## [3.1.4](https://github.com/calliostro/discogs-bundle/releases/tag/v3.1.4) – 2025-09-11

### Added
Expand All @@ -19,7 +66,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- Improved exception documentation specificity (XML loading exceptions vs generic exceptions)
- Improved exception documentation specificity (XML loading exceptions vs. generic exceptions)
- Enhanced test coverage from 96.9% to 100% with comprehensive OAuth token scenarios

---
Expand Down Expand Up @@ -55,8 +102,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- PHP 8.5 beta compatibility – Early support for the upcoming PHP 8.5 release
- Symfony 8.0 beta testing – Ready for Symfony 8.0 when it arrives
- PHP 8.5 compatibility – Early support for the upcoming PHP 8.5 release
- Symfony 8.0 testing – Ready for Symfony 8.0 when it arrives
- Enhanced stability – Improved build reliability and faster dependency resolution

### Changed
Expand Down
Loading