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.