Release 4.1.2#39
Merged
Merged
Conversation
no message
Bump actions/checkout to v6, add docker-compose ci profile to keep matrix services from starting during local development, fix coverage command to run via docker-compose, and remove stale .markdownlint.json. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Improve CI workflows and local dev tooling
Catch blocks in OpenIdConfigurationProvider (validateIdToken, getJwks, fetchJsonResource, getConfiguration) now pass the original exception as `previous` so consumers can walk back to the underlying Guzzle/firebase/PSR cause via getPrevious(). Previously only getIdToken did this. Tightened @throws phpdoc on validateIdToken, getIdToken, and getBaseAuthorizationUrl to enumerate actual transitive exceptions instead of declaring only the ItkOpenIdConnectException parent. Removed the inaccurate ClientExceptionInterface declaration on getIdToken — the catch-all wraps Guzzle exceptions as CodeException with the original chained. README adds a section documenting the existing timeout/proxy/verify support already provided by league/oauth2-client via constructor $options, plus a short note explaining why the stack uses Guzzle rather than Symfony HttpClient. BC-safe: all changes are additive (third constructor arg on the wrapped exceptions is optional; phpdoc tightening is a stricter declaration of existing behavior). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
# Conflicts: # CHANGELOG.md
Point at the actual `php.yaml` workflow on `develop` instead of the non-existent `pr.yaml` and the stale "Test & Code Style Review" workflow name. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Roll up the [Unreleased] section into 4.1.2 dated 2026-05-11. PATCH-level: all changes are strictly additive (consistent `$previous` chaining across the four `OpenIdConfigurationProvider` catch sites), documentation accuracy fixes on `@throws` PHPDoc for three public methods (the `ClientExceptionInterface` declaration on `getIdToken` was always wrong — the catch-all already wraps it as `CodeException`), README docs for the HTTP transport options that league/oauth2-client already forwards to Guzzle, and CI / Taskfile housekeeping. No new public API, no removed/renamed/re-typed public API, no required behaviour change for existing consumers. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #39 +/- ##
===========================================
Coverage 100.00% 100.00%
Complexity 62 62
===========================================
Files 1 1
Lines 172 172
===========================================
Hits 172 172
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Roll up the accumulated
[Unreleased]changes since 4.1.1 into a tagged release.PATCH-level per strict SemVer reading: every change is a bug fix, documentation accuracy correction, or CI/tooling improvement. No new public API; no removed, renamed, or re-typed public API. The runtime behaviour change (
$previouschained at five catch sites) is strictly additive — consumers that traversegetPrevious()now see the originating Guzzle/firebase/PSR exception where they previously sawnull.What's in 4.1.2
Fixed
$previouschaining inOpenIdConfigurationProvidercatch blocks (validateIdToken,getJwtVerificationKeys,fetchJsonResource×2,getConfiguration).README.md(was pointing at non-existentpr.yamland stale "Test & Code Style Review" workflow name).Changed (documentation accuracy)
@throwsPHPDoc onvalidateIdToken,getIdToken,getBaseAuthorizationUrlto enumerate the actual transitive exceptions. Removed the inaccurate@throws ClientExceptionInterfacedeclaration ongetIdToken(the body's catch-all wraps it asCodeExceptionwith the original chained — that exception never actually escaped this method).Documentation
timeout/proxy/verifyconfiguration via constructor$optionsinREADME.md. Capability already provided byleague/oauth2-client; no code change.Tooling / CI
actions/checkoutv5 → v6 across all workflows.ciprofile to docker-compose matrix services so they don't start during local dev.test:coverageto run via docker-compose withXDEBUG_MODE=coverage.test:runto remove stalecomposer.lockbeforecomposer update.test:matrix:resetto use--profile ci..markdownlint.json.Backward compatibility
Every existing consumer that compiled and ran against 4.1.1 continues to work against 4.1.2 unchanged. Consumers reading
$e->getPrevious()on exceptions thrown from these five catch sites will now see a non-null cause where they previously sawnull— strict improvement.Test plan
task lint:markdown— CHANGELOG and README cleantask test:coverage— 100% coverage maintained (24/24 methods, 148/148 lines)task analyze:php— PHPStan max, no errorstask lint:php— clean🤖 Generated with Claude Code