-
-
Notifications
You must be signed in to change notification settings - Fork 362
PHP 8.3 is dead #3898
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PHP 8.3 is dead #3898
Conversation
|
Warning Rate limit exceeded@ildyria has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 24 minutes and 32 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughVersion requirements updated across the codebase: PHP minimum raised from 8.3 to 8.4, PHP latest from 8.4 to 8.5, Laravel upgraded from 11.x to 12–13.x, and Node.js requirement from 18+ to 20+. All updates are version constants, configurations, and documentation changes with no functional logic modifications. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
Pre-merge checks✅ Passed checks (1 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.ai/embeds/README.md (1)
72-89: Add Node.js 20+ to Frontend Widget technology stack.The global requirements document (docs/specs/0-overview/README.md) specifies "Node.js 20+ (for frontend build)", and the Frontend Widget section references Vite 7.x and npm commands, both of which require Node.js. Include Node.js 20+ in the Frontend Widget subsection of the Technology Stack to maintain consistency with the established requirements.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (9)
.ai/embeds/IMPLEMENTATION.md.ai/embeds/README.mdREADME.mdapp/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.phpapp/Actions/InstallUpdate/DefaultConfig.phpdocs/Contribute.mddocs/specs/0-overview/README.mddocs/specs/4-architecture/backend-architecture.mddocs/specs/5-operations/session-quick-reference.md
🧰 Additional context used
📓 Path-based instructions (2)
**/*.md
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
**/*.md: Use Markdown format for documentation
At the bottom of documentation files, add an hr line followed by "Last updated: [date of the update]"
Files:
docs/specs/4-architecture/backend-architecture.mddocs/Contribute.mddocs/specs/0-overview/README.mddocs/specs/5-operations/session-quick-reference.mdREADME.md
**/*.php
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
**/*.php: Any new PHP file should contain the license header and have a single blank line after the opening PHP tag
Variable names should be in snake_case in PHP
Apply the PSR-4 coding standard in PHP
Use in_array() with true as the third parameter in PHP
Only use booleans in if statements, not integers or strings
Use strict comparison (===) instead of loose comparison (==)
Avoid code duplication in both if and else statements
Do not use empty() in PHP
Use the moneyphp/money library for handling monetary values in PHP
Never use floats or doubles to represent monetary values; use integers representing the smallest currency unit (e.g., cents for USD)
**/*.php: Write or extend executable specifications (unit, behaviour, or scenario tests) ahead of implementation, confirm they fail, and then drive code to green before refactoring. List the expected success, validation, and failure branches and add thin failing tests for each path.
For PHP code, adhere to conventions: license headers in new files, strict comparison (===), no empty(), in_array() with third parameter true, snake_case variables, PSR-4 standard, test base classes (AbstractTestCase for Unit, BaseApiWithDataTest for Feature_v2).
Always run phpunit tests. If a test remains red, disable it with a TODO, note the reason, and capture the follow-up in the relevant plan.
Spotless now uses Palantir Java Format 2.78.0 with a 120-character wrap; configure IDE formatters to match before pushing code changes.
Keep each increment's control flow flat by delegating validation/normalisation into tiny pure helpers that return simple enums or result records, then compose them instead of introducing inline branching that inflates the branch count per change.
When introducing new helpers/utilities or editing files prone to style violations (records, DTOs, generated adapters), run the narrowest applicable lint target (for example phpstan) before the full pipeline. Note the command in the related plan/task.
For PHP changes, ru...
Files:
app/Actions/InstallUpdate/DefaultConfig.phpapp/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php
🧠 Learnings (20)
📓 Common learnings
Learnt from: ildyria
Repo: LycheeOrg/Lychee PR: 3641
File: lang/no/settings.php:9-9
Timestamp: 2025-08-22T06:11:18.329Z
Learning: For lang/* translation files in the Lychee project: only review PHP-related issues (syntax, structure, etc.), not translation content, grammar, or language-related nitpicks. The maintainer ildyria has explicitly requested this approach.
📚 Learning: 2025-09-03T14:22:58.633Z
Learnt from: ildyria
Repo: LycheeOrg/Lychee PR: 3673
File: docs/add-oauth-provider.md:36-49
Timestamp: 2025-09-03T14:22:58.633Z
Learning: Lychee uses Laravel 12 but deliberately maintains the old infrastructure model without migrating to newer Laravel 11+ patterns. They continue using EventServiceProvider for event registration rather than the newer Event::listen approach in AppServiceProvider, so documentation should reflect the traditional EventServiceProvider pattern.
Applied to files:
docs/specs/4-architecture/backend-architecture.md.ai/embeds/IMPLEMENTATION.md
📚 Learning: 2025-08-20T20:33:32.844Z
Learnt from: ildyria
Repo: LycheeOrg/Lychee PR: 3637
File: lang/cz/renamer.php:3-94
Timestamp: 2025-08-20T20:33:32.844Z
Learning: In Lychee, internationalization is done by the admin, not by the visitor, and the system uses custom locale directory naming (e.g., lang/cz/) that may not follow Laravel's standard ISO 639-1 conventions like lang/cs/. This is intentional and works within their custom internationalization system.
Applied to files:
docs/specs/4-architecture/backend-architecture.md
📚 Learning: 2025-08-12T11:31:09.853Z
Learnt from: ildyria
Repo: LycheeOrg/Lychee PR: 3605
File: docs/Lifecycle-of-a-request-photo-upload.md:144-151
Timestamp: 2025-08-12T11:31:09.853Z
Learning: In Lychee, the BaseApiRequest class has been modified to change Laravel's default execution order - processValidatedValues() runs BEFORE authorize(), not after. This means that in Lychee request classes, $this->album and other processed properties are available during authorization checks, unlike standard Laravel behavior.
Applied to files:
docs/specs/4-architecture/backend-architecture.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to **/*.php : For PHP changes, run make phpstan to verify PHPStan level 6 minimum; fix all errors before committing.
Applied to files:
docs/Contribute.mdapp/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php
📚 Learning: 2025-12-22T14:11:17.217Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-22T14:11:17.217Z
Learning: Applies to **/*.vue : Use TypeScript in composition API for Vue3 and use PrimeVue for UI components
Applied to files:
docs/specs/0-overview/README.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to **/*.{vue,ts,js} : For Vue3/TypeScript frontend code, follow coding conventions defined in docs/specs/3-reference/coding-conventions.md for style, naming, and testing practices.
Applied to files:
docs/specs/0-overview/README.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to **/*.php : For PHP code, adhere to conventions: license headers in new files, strict comparison (===), no empty(), in_array() with third parameter true, snake_case variables, PSR-4 standard, test base classes (AbstractTestCase for Unit, BaseApiWithDataTest for Feature_v2).
Applied to files:
app/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to docs/specs/4-architecture/features/**/*.md : For every task, refresh the relevant feature plan and note open questions; only move forward once the plan reflects the desired change. Update specs before code.
Applied to files:
docs/specs/5-operations/session-quick-reference.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to docs/specs/4-architecture/features/**/tasks.md : Before committing, confirm every completed task in tasks.md is marked [x] and the roadmap status reflects current progress (validate task checklist).
Applied to files:
docs/specs/5-operations/session-quick-reference.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to docs/specs/5-decisions/**/*.md : Before planning or implementation, skim ADRs under docs/specs/5-decisions whose related-features/specs entries reference the active feature ID so high-impact clarifications and architectural decisions are treated as required context.
Applied to files:
docs/specs/5-operations/session-quick-reference.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Begin every fresh interaction by summarising roadmap status, feature plan progress, and open questions for the user. Request clarification on outstanding questions before planning or implementation; log any new questions immediately.
Applied to files:
docs/specs/5-operations/session-quick-reference.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to docs/specs/4-architecture/features/**/tasks.md : Maintain a per-feature tasks checklist that mirrors the plan, orders tests before code, and keeps planned increments ≤90 minutes by preferring finer-grained entries and documenting sub-steps when something nears the limit.
Applied to files:
docs/specs/5-operations/session-quick-reference.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to docs/specs/4-architecture/features/**/{spec,plan,tasks}.md : Start every feature by updating or creating its specification at docs/specs/4-architecture/features/<NNN>-<feature-name>/spec.md, followed by plan and tasks documents after clarifications are resolved.
Applied to files:
docs/specs/5-operations/session-quick-reference.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to docs/specs/_current-session.md : Maintain docs/specs/_current-session.md as the single live snapshot across active chats; always review/update it before closing a session.
Applied to files:
docs/specs/5-operations/session-quick-reference.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Before hand-off, review your own changes, rerun checks, and ensure documentation/test coverage matches the behaviour (RCI self-review).
Applied to files:
docs/specs/5-operations/session-quick-reference.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to docs/specs/4-architecture/features/**/{spec,plan,tasks}.md : Generate or refresh the feature plan only after the specification is current and high-/medium-impact clarifications are resolved and recorded in the spec (plus ADRs where required).
Applied to files:
docs/specs/5-operations/session-quick-reference.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to docs/specs/4-architecture/features/**/*.md : Track upcoming additions for contract tests, mutation analysis, and security/red-team prompt suites in the plans until automated jobs exist (quality gates).
Applied to files:
docs/specs/5-operations/session-quick-reference.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to docs/specs/4-architecture/roadmap.md : Update the roadmap regularly to reflect feature status and progress as work is made.
Applied to files:
docs/specs/5-operations/session-quick-reference.md
📚 Learning: 2025-12-22T14:12:18.082Z
Learnt from: CR
Repo: LycheeOrg/Lychee PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-22T14:12:18.082Z
Learning: Applies to docs/specs/4-architecture/features/**/*.md : Update feature specs, feature plans, and tasks documents as progress is made and sync context to disk.
Applied to files:
docs/specs/5-operations/session-quick-reference.md
⏰ Context from checks skipped due to timeout of 180000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (19)
- GitHub Check: 2️⃣ PHP dist / 8.4 - sqlite
- GitHub Check: 2️⃣ PHP dist / 8.4 - postgresql
- GitHub Check: 2️⃣ PHP dist / 8.5 - postgresql
- GitHub Check: 2️⃣ PHP dist / 8.5 - mariadb
- GitHub Check: 2️⃣ PHP dist / 8.4 - mariadb
- GitHub Check: 3️⃣ Dockerfile Lint
- GitHub Check: 1️⃣ PHP tests / 8.5 - sqlite -- Webshop
- GitHub Check: 1️⃣ PHP tests / 8.5 - mariadb -- Webshop
- GitHub Check: 1️⃣ PHP tests / 8.5 - postgresql -- ImageProcessing
- GitHub Check: 1️⃣ PHP tests / 8.5 - postgresql -- Unit
- GitHub Check: 1️⃣ PHP tests / 8.5 - sqlite -- Unit
- GitHub Check: 1️⃣ PHP tests / 8.5 - postgresql -- Feature_v2
- GitHub Check: 1️⃣ PHP tests / 8.5 - sqlite -- ImageProcessing
- GitHub Check: 1️⃣ PHP tests / 8.5 - sqlite -- Feature_v2
- GitHub Check: 1️⃣ PHP tests / 8.5 - postgresql -- Webshop
- GitHub Check: 1️⃣ PHP tests / 8.4 - mariadb -- Install
- GitHub Check: 1️⃣ PHP tests / 8.5 - mariadb -- ImageProcessing
- GitHub Check: 1️⃣ PHP tests / 8.5 - mariadb -- Feature_v2
- GitHub Check: 1️⃣ PHP tests / 8.5 - mariadb -- Unit
🔇 Additional comments (9)
docs/Contribute.md (1)
27-27: LGTM! PHP version requirement updated consistently.The prerequisite update from PHP 8.3 to 8.4 aligns with the broader version bump across the repository.
docs/specs/4-architecture/backend-architecture.md (1)
9-9: LGTM! Architecture documentation updated consistently.Both mentions of the PHP version requirement have been updated from 8.3+ to 8.4+ in the Overview and Technology Stack sections.
Also applies to: 13-13
docs/specs/5-operations/session-quick-reference.md (1)
7-7: LGTM! Operational documentation updated consistently.Environment prerequisites updated from PHP 8.3+ to 8.4+ in both the Session Kickoff Checklist and Handoff Prompt Template.
Also applies to: 30-30
docs/specs/0-overview/README.md (1)
76-76: LGTM! Technical requirements updated consistently.The updates reflect the new minimum versions:
- PHP 8.4+ (from 8.3+)
- Node.js 20+ (from 18+)
Both are reasonable requirements as Node.js 20 is an LTS version and PHP 8.4 was released in November 2024.
Also applies to: 86-87
README.md (1)
4-4: LGTM! README updated consistently with new PHP requirements.All PHP version mentions have been updated:
- Badge displays PHP 8.4 & 8.5
- Build from Source instructions require PHP 8.4 or later
- Badge definition reflects the new versions
Also applies to: 59-59, 137-137
app/Actions/InstallUpdate/DefaultConfig.php (1)
28-28: LGTM! Core minimum PHP version updated correctly.The minimum PHP version has been updated from 8.3.0 to 8.4.0, which is consistent with all documentation updates across the repository.
.ai/embeds/IMPLEMENTATION.md (1)
70-71: No action needed. The Laravel and PHP versions are consistent across the project.Verification confirms composer.json specifies Laravel 12.x (
^12.0), and both .ai/embeds/IMPLEMENTATION.md (line 70) and .ai/embeds/README.md (line 75) consistently document Laravel 12.x with PHP 8.4+. There is no inconsistency with Laravel 13.x mentioned anywhere in the codebase.Likely an incorrect or invalid review comment.
app/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php (1)
21-23: No issues found. PHP 8.5 was released as stable (GA) on November 20, 2025, with the latest patch 8.5.1 released December 18, 2025. Active support runs through 2027-12-31 and security support through 2029-12-31. Setting PHP_LATEST to 8.5 is appropriate and production-ready..ai/embeds/README.md (1)
75-75: ✅ Version update aligns with PR objectives.The Laravel and PHP version updates correctly reflect the PR's intent to drop PHP 8.3 support and upgrade to Laravel 13.x.
Codecov Report✅ All modified and coverable lines are covered by tests. 🚀 New features to boost your workflow:
|
Summary by CodeRabbit
Chores
Documentation
✏️ Tip: You can customize this high-level summary in your review settings.