3 min read / ,

20 PRs Merged Into Laravel In 12 Days

TLDR 20 PRs merged across 12 Laravel repos in under two weeks.

Over the past couple of weeks I went deep into the Laravel ecosystem — hunting bugs, fixing CI pipelines, patching Windows compatibility, and squashing memory leaks. 20 pull requests were merged across 12 Laravel repositories between March 18-29. Around 1,000 lines of code added.

Here’s everything that landed.

Framework (4 merged)

#59376 — Fix incrementEach/decrementEach to scope to model instance This was the big one. incrementEach and decrementEach weren’t scoping to the model instance — they were updating every row in the table. A data corruption bug hiding in plain sight.

#59331 — Fix sub-minute scheduling skips at minute boundaries A Carbon mutation bug. endOfMinute() was mutating the shared $startedAt instance instead of a copy, causing sub-minute scheduled tasks to skip executions at minute boundaries. A minimal fix with full test coverage, zero breaking changes.

#59323 — Remove unnecessary clone in SessionManager to prevent duplicate Redis connections An unnecessary clone in SessionManager was silently creating duplicate Redis connections.

#59309 — Bound error page query listener to prevent memory bloat in Octane The debug error page’s query listener was storing unbounded SQL strings and bindings. A single bulk insert could inflate an Octane worker’s memory by 120MB+. Only affects local dev (APP_DEBUG=true), but three previous PRs had tried and failed to fix it.

Windows Compatibility (2 merged)

Prompts #232 — Fix trailing newline calculation for Windows PHP_EOL Windows uses \r\n — the newline calculation wasn’t accounting for that. 87 lines added with proper test coverage.

Installer #478 — Fix interactive subprocess stdin on native Windows The Laravel installer’s interactive subprocesses weren’t working on native Windows. This makes the onboarding experience work properly for Windows devs.

Dusk (3 merged)

#1189 — Fix findButtonByText to prefer exact text match over contains When you have buttons with similar text, Dusk was matching the wrong one. Now it prefers exact matches.

#1192 — Fix typo in teardown method name. #1193 — Fix docblock typo in assertVueContains.

Reverb (1 merged)

#374 — Include server path in broadcasting connection config Important for anyone running Reverb behind a reverse proxy with a path prefix.

CI & Test Compatibility (9 merged)

Several packages needed their CI pipelines and test suites updated for Laravel 13, Livewire v4, and PHPUnit 12:

Sentinel (1 merged)

#4 — Fix typo in CI workflow exclusion matrix

Reflecting on it

What I love about this batch is the range — from a data corruption bug in the framework core, to Windows compatibility fixes, broadcasting config, and CI pipelines across a dozen repos. The big framework fixes all have proper tests, and I tested the Windows-specific fixes across both Windows 11 and macOS because the Laravel team is predominantly on Mac and some platform edge cases slip through.

20 PRs, 12 repos, 12 days. I use Laravel every single day and being able to give back to the framework and help the team out is genuinely one of the most rewarding things I do.

Still got a few more open — keeping at it.