feat!: bump minimum supported PHP version to 8.1#348
feat!: bump minimum supported PHP version to 8.1#348gjtorikian wants to merge 1 commit intonext-majorfrom
Conversation
Greptile SummaryThis PR bumps the minimum supported PHP version from 7.3 to 8.1, cleans up the CI matrix to cover PHP 8.1–8.5, extracts linting into its own dedicated workflow, and upgrades several dependencies to versions that require PHP 8.x. The changes are well-structured and aligned with the library's long-term support policy. Key points:
Confidence Score: 3/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Push to main / Pull Request] --> B{Workflow Trigger}
B --> C[CI Workflow]
B --> D[Lint Workflow]
C --> E[Matrix: PHP 8.1 / 8.2 / 8.3 / 8.4 / 8.5]
E --> F[Checkout + setup-php]
F --> G[Cache Composer packages]
G --> H[composer install]
H --> I[composer run-script test]
D --> J[PHP 8.1 only]
J --> K[Checkout + setup-php]
K --> L[Cache Composer packages]
L --> M[composer install]
M --> N[composer run-script format-check]
style A fill:#4a90d9,color:#fff
style C fill:#27ae60,color:#fff
style D fill:#e67e22,color:#fff
style I fill:#27ae60,color:#fff
style N fill:#e67e22,color:#fff
Last reviewed commit: "feat!: bump minimum ..." |
| "php": ">=8.1.0", | ||
| "ext-curl": "*", | ||
| "paragonie/halite": "^4.0" | ||
| "paragonie/halite": "^5.1" |
There was a problem hiding this comment.
Breaking change: Halite v4 → v5 ciphertext format incompatibility
Upgrading paragonie/halite from ^4.0 to ^5.1 is a breaking change for any users who have existing session data encrypted with v4. Halite embeds its own version bytes in the ciphertext format, and v5 changed this format — meaning any session cookie encrypted under v4 cannot be decrypted by v5's SymmetricCrypto::decrypt(). Users upgrading this library will have all active sessions silently invalidated and thrown as decryption exceptions.
While the PR title correctly signals a breaking change (feat!), the description only mentions the PHP version bump. It's worth explicitly documenting this session-invalidation side-effect in release notes/migration guide, and considering whether a graceful degradation path (e.g. attempt v5 decrypt, fall back to v4, then re-seal) is desirable.
| branches: | ||
| - "main" |
There was a problem hiding this comment.
Push trigger only covers
main, not next-major
The push trigger is scoped only to main, but this PR targets next-major. Any direct commits to next-major (e.g. merge commits, chore bumps) will not trigger the lint workflow — only PRs will. This matches the existing behavior of ci.yml, but it may be worth adding next-major to both push trigger lists to keep the branch continuously green:
push:
branches:
- "main"
- "next-major"Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Description
This PR raises our minimum supported PHP version to 8.1, which was released two years ago and reached end of official support about two months ago.
PHP 8.0 reached end of official support two years ago, and I’d like our SDKs to support only language versions that have been out of support for no more than a year.
Documentation
Does this require changes to the WorkOS Docs? E.g. the API Reference or code snippets need updates.
If yes, link a related docs PR and add a docs maintainer as a reviewer. Their approval is required.