Skip to content

Commit 5f64a78

Browse files
authored
Merge branch '12.x' into test-php8.5
2 parents d923a65 + e230e96 commit 5f64a78

File tree

106 files changed

+2165
-327
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

106 files changed

+2165
-327
lines changed

.github/workflows/databases.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,55 @@ jobs:
147147
env:
148148
DB_CONNECTION: mariadb
149149

150+
pgsql_18:
151+
runs-on: ubuntu-24.04
152+
timeout-minutes: 5
153+
154+
services:
155+
postgresql:
156+
image: postgres:18
157+
env:
158+
POSTGRES_DB: laravel
159+
POSTGRES_USER: forge
160+
POSTGRES_PASSWORD: password
161+
ports:
162+
- 5432:5432
163+
options: --health-cmd=pg_isready --health-interval=10s --health-timeout=5s --health-retries=3
164+
165+
strategy:
166+
fail-fast: true
167+
168+
name: PostgreSQL 18
169+
170+
steps:
171+
- name: Checkout code
172+
uses: actions/checkout@v4
173+
174+
- name: Setup PHP
175+
uses: shivammathur/setup-php@v2
176+
with:
177+
php-version: 8.3
178+
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, pdo_pgsql, :php-psr
179+
tools: composer:v2
180+
coverage: none
181+
182+
- name: Set Framework version
183+
run: composer config version "12.x-dev"
184+
185+
- name: Install dependencies
186+
uses: nick-fields/retry@v3
187+
with:
188+
timeout_minutes: 5
189+
max_attempts: 5
190+
command: composer update --prefer-stable --prefer-dist --no-interaction --no-progress
191+
192+
- name: Execute tests
193+
run: vendor/bin/phpunit tests/Integration/Database
194+
env:
195+
DB_CONNECTION: pgsql
196+
DB_USERNAME: forge
197+
DB_PASSWORD: password
198+
150199
pgsql_14:
151200
runs-on: ubuntu-24.04
152201
timeout-minutes: 5

.github/workflows/queues.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ jobs:
161161

162162
- name: Create Redis Cluster
163163
run: |
164-
sudo apt-get install -y redis-server
164+
sudo apt update
165+
sudo apt-get install -y --fix-missing redis-server
165166
sudo service redis-server stop
166167
redis-server --daemonize yes --port 7000 --appendonly yes --cluster-enabled yes --cluster-config-file nodes-7000.conf
167168
redis-server --daemonize yes --port 7001 --appendonly yes --cluster-enabled yes --cluster-config-file nodes-7001.conf

.github/workflows/tests.yml

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,23 @@ jobs:
4040
fail-fast: true
4141
matrix:
4242
php: [8.2, 8.3, 8.4, 8.5]
43-
phpunit: ['10.5.35', '11.5.3', '12.0.0', '12.3.0']
43+
phpunit: ['10.5.35', '11.5.3', '12.0.0', '12.4.0']
4444
stability: [prefer-lowest, prefer-stable]
4545
exclude:
4646
- php: 8.2
4747
phpunit: '12.0.0'
4848
- php: 8.2
49-
phpunit: '12.3.0'
49+
phpunit: '12.4.0'
5050
include:
5151
- php: 8.3
5252
phpunit: '12.1.0'
5353
stability: prefer-stable
5454
- php: 8.3
5555
phpunit: '12.2.0'
5656
stability: prefer-stable
57+
- php: 8.3
58+
phpunit: '12.3.0'
59+
stability: prefer-stable
5760

5861
name: PHP ${{ matrix.php }} - PHPUnit ${{ matrix.phpunit }} - ${{ matrix.stability }}
5962

@@ -76,15 +79,6 @@ jobs:
7679
- name: Set Framework version
7780
run: composer config version "12.x-dev"
7881

79-
- name: Set Minimum dependencies for `prefer-lowest`
80-
uses: nick-fields/retry@v3
81-
with:
82-
timeout_minutes: 5
83-
max_attempts: 5
84-
command: composer require opis/string:2.0.1 --no-interaction --no-update
85-
shell: bash
86-
if: matrix.stability == 'prefer-lowest'
87-
8882
- name: Install dependencies
8983
uses: nick-fields/retry@v3
9084
with:
@@ -117,20 +111,23 @@ jobs:
117111
fail-fast: true
118112
matrix:
119113
php: [8.2, 8.3, 8.4, 8.5]
120-
phpunit: ['10.5.35', '11.5.3', '12.0.0', '12.3.0']
114+
phpunit: ['10.5.35', '11.5.3', '12.0.0', '12.4.0']
121115
stability: [prefer-lowest, prefer-stable]
122116
exclude:
123117
- php: 8.2
124118
phpunit: '12.0.0'
125119
- php: 8.2
126-
phpunit: '12.3.0'
120+
phpunit: '12.4.0'
127121
include:
128122
- php: 8.3
129123
phpunit: '12.1.0'
130124
stability: prefer-stable
131125
- php: 8.3
132126
phpunit: '12.2.0'
133127
stability: prefer-stable
128+
- php: 8.3
129+
phpunit: '12.3.0'
130+
stability: prefer-stable
134131

135132
name: PHP ${{ matrix.php }} - PHPUnit ${{ matrix.phpunit }} - ${{ matrix.stability }} - Windows
136133

@@ -154,15 +151,6 @@ jobs:
154151
- name: Set Framework version
155152
run: composer config version "12.x-dev"
156153

157-
- name: Set Minimum dependencies for `prefer-lowest`
158-
uses: nick-fields/retry@v3
159-
with:
160-
timeout_minutes: 5
161-
max_attempts: 5
162-
command: composer require opis/string:2.0.1 --no-interaction --no-update
163-
shell: bash
164-
if: matrix.stability == 'prefer-lowest'
165-
166154
- name: Install dependencies
167155
uses: nick-fields/retry@v3
168156
with:

.github/workflows/update-assets.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,15 @@ name: 'update assets'
33
on:
44
push:
55
branches:
6-
- '12.x'
6+
- master
7+
- '*.x'
78
paths:
8-
- '/src/Illuminate/Foundation/resources/exceptions/renderer/package-lock.json'
9-
workflow_dispatch:
9+
- 'src/Illuminate/Foundation/resources/exceptions/renderer/**'
10+
- '!src/Illuminate/Foundation/resources/exceptions/renderer/dist/**'
11+
pull_request:
12+
paths:
13+
- 'src/Illuminate/Foundation/resources/exceptions/renderer/**'
14+
- '!src/Illuminate/Foundation/resources/exceptions/renderer/dist/**'
1015

1116
permissions:
1217
contents: write

CHANGELOG.md

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,58 @@
11
# Release Notes for 12.x
22

3-
## [Unreleased](https://github.com/laravel/framework/compare/v12.32.5...12.x)
3+
## [Unreleased](https://github.com/laravel/framework/compare/v12.34.0...12.x)
4+
5+
## [v12.34.0](https://github.com/laravel/framework/compare/v12.33.0...v12.34.0) - 2025-10-14
6+
7+
* [12.x] PostgreSQL virtual columns by [@tpetry](https://github.com/tpetry) in https://github.com/laravel/framework/pull/57290
8+
* [12.x] Make Vite asset path generation extendable via inheritance by [@daun](https://github.com/daun) in https://github.com/laravel/framework/pull/57292
9+
* [12.x] Improve `Str` docblocks related to factories by [@cosmastech](https://github.com/cosmastech) in https://github.com/laravel/framework/pull/57297
10+
* Add missing waitUntil method to FakeInvokedProcess by [@yondifon](https://github.com/yondifon) in https://github.com/laravel/framework/pull/57030
11+
* Add support for Zed Editor in ResolvesDumpSource by [@miguilimzero](https://github.com/miguilimzero) in https://github.com/laravel/framework/pull/57298
12+
* [12.x] Remove leftover workaround by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/framework/pull/57306
13+
* Fix return type order in view function signature by [@MadBox-99](https://github.com/MadBox-99) in https://github.com/laravel/framework/pull/57304
14+
* Adds support for `Trae IDE` in the local exception page by [@sajjadhossainshohag](https://github.com/sajjadhossainshohag) in https://github.com/laravel/framework/pull/57300
15+
* [12.x] Add enum support to `Schedule::useCache()` by [@amirhshokri](https://github.com/amirhshokri) in https://github.com/laravel/framework/pull/57311
16+
* [12.x] Fix remaining PHP 8.5 null index array deprecations by [@IonBazan](https://github.com/IonBazan) in https://github.com/laravel/framework/pull/57308
17+
* Regenerate session during Auth::login() by [@valorin](https://github.com/valorin) in https://github.com/laravel/framework/pull/57204
18+
* [12.x] Formatting by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/framework/pull/57321
19+
* Update text color in minimal error view to ensure better accessibility by [@FoksVHox](https://github.com/FoksVHox) in https://github.com/laravel/framework/pull/57318
20+
* [12.x] Fix text truncation on syntax-highlighted queries by [@avosalmon](https://github.com/avosalmon) in https://github.com/laravel/framework/pull/57315
21+
* [12.x] Fix email rule helper message by [@erik-perri](https://github.com/erik-perri) in https://github.com/laravel/framework/pull/57323
22+
* [12.x] Do not assume `Str::uuid()` returns `Stringable` by [@cosmastech](https://github.com/cosmastech) in https://github.com/laravel/framework/pull/57340
23+
* [12.x] Add missing [@throws](https://github.com/throws) annotation to Arr by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/framework/pull/57336
24+
* [12.x] Use FQCN in docblocks by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/framework/pull/57335
25+
* [12.x] feat: Support custom response without modifying the exception handler by [@chuoke](https://github.com/chuoke) in https://github.com/laravel/framework/pull/57342
26+
* [12.X] add support for windsurf IDE in ResolvesDumpSource by [@Sajid-al-islam](https://github.com/Sajid-al-islam) in https://github.com/laravel/framework/pull/57359
27+
* [12.x] Expand single-line array into multiline by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/framework/pull/57350
28+
* [12.x] Added Kiro editor support in `ResolvesDumpSource` by [@OmarFaruk-0x01](https://github.com/OmarFaruk-0x01) in https://github.com/laravel/framework/pull/57363
29+
* [12.x] fix schedule list cli format in multibye locale by [@jamessa](https://github.com/jamessa) in https://github.com/laravel/framework/pull/57367
30+
* Prototype failover queue by [@taylorotwell](https://github.com/taylorotwell) in https://github.com/laravel/framework/pull/57341
31+
* Add support for Fleet editor in ResolvesDumpSource by [@Rakib01](https://github.com/Rakib01) in https://github.com/laravel/framework/pull/57377
32+
* Allow closures when calling throw_if by [@chrispage1](https://github.com/chrispage1) in https://github.com/laravel/framework/pull/57349
33+
* [12.x] Add defer method to HTTP batch by [@WendellAdriel](https://github.com/WendellAdriel) in https://github.com/laravel/framework/pull/57387
34+
* [12.x] Supports PHPUnit 12.4 by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/framework/pull/57388
35+
* [12.x] Http::batch - fix issue that non valid URL not triggering catch hook by [@WendellAdriel](https://github.com/WendellAdriel) in https://github.com/laravel/framework/pull/57386
36+
37+
## [v12.33.0](https://github.com/laravel/framework/compare/v12.32.5...v12.33.0) - 2025-10-07
38+
39+
* Fix compiling queries that use orderByRaw with expressions by [@LukeTowers](https://github.com/LukeTowers) in https://github.com/laravel/framework/pull/57228
40+
* [12.x] Narrow type after `Str::is*(...)` check by [@axlon](https://github.com/axlon) in https://github.com/laravel/framework/pull/57230
41+
* [12.x] Fix invalid docblock by [@tm1000](https://github.com/tm1000) in https://github.com/laravel/framework/pull/57240
42+
* [12.x] Refactor switch to match by [@amirhshokri](https://github.com/amirhshokri) in https://github.com/laravel/framework/pull/57236
43+
* [12.x] Refactor switch to match by [@alipowerful7](https://github.com/alipowerful7) in https://github.com/laravel/framework/pull/57237
44+
* [12.x] Fix rounded issue in exception frame component by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/framework/pull/57239
45+
* [12.x] Ensure calling job within a group works as expected by [@jackbayliss](https://github.com/jackbayliss) in https://github.com/laravel/framework/pull/57224
46+
* fix: remove duplicated word in `Str::apa` method by [@balboacodes](https://github.com/balboacodes) in https://github.com/laravel/framework/pull/57254
47+
* refactor: add |null in docblock by [@alipowerful7](https://github.com/alipowerful7) in https://github.com/laravel/framework/pull/57253
48+
* [12.x] Improve `php artisan config:cache` and `php artisan optimize` error messages for non-serializable values by [@mathiasgrimm](https://github.com/mathiasgrimm) in https://github.com/laravel/framework/pull/57249
49+
* [12.x] Ensure cookie lifetime matches session lifetime in StartSession middleware by [@michaelcontento](https://github.com/michaelcontento) in https://github.com/laravel/framework/pull/57266
50+
* Run tests on PostgreSQL version 18 by [@JurianArie](https://github.com/JurianArie) in https://github.com/laravel/framework/pull/57232
51+
* [12x.] reduce repeated inserts in tests by [@cosmastech](https://github.com/cosmastech) in https://github.com/laravel/framework/pull/57273
52+
* [12.x] Fix using pushIf blade directive with complex conditions (#57264) by [@hosni](https://github.com/hosni) in https://github.com/laravel/framework/pull/57274
53+
* [12.x] Add Stringable::doesntContain() to match API symmetry by [@michaelcontento](https://github.com/michaelcontento) in https://github.com/laravel/framework/pull/57279
54+
* [12.x] Improve BroadcastManager error messages when trying to get a Broadcaster by [@mathiasgrimm](https://github.com/mathiasgrimm) in https://github.com/laravel/framework/pull/57275
55+
* [12.x] HTTP Client: add mergeUrlParameters() to combine URL parameters without overwriting by [@leek](https://github.com/leek) in https://github.com/laravel/framework/pull/57282
456

557
## [v12.32.5](https://github.com/laravel/framework/compare/v12.32.4...v12.32.5) - 2025-09-30
658

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@
115115
"league/flysystem-sftp-v3": "^3.25.1",
116116
"mockery/mockery": "^1.6.10",
117117
"opis/json-schema": "^2.4.1",
118-
"orchestra/testbench-core": "^10.6.5",
118+
"orchestra/testbench-core": "^10.7.0",
119119
"pda/pheanstalk": "^5.0.6|^7.0.0",
120120
"php-http/discovery": "^1.15",
121121
"phpstan/phpstan": "^2.0",

config/queue.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
| used by your application. An example configuration is provided for
2525
| each backend supported by Laravel. You're also free to add more.
2626
|
27-
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
27+
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis",
28+
| "deferred", "failover", "null"
2829
|
2930
*/
3031

@@ -72,6 +73,18 @@
7273
'after_commit' => false,
7374
],
7475

76+
'deferred' => [
77+
'driver' => 'deferred',
78+
],
79+
80+
'failover' => [
81+
'driver' => 'failover',
82+
'connections' => [
83+
'database',
84+
'deferred',
85+
],
86+
],
87+
7588
],
7689

7790
/*

src/Illuminate/Auth/SessionGuard.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ public function login(AuthenticatableContract $user, $remember = false)
566566
}
567567

568568
/**
569-
* Update the session with the given ID.
569+
* Update the session with the given ID and regenerate the session's token.
570570
*
571571
* @param string $id
572572
* @return void
@@ -575,7 +575,7 @@ protected function updateSession($id)
575575
{
576576
$this->session->put($this->getName(), $id);
577577

578-
$this->session->migrate(true);
578+
$this->session->regenerate(true);
579579
}
580580

581581
/**

src/Illuminate/Broadcasting/BroadcastEvent.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,27 +141,27 @@ protected function formatProperty($value)
141141
* Get the channels for the given connection.
142142
*
143143
* @param array $channels
144-
* @param string $connection
144+
* @param string|null $connection
145145
* @return array
146146
*/
147147
protected function getConnectionChannels($channels, $connection)
148148
{
149-
return is_array($channels[$connection] ?? null)
150-
? $channels[$connection]
149+
return is_array($channels[$connection ?? ''] ?? null)
150+
? $channels[$connection ?? '']
151151
: $channels;
152152
}
153153

154154
/**
155155
* Get the payload for the given connection.
156156
*
157157
* @param array $payload
158-
* @param string $connection
158+
* @param string|null $connection
159159
* @return array
160160
*/
161161
protected function getConnectionPayload($payload, $connection)
162162
{
163-
$connectionPayload = is_array($payload[$connection] ?? null)
164-
? $payload[$connection]
163+
$connectionPayload = is_array($payload[$connection ?? ''] ?? null)
164+
? $payload[$connection ?? '']
165165
: $payload;
166166

167167
if (isset($payload['socket'])) {

src/Illuminate/Broadcasting/BroadcastManager.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
use InvalidArgumentException;
2222
use Psr\Log\LoggerInterface;
2323
use Pusher\Pusher;
24+
use RuntimeException;
25+
use Throwable;
2426

2527
/**
2628
* @mixin \Illuminate\Contracts\Broadcasting\Broadcaster
@@ -292,7 +294,11 @@ protected function resolve($name)
292294
throw new InvalidArgumentException("Driver [{$config['driver']}] is not supported.");
293295
}
294296

295-
return $this->{$driverMethod}($config);
297+
try {
298+
return $this->{$driverMethod}($config);
299+
} catch (Throwable $e) {
300+
throw new RuntimeException("Failed to create broadcaster for connection \"{$name}\" with error: {$e->getMessage()}.", 0, $e);
301+
}
296302
}
297303

298304
/**

0 commit comments

Comments
 (0)