diff --git a/.editorconfig b/.editorconfig
index 8f0de65c..a186cd20 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -14,5 +14,5 @@ trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
-[docker-compose.yml]
+[compose.yaml]
indent_size = 4
diff --git a/.env.example b/.env.example
index 35db1ddf..c0660ea1 100644
--- a/.env.example
+++ b/.env.example
@@ -11,7 +11,7 @@ APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
# APP_MAINTENANCE_STORE=database
-PHP_CLI_SERVER_WORKERS=4
+# PHP_CLI_SERVER_WORKERS=4
BCRYPT_ROUNDS=12
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 769390bf..4b505a03 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -25,7 +25,7 @@ jobs:
steps:
- name: Checkout code
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -44,4 +44,4 @@ jobs:
run: php artisan key:generate
- name: Execute tests
- run: vendor/bin/phpunit
+ run: php artisan test
diff --git a/.gitignore b/.gitignore
index c7cf1fa6..b71b1ea3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,17 @@
+*.log
+.DS_Store
+.env
+.env.backup
+.env.production
+.phpactor.json
+.phpunit.result.cache
+/.fleet
+/.idea
+/.nova
/.phpunit.cache
+/.vscode
+/.zed
+/auth.json
/node_modules
/public/build
/public/hot
@@ -6,18 +19,6 @@
/storage/*.key
/storage/pail
/vendor
-.env
-.env.backup
-.env.production
-.phpactor.json
-.phpunit.result.cache
Homestead.json
Homestead.yaml
-npm-debug.log
-yarn-error.log
-/auth.json
-/.fleet
-/.idea
-/.nova
-/.vscode
-/.zed
+Thumbs.db
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 42dc426e..17fc0ed7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,148 @@
# Release Notes
-## [Unreleased](https://github.com/laravel/laravel/compare/v12.0.0...master)
+## [Unreleased](https://github.com/laravel/laravel/compare/v12.11.2...12.x)
+
+## [v12.11.2](https://github.com/laravel/laravel/compare/v12.11.1...v12.11.2) - 2026-01-19
+
+* [12.x] Update composer dev script to ensure no timeout by [@jackbayliss](https://github.com/jackbayliss) in https://github.com/laravel/laravel/pull/6735
+* [12.x] Update jobs/cache migrations by [@jackbayliss](https://github.com/jackbayliss) in https://github.com/laravel/laravel/pull/6736
+* [12.x] Remove failed jobs indexes by [@jackbayliss](https://github.com/jackbayliss) in https://github.com/laravel/laravel/pull/6739
+* [12.x] Add `APP_URL` fallback in filesystems config by [@KentarouTakeda](https://github.com/KentarouTakeda) in https://github.com/laravel/laravel/pull/6742
+* chore: Update outdated GitHub Actions version by [@pgoslatara](https://github.com/pgoslatara) in https://github.com/laravel/laravel/pull/6743
+
+## [v12.11.1](https://github.com/laravel/laravel/compare/v12.11.0...v12.11.1) - 2025-12-23
+
+* Use environment variable for `DB_SSLMODE` - Postgres by [@robsontenorio](https://github.com/robsontenorio) in https://github.com/laravel/laravel/pull/6727
+* fix: ensure APP_URL does not have trailing slash in filesystem by [@msamgan](https://github.com/msamgan) in https://github.com/laravel/laravel/pull/6728
+
+## [v12.11.0](https://github.com/laravel/laravel/compare/v12.10.1...v12.11.0) - 2025-11-25
+
+* fix: cookies are not available for subdomains by default by [@joostdebruijn](https://github.com/joostdebruijn) in https://github.com/laravel/laravel/pull/6705
+* Fix PHP 8.5 PDO Driver Specific Constant Deprecation by [@RyanSchaefer](https://github.com/RyanSchaefer) in https://github.com/laravel/laravel/pull/6710
+* Ignore Laravel compiled views for Vite by [@QistiAmal1212](https://github.com/QistiAmal1212) in https://github.com/laravel/laravel/pull/6714
+
+## [v12.10.1](https://github.com/laravel/laravel/compare/v12.10.0...v12.10.1) - 2025-11-06
+
+* Update schema URL in package.json by [@robinmiau](https://github.com/robinmiau) in https://github.com/laravel/laravel/pull/6701
+
+## [v12.10.0](https://github.com/laravel/laravel/compare/v12.9.1...v12.10.0) - 2025-11-04
+
+* Add background driver by [@barryvdh](https://github.com/barryvdh) in https://github.com/laravel/laravel/pull/6699
+
+## [v12.9.1](https://github.com/laravel/laravel/compare/v12.9.0...v12.9.1) - 2025-10-23
+
+* [12.x] Replace Bootcamp with Laravel Learn by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6692
+* [12.x] Comment out CLI workers for fresh applications by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/laravel/pull/6693
+
+## [v12.9.0](https://github.com/laravel/laravel/compare/v12.8.0...v12.9.0) - 2025-10-21
+
+**Full Changelog**: https://github.com/laravel/laravel/compare/v12.8.0...v12.9.0
+
+## [v12.8.0](https://github.com/laravel/laravel/compare/v12.7.1...v12.8.0) - 2025-10-20
+
+* [12.x] Makes test suite using broadcast's `null` driver by [@nunomaduro](https://github.com/nunomaduro) in https://github.com/laravel/laravel/pull/6691
+
+## [v12.7.1](https://github.com/laravel/laravel/compare/v12.7.0...v12.7.1) - 2025-10-15
+
+* Added `failover` driver to the `queue` config comment. by [@sajjadhossainshohag](https://github.com/sajjadhossainshohag) in https://github.com/laravel/laravel/pull/6688
+
+## [v12.7.0](https://github.com/laravel/laravel/compare/v12.6.0...v12.7.0) - 2025-10-14
+
+**Full Changelog**: https://github.com/laravel/laravel/compare/v12.6.0...v12.7.0
+
+## [v12.6.0](https://github.com/laravel/laravel/compare/v12.5.0...v12.6.0) - 2025-10-02
+
+* Fix setup script by [@goldmont](https://github.com/goldmont) in https://github.com/laravel/laravel/pull/6682
+
+## [v12.5.0](https://github.com/laravel/laravel/compare/v12.4.0...v12.5.0) - 2025-09-30
+
+* [12.x] Fix type casting for environment variables in config files by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6670
+* Fix CVEs affecting vite by [@faissaloux](https://github.com/faissaloux) in https://github.com/laravel/laravel/pull/6672
+* Update .editorconfig to target compose.yaml by [@fredikaputra](https://github.com/fredikaputra) in https://github.com/laravel/laravel/pull/6679
+* Add pre-package-uninstall script to composer.json by [@cosmastech](https://github.com/cosmastech) in https://github.com/laravel/laravel/pull/6681
+
+## [v12.4.0](https://github.com/laravel/laravel/compare/v12.3.1...v12.4.0) - 2025-08-29
+
+* [12.x] Add default Redis retry configuration by [@mateusjatenee](https://github.com/mateusjatenee) in https://github.com/laravel/laravel/pull/6666
+
+## [v12.3.1](https://github.com/laravel/laravel/compare/v12.3.0...v12.3.1) - 2025-08-21
+
+* [12.x] Bump Pint version by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6653
+* [12.x] Making sure all related processed are closed when terminating the currently command by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6654
+* [12.x] Use application name from configuration by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6655
+* Bring back postAutoloadDump script by [@jasonvarga](https://github.com/jasonvarga) in https://github.com/laravel/laravel/pull/6662
+
+## [v12.3.0](https://github.com/laravel/laravel/compare/v12.2.0...v12.3.0) - 2025-08-03
+
+* Fix Critical Security Vulnerability in form-data Dependency by [@izzygld](https://github.com/izzygld) in https://github.com/laravel/laravel/pull/6645
+* Revert "fix" by [@RobertBoes](https://github.com/RobertBoes) in https://github.com/laravel/laravel/pull/6646
+* Change composer post-autoload-dump script to Artisan command by [@lmjhs](https://github.com/lmjhs) in https://github.com/laravel/laravel/pull/6647
+
+## [v12.2.0](https://github.com/laravel/laravel/compare/v12.1.0...v12.2.0) - 2025-07-11
+
+* Add Vite 7 support by [@timacdonald](https://github.com/timacdonald) in https://github.com/laravel/laravel/pull/6639
+
+## [v12.1.0](https://github.com/laravel/laravel/compare/v12.0.11...v12.1.0) - 2025-07-03
+
+* [12.x] Disable nightwatch in testing by [@laserhybiz](https://github.com/laserhybiz) in https://github.com/laravel/laravel/pull/6632
+* [12.x] Reorder environment variables in phpunit.xml for logical grouping by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6634
+* Change to hyphenate prefixes and cookie names by [@u01jmg3](https://github.com/u01jmg3) in https://github.com/laravel/laravel/pull/6636
+* [12.x] Fix type casting for environment variables in config files by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6637
+
+## [v12.0.11](https://github.com/laravel/laravel/compare/v12.0.10...v12.0.11) - 2025-06-10
+
+**Full Changelog**: https://github.com/laravel/laravel/compare/v12.0.10...v12.0.11
+
+## [v12.0.10](https://github.com/laravel/laravel/compare/v12.0.9...v12.0.10) - 2025-06-09
+
+* fix alphabetical order by [@Khuthaily](https://github.com/Khuthaily) in https://github.com/laravel/laravel/pull/6627
+* [12.x] Reduce redundancy and keeps the .gitignore file cleaner by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6629
+* [12.x] Fix: Add void return type to satisfy Rector analysis by [@Aluisio-Pires](https://github.com/Aluisio-Pires) in https://github.com/laravel/laravel/pull/6628
+
+## [v12.0.9](https://github.com/laravel/laravel/compare/v12.0.8...v12.0.9) - 2025-05-26
+
+* [12.x] Remove apc by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6611
+* [12.x] Add JSON Schema to package.json by [@martinbean](https://github.com/martinbean) in https://github.com/laravel/laravel/pull/6613
+* Minor language update by [@woganmay](https://github.com/woganmay) in https://github.com/laravel/laravel/pull/6615
+* Enhance .gitignore to exclude common OS and log files by [@mohammadRezaei1380](https://github.com/mohammadRezaei1380) in https://github.com/laravel/laravel/pull/6619
+
+## [v12.0.8](https://github.com/laravel/laravel/compare/v12.0.7...v12.0.8) - 2025-05-12
+
+* [12.x] Clean up URL formatting in README by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6601
+
+## [v12.0.7](https://github.com/laravel/laravel/compare/v12.0.6...v12.0.7) - 2025-04-15
+
+* Add `composer run test` command by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/laravel/pull/6598
+* Partner Directory Changes in ReadME by [@joshcirre](https://github.com/joshcirre) in https://github.com/laravel/laravel/pull/6599
+
+## [v12.0.6](https://github.com/laravel/laravel/compare/v12.0.5...v12.0.6) - 2025-04-08
+
+**Full Changelog**: https://github.com/laravel/laravel/compare/v12.0.5...v12.0.6
+
+## [v12.0.5](https://github.com/laravel/laravel/compare/v12.0.4...v12.0.5) - 2025-04-02
+
+* [12.x] Update `config/mail.php` to match the latest core configuration by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6594
+
+## [v12.0.4](https://github.com/laravel/laravel/compare/v12.0.3...v12.0.4) - 2025-03-31
+
+* Bump vite from 6.0.11 to 6.2.3 - Vulnerability patch by [@abdel-aouby](https://github.com/abdel-aouby) in https://github.com/laravel/laravel/pull/6586
+* Bump vite from 6.2.3 to 6.2.4 by [@thinkverse](https://github.com/thinkverse) in https://github.com/laravel/laravel/pull/6590
+
+## [v12.0.3](https://github.com/laravel/laravel/compare/v12.0.2...v12.0.3) - 2025-03-17
+
+* Remove reverted change from CHANGELOG.md by [@AJenbo](https://github.com/AJenbo) in https://github.com/laravel/laravel/pull/6565
+* Improves clarity in app.css file by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6569
+* [12.x] Refactor: Structural improvement for clarity by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6574
+* Bump axios from 1.7.9 to 1.8.2 - Vulnerability patch by [@abdel-aouby](https://github.com/abdel-aouby) in https://github.com/laravel/laravel/pull/6572
+* [12.x] Remove Unnecessarily [@source](https://github.com/source) by [@AhmedAlaa4611](https://github.com/AhmedAlaa4611) in https://github.com/laravel/laravel/pull/6584
+
+## [v12.0.2](https://github.com/laravel/laravel/compare/v12.0.1...v12.0.2) - 2025-03-04
+
+* Make the github test action run out of the box independent of the choice of testing framework by [@ndeblauw](https://github.com/ndeblauw) in https://github.com/laravel/laravel/pull/6555
+
+## [v12.0.1](https://github.com/laravel/laravel/compare/v12.0.0...v12.0.1) - 2025-02-24
+
+* [12.x] prefer stable stability by [@pataar](https://github.com/pataar) in https://github.com/laravel/laravel/pull/6548
## [v12.0.0 (2025-??-??)](https://github.com/laravel/laravel/compare/v11.0.2...v12.0.0)
diff --git a/README.md b/README.md
index 63d3e666..ac0ba41f 100644
--- a/README.md
+++ b/README.md
@@ -25,30 +25,10 @@ Laravel is accessible, powerful, and provides tools required for large, robust a
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
-If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
+In addition, [Laracasts](https://laracasts.com) contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
You can also watch bite-sized lessons with real-world projects on [Laravel Learn](https://laravel.com/learn), where you will be guided through building a Laravel application from scratch while learning PHP fundamentals.
-## Laravel Sponsors
-
-We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com).
-
-### Premium Partners
-
-- **[Vehikl](https://vehikl.com/)**
-- **[Tighten Co.](https://tighten.co)**
-- **[WebReinvent](https://webreinvent.com/)**
-- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
-- **[64 Robots](https://64robots.com)**
-- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
-- **[Cyber-Duck](https://cyber-duck.co.uk)**
-- **[DevSquad](https://devsquad.com/hire-laravel-developers)**
-- **[Jump24](https://jump24.co.uk)**
-- **[Redberry](https://redberry.international/laravel/)**
-- **[Active Logic](https://activelogic.com)**
-- **[byte5](https://byte5.de)**
-- **[OP.GG](https://op.gg)**
-
## Contributing
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
diff --git a/bootstrap/app.php b/bootstrap/app.php
index 7b162dac..c1832766 100644
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -10,9 +10,9 @@ return Application::configure(basePath: dirname(__DIR__))
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
- ->withMiddleware(function (Middleware $middleware) {
+ ->withMiddleware(function (Middleware $middleware): void {
//
})
- ->withExceptions(function (Exceptions $exceptions) {
+ ->withExceptions(function (Exceptions $exceptions): void {
//
})->create();
diff --git a/composer.json b/composer.json
index 792b9929..b17af3ef 100644
--- a/composer.json
+++ b/composer.json
@@ -13,11 +13,11 @@
"require-dev": {
"fakerphp/faker": "^1.23",
"laravel/pail": "^1.2.2",
- "laravel/pint": "^1.13",
+ "laravel/pint": "^1.24",
"laravel/sail": "^1.41",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
- "phpunit/phpunit": "^11.5.3"
+ "phpunit/phpunit": "^11.5.50"
},
"autoload": {
"psr-4": {
@@ -32,6 +32,22 @@
}
},
"scripts": {
+ "setup": [
+ "composer install",
+ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"",
+ "@php artisan key:generate",
+ "@php artisan migrate --force",
+ "npm install",
+ "npm run build"
+ ],
+ "dev": [
+ "Composer\\Config::disableProcessTimeout",
+ "npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1 --timeout=0\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite --kill-others"
+ ],
+ "test": [
+ "@php artisan config:clear --ansi",
+ "@php artisan test"
+ ],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
@@ -47,15 +63,11 @@
"@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
"@php artisan migrate --graceful --ansi"
],
- "dev": [
- "Composer\\Config::disableProcessTimeout",
- "npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite"
+ "pre-package-uninstall": [
+ "Illuminate\\Foundation\\ComposerScripts::prePackageUninstall"
]
},
"extra": {
- "branch-alias": {
- "dev-master": "12.x-dev"
- },
"laravel": {
"dont-discover": []
}
@@ -69,6 +81,6 @@
"php-http/discovery": true
}
},
- "minimum-stability": "dev",
+ "minimum-stability": "stable",
"prefer-stable": true
}
diff --git a/config/app.php b/config/app.php
index 324b513a..423eed59 100644
--- a/config/app.php
+++ b/config/app.php
@@ -101,7 +101,7 @@ return [
'previous_keys' => [
...array_filter(
- explode(',', env('APP_PREVIOUS_KEYS', ''))
+ explode(',', (string) env('APP_PREVIOUS_KEYS', ''))
),
],
diff --git a/config/auth.php b/config/auth.php
index 0ba5d5d8..7d1eb0de 100644
--- a/config/auth.php
+++ b/config/auth.php
@@ -104,7 +104,7 @@ return [
| Password Confirmation Timeout
|--------------------------------------------------------------------------
|
- | Here you may define the amount of seconds before a password confirmation
+ | Here you may define the number of seconds before a password confirmation
| window expires and users are asked to re-enter their password via the
| confirmation screen. By default, the timeout lasts for three hours.
|
diff --git a/config/cache.php b/config/cache.php
index 925f7d2e..b32aead2 100644
--- a/config/cache.php
+++ b/config/cache.php
@@ -27,7 +27,8 @@ return [
| same cache driver to group types of items stored in your caches.
|
| Supported drivers: "array", "database", "file", "memcached",
- | "redis", "dynamodb", "octane", "null"
+ | "redis", "dynamodb", "octane",
+ | "failover", "null"
|
*/
@@ -90,6 +91,14 @@ return [
'driver' => 'octane',
],
+ 'failover' => [
+ 'driver' => 'failover',
+ 'stores' => [
+ 'database',
+ 'array',
+ ],
+ ],
+
],
/*
@@ -103,6 +112,6 @@ return [
|
*/
- 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'),
+ 'prefix' => env('CACHE_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')).'-cache-'),
];
diff --git a/config/database.php b/config/database.php
index 8910562d..df933e7f 100644
--- a/config/database.php
+++ b/config/database.php
@@ -40,6 +40,7 @@ return [
'busy_timeout' => null,
'journal_mode' => null,
'synchronous' => null,
+ 'transaction_mode' => 'DEFERRED',
],
'mysql' => [
@@ -58,7 +59,7 @@ return [
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
- PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
+ (PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
@@ -78,7 +79,7 @@ return [
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
- PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
+ (PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
@@ -94,7 +95,7 @@ return [
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
- 'sslmode' => 'prefer',
+ 'sslmode' => env('DB_SSLMODE', 'prefer'),
],
'sqlsrv' => [
@@ -147,7 +148,7 @@ return [
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
- 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
+ 'prefix' => env('REDIS_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')).'-database-'),
'persistent' => env('REDIS_PERSISTENT', false),
],
@@ -158,6 +159,10 @@ return [
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', '0'),
+ 'max_retries' => env('REDIS_MAX_RETRIES', 3),
+ 'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'),
+ 'backoff_base' => env('REDIS_BACKOFF_BASE', 100),
+ 'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000),
],
'cache' => [
@@ -167,6 +172,10 @@ return [
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_CACHE_DB', '1'),
+ 'max_retries' => env('REDIS_MAX_RETRIES', 3),
+ 'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'),
+ 'backoff_base' => env('REDIS_BACKOFF_BASE', 100),
+ 'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000),
],
],
diff --git a/config/filesystems.php b/config/filesystems.php
index 3d671bd9..37d8fca4 100644
--- a/config/filesystems.php
+++ b/config/filesystems.php
@@ -41,7 +41,7 @@ return [
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
- 'url' => env('APP_URL').'/storage',
+ 'url' => rtrim(env('APP_URL', 'http://localhost'), '/').'/storage',
'visibility' => 'public',
'throw' => false,
'report' => false,
diff --git a/config/logging.php b/config/logging.php
index 8d94292b..9e998a49 100644
--- a/config/logging.php
+++ b/config/logging.php
@@ -54,7 +54,7 @@ return [
'stack' => [
'driver' => 'stack',
- 'channels' => explode(',', env('LOG_STACK', 'single')),
+ 'channels' => explode(',', (string) env('LOG_STACK', 'single')),
'ignore_exceptions' => false,
],
@@ -98,10 +98,10 @@ return [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => StreamHandler::class,
- 'formatter' => env('LOG_STDERR_FORMATTER'),
- 'with' => [
+ 'handler_with' => [
'stream' => 'php://stderr',
],
+ 'formatter' => env('LOG_STDERR_FORMATTER'),
'processors' => [PsrLogMessageProcessor::class],
],
diff --git a/config/mail.php b/config/mail.php
index 756305b3..522b284b 100644
--- a/config/mail.php
+++ b/config/mail.php
@@ -46,7 +46,7 @@ return [
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
- 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL', 'http://localhost'), PHP_URL_HOST)),
+ 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url((string) env('APP_URL', 'http://localhost'), PHP_URL_HOST)),
],
'ses' => [
@@ -85,6 +85,7 @@ return [
'smtp',
'log',
],
+ 'retry_after' => 60,
],
'roundrobin' => [
@@ -93,6 +94,7 @@ return [
'ses',
'postmark',
],
+ 'retry_after' => 60,
],
],
diff --git a/config/queue.php b/config/queue.php
index 116bd8d0..79c2c0a2 100644
--- a/config/queue.php
+++ b/config/queue.php
@@ -24,7 +24,8 @@ return [
| used by your application. An example configuration is provided for
| each backend supported by Laravel. You're also free to add more.
|
- | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
+ | Drivers: "sync", "database", "beanstalkd", "sqs", "redis",
+ | "deferred", "background", "failover", "null"
|
*/
@@ -72,6 +73,22 @@ return [
'after_commit' => false,
],
+ 'deferred' => [
+ 'driver' => 'deferred',
+ ],
+
+ 'background' => [
+ 'driver' => 'background',
+ ],
+
+ 'failover' => [
+ 'driver' => 'failover',
+ 'connections' => [
+ 'database',
+ 'deferred',
+ ],
+ ],
+
],
/*
diff --git a/config/services.php b/config/services.php
index 27a36175..6a90eb83 100644
--- a/config/services.php
+++ b/config/services.php
@@ -15,7 +15,11 @@ return [
*/
'postmark' => [
- 'token' => env('POSTMARK_TOKEN'),
+ 'key' => env('POSTMARK_API_KEY'),
+ ],
+
+ 'resend' => [
+ 'key' => env('RESEND_API_KEY'),
],
'ses' => [
@@ -24,10 +28,6 @@ return [
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
- 'resend' => [
- 'key' => env('RESEND_KEY'),
- ],
-
'slack' => [
'notifications' => [
'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'),
diff --git a/config/session.php b/config/session.php
index ba0aa60b..5b541b75 100644
--- a/config/session.php
+++ b/config/session.php
@@ -13,8 +13,8 @@ return [
| incoming requests. Laravel supports a variety of storage options to
| persist session data. Database storage is a great default choice.
|
- | Supported: "file", "cookie", "database", "apc",
- | "memcached", "redis", "dynamodb", "array"
+ | Supported: "file", "cookie", "database", "memcached",
+ | "redis", "dynamodb", "array"
|
*/
@@ -97,7 +97,7 @@ return [
| define the cache store which should be used to store the session data
| between requests. This must match one of your defined cache stores.
|
- | Affects: "apc", "dynamodb", "memcached", "redis"
+ | Affects: "dynamodb", "memcached", "redis"
|
*/
@@ -129,7 +129,7 @@ return [
'cookie' => env(
'SESSION_COOKIE',
- Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
+ Str::slug((string) env('APP_NAME', 'laravel')).'-session'
),
/*
@@ -152,7 +152,7 @@ return [
|
| This value determines the domain and subdomains the session cookie is
| available to. By default, the cookie will be available to the root
- | domain and all subdomains. Typically, this shouldn't be changed.
+ | domain without subdomains. Typically, this shouldn't be changed.
|
*/
diff --git a/database/migrations/0001_01_01_000001_create_cache_table.php b/database/migrations/0001_01_01_000001_create_cache_table.php
index b9c106be..ed758bdf 100644
--- a/database/migrations/0001_01_01_000001_create_cache_table.php
+++ b/database/migrations/0001_01_01_000001_create_cache_table.php
@@ -14,13 +14,13 @@ return new class extends Migration
Schema::create('cache', function (Blueprint $table) {
$table->string('key')->primary();
$table->mediumText('value');
- $table->integer('expiration');
+ $table->integer('expiration')->index();
});
Schema::create('cache_locks', function (Blueprint $table) {
$table->string('key')->primary();
$table->string('owner');
- $table->integer('expiration');
+ $table->integer('expiration')->index();
});
}
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index d01a0ef2..6b901f8b 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -3,11 +3,13 @@
namespace Database\Seeders;
use App\Models\User;
-// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
+ use WithoutModelEvents;
+
/**
* Seed the application's database.
*/
diff --git a/package.json b/package.json
index a047e268..7686b295 100644
--- a/package.json
+++ b/package.json
@@ -1,4 +1,5 @@
{
+ "$schema": "https://www.schemastore.org/package.json",
"private": true,
"type": "module",
"scripts": {
@@ -7,10 +8,10 @@
},
"devDependencies": {
"@tailwindcss/vite": "^4.0.0",
- "axios": "^1.7.4",
+ "axios": "^1.11.0",
"concurrently": "^9.0.1",
- "laravel-vite-plugin": "^1.2.0",
+ "laravel-vite-plugin": "^2.0.0",
"tailwindcss": "^4.0.0",
- "vite": "^6.0.11"
+ "vite": "^7.0.7"
}
}
diff --git a/phpunit.xml b/phpunit.xml
index 506b9a38..d7032415 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -21,13 +21,15 @@