diff --git a/.cursor/rules/laravel-boost.mdc b/.cursor/rules/laravel-boost.mdc index 037ae20..b59da01 100644 --- a/.cursor/rules/laravel-boost.mdc +++ b/.cursor/rules/laravel-boost.mdc @@ -20,6 +20,7 @@ This application is a Laravel application and its main Laravel ecosystems packag - livewire/livewire (LIVEWIRE) - v3 - livewire/volt (VOLT) - v1 - larastan/larastan (LARASTAN) - v3 +- laravel/mcp (MCP) - v0 - laravel/pint (PINT) - v1 - laravel/sail (SAIL) - v1 - pestphp/pest (PEST) - v4 @@ -231,7 +232,7 @@ avatar, badge, brand, breadcrumbs, button, callout, checkbox, dropdown, field, h @endforeach ``` -- Prefer lifecycle hooks like `mount()`, `updatedFoo()`) for initialization and reactive side effects: +- Prefer lifecycle hooks like `mount()`, `updatedFoo()` for initialization and reactive side effects: public function mount(User $user) { $this->user = $user; } @@ -543,7 +544,7 @@ $pages->assertNoJavascriptErrors()->assertNoConsoleLogs(); - `corePlugins` is not supported in Tailwind v4. - In Tailwind v4, you import Tailwind using a regular CSS `@import` statement, not using the `@tailwind` directives used in v3: - - @tailwind base; - @tailwind components; - @tailwind utilities; diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index cb9f245..cd02453 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -17,6 +17,7 @@ This application is a Laravel application and its main Laravel ecosystems packag - livewire/livewire (LIVEWIRE) - v3 - livewire/volt (VOLT) - v1 - larastan/larastan (LARASTAN) - v3 +- laravel/mcp (MCP) - v0 - laravel/pint (PINT) - v1 - laravel/sail (SAIL) - v1 - pestphp/pest (PEST) - v4 @@ -228,7 +229,7 @@ avatar, badge, brand, breadcrumbs, button, callout, checkbox, dropdown, field, h @endforeach ``` -- Prefer lifecycle hooks like `mount()`, `updatedFoo()`) for initialization and reactive side effects: +- Prefer lifecycle hooks like `mount()`, `updatedFoo()` for initialization and reactive side effects: public function mount(User $user) { $this->user = $user; } @@ -540,7 +541,7 @@ $pages->assertNoJavascriptErrors()->assertNoConsoleLogs(); - `corePlugins` is not supported in Tailwind v4. - In Tailwind v4, you import Tailwind using a regular CSS `@import` statement, not using the `@tailwind` directives used in v3: - - @tailwind base; - @tailwind components; - @tailwind utilities; diff --git a/.junie/guidelines.md b/.junie/guidelines.md index cb9f245..cd02453 100644 --- a/.junie/guidelines.md +++ b/.junie/guidelines.md @@ -17,6 +17,7 @@ This application is a Laravel application and its main Laravel ecosystems packag - livewire/livewire (LIVEWIRE) - v3 - livewire/volt (VOLT) - v1 - larastan/larastan (LARASTAN) - v3 +- laravel/mcp (MCP) - v0 - laravel/pint (PINT) - v1 - laravel/sail (SAIL) - v1 - pestphp/pest (PEST) - v4 @@ -228,7 +229,7 @@ avatar, badge, brand, breadcrumbs, button, callout, checkbox, dropdown, field, h @endforeach ``` -- Prefer lifecycle hooks like `mount()`, `updatedFoo()`) for initialization and reactive side effects: +- Prefer lifecycle hooks like `mount()`, `updatedFoo()` for initialization and reactive side effects: public function mount(User $user) { $this->user = $user; } @@ -540,7 +541,7 @@ $pages->assertNoJavascriptErrors()->assertNoConsoleLogs(); - `corePlugins` is not supported in Tailwind v4. - In Tailwind v4, you import Tailwind using a regular CSS `@import` statement, not using the `@tailwind` directives used in v3: - - @tailwind base; - @tailwind components; - @tailwind utilities; diff --git a/CLAUDE.md b/CLAUDE.md index cb9f245..cd02453 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -17,6 +17,7 @@ This application is a Laravel application and its main Laravel ecosystems packag - livewire/livewire (LIVEWIRE) - v3 - livewire/volt (VOLT) - v1 - larastan/larastan (LARASTAN) - v3 +- laravel/mcp (MCP) - v0 - laravel/pint (PINT) - v1 - laravel/sail (SAIL) - v1 - pestphp/pest (PEST) - v4 @@ -228,7 +229,7 @@ avatar, badge, brand, breadcrumbs, button, callout, checkbox, dropdown, field, h @endforeach ``` -- Prefer lifecycle hooks like `mount()`, `updatedFoo()`) for initialization and reactive side effects: +- Prefer lifecycle hooks like `mount()`, `updatedFoo()` for initialization and reactive side effects: public function mount(User $user) { $this->user = $user; } @@ -540,7 +541,7 @@ $pages->assertNoJavascriptErrors()->assertNoConsoleLogs(); - `corePlugins` is not supported in Tailwind v4. - In Tailwind v4, you import Tailwind using a regular CSS `@import` statement, not using the `@tailwind` directives used in v3: - - @tailwind base; - @tailwind components; - @tailwind utilities; diff --git a/composer.json b/composer.json index 8417cc6..e3cbb13 100644 --- a/composer.json +++ b/composer.json @@ -4,9 +4,9 @@ "type": "project", "description": "TRMNL Server Implementation (BYOS) for Laravel", "keywords": [ - "laravel", - "framework", - "trmnl" + "trmnl", + "trmnl-server", + "laravel" ], "license": "MIT", "require": { @@ -14,7 +14,7 @@ "ext-imagick": "*", "ext-zip": "*", "bnussbau/laravel-trmnl-blade": "2.0.*", - "intervention/image": "^3.11", + "bnussbau/trmnl-pipeline-php": "^0.2.0", "keepsuit/laravel-liquid": "^0.5.2", "laravel/framework": "^12.1", "laravel/sanctum": "^4.0", @@ -73,7 +73,9 @@ ], "test": "vendor/bin/pest", "test-coverage": "vendor/bin/pest --coverage", - "format": "vendor/bin/pint" + "format": "vendor/bin/pint", + "analyse": "vendor/bin/phpstan analyse", + "analyze": "vendor/bin/phpstan analyse" }, "extra": { "laravel": { diff --git a/composer.lock b/composer.lock index b81fae3..86636bc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "349a46b94103f479caae00ca7e6a99c2", + "content-hash": "f8f7d3fd0eba117ddeb5463047ac5493", "packages": [ { "name": "aws/aws-crt-php", @@ -241,6 +241,77 @@ ], "time": "2025-09-14T07:54:31+00:00" }, + { + "name": "bnussbau/trmnl-pipeline-php", + "version": "0.2.0", + "source": { + "type": "git", + "url": "https://github.com/bnussbau/trmnl-pipeline-php.git", + "reference": "0a85e4c935a7009c469c014c6b7f2d9783d82523" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bnussbau/trmnl-pipeline-php/zipball/0a85e4c935a7009c469c014c6b7f2d9783d82523", + "reference": "0a85e4c935a7009c469c014c6b7f2d9783d82523", + "shasum": "" + }, + "require": { + "ext-imagick": "*", + "league/pipeline": "^1.0", + "php": "^8.2", + "spatie/browsershot": "^5.0" + }, + "require-dev": { + "laravel/pint": "^1.0", + "pestphp/pest": "^4.0", + "phpstan/phpstan": "^1.10", + "rector/rector": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Bnussbau\\TrmnlPipeline\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "bnussbau", + "email": "bnussbau@users.noreply.github.com", + "role": "Developer" + } + ], + "description": "Convert HTML content into optimized images for a range of e-ink devices.", + "homepage": "https://github.com/bnussbau/trmnl-pipeline-php", + "keywords": [ + "TRMNL", + "bnussbau", + "e-ink", + "trmnl-pipeline-php" + ], + "support": { + "issues": "https://github.com/bnussbau/trmnl-pipeline-php/issues", + "source": "https://github.com/bnussbau/trmnl-pipeline-php/tree/0.2.0" + }, + "funding": [ + { + "url": "https://www.buymeacoffee.com/bnussbau", + "type": "buy_me_a_coffee" + }, + { + "url": "https://usetrmnl.com/?ref=laravel-trmnl", + "type": "custom" + }, + { + "url": "https://github.com/bnussbau", + "type": "github" + } + ], + "time": "2025-09-18T16:40:28+00:00" + }, { "name": "brick/math", "version": "0.14.0", @@ -1409,150 +1480,6 @@ }, "time": "2025-08-22T14:58:51+00:00" }, - { - "name": "intervention/gif", - "version": "4.2.2", - "source": { - "type": "git", - "url": "https://github.com/Intervention/gif.git", - "reference": "5999eac6a39aa760fb803bc809e8909ee67b451a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Intervention/gif/zipball/5999eac6a39aa760fb803bc809e8909ee67b451a", - "reference": "5999eac6a39aa760fb803bc809e8909ee67b451a", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "phpstan/phpstan": "^2.1", - "phpunit/phpunit": "^10.0 || ^11.0 || ^12.0", - "slevomat/coding-standard": "~8.0", - "squizlabs/php_codesniffer": "^3.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Intervention\\Gif\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Oliver Vogel", - "email": "oliver@intervention.io", - "homepage": "https://intervention.io/" - } - ], - "description": "Native PHP GIF Encoder/Decoder", - "homepage": "https://github.com/intervention/gif", - "keywords": [ - "animation", - "gd", - "gif", - "image" - ], - "support": { - "issues": "https://github.com/Intervention/gif/issues", - "source": "https://github.com/Intervention/gif/tree/4.2.2" - }, - "funding": [ - { - "url": "https://paypal.me/interventionio", - "type": "custom" - }, - { - "url": "https://github.com/Intervention", - "type": "github" - }, - { - "url": "https://ko-fi.com/interventionphp", - "type": "ko_fi" - } - ], - "time": "2025-03-29T07:46:21+00:00" - }, - { - "name": "intervention/image", - "version": "3.11.4", - "source": { - "type": "git", - "url": "https://github.com/Intervention/image.git", - "reference": "8c49eb21a6d2572532d1bc425964264f3e496846" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/8c49eb21a6d2572532d1bc425964264f3e496846", - "reference": "8c49eb21a6d2572532d1bc425964264f3e496846", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "intervention/gif": "^4.2", - "php": "^8.1" - }, - "require-dev": { - "mockery/mockery": "^1.6", - "phpstan/phpstan": "^2.1", - "phpunit/phpunit": "^10.0 || ^11.0 || ^12.0", - "slevomat/coding-standard": "~8.0", - "squizlabs/php_codesniffer": "^3.8" - }, - "suggest": { - "ext-exif": "Recommended to be able to read EXIF data properly." - }, - "type": "library", - "autoload": { - "psr-4": { - "Intervention\\Image\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Oliver Vogel", - "email": "oliver@intervention.io", - "homepage": "https://intervention.io/" - } - ], - "description": "PHP image manipulation", - "homepage": "https://image.intervention.io/", - "keywords": [ - "gd", - "image", - "imagick", - "resize", - "thumbnail", - "watermark" - ], - "support": { - "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/3.11.4" - }, - "funding": [ - { - "url": "https://paypal.me/interventionio", - "type": "custom" - }, - { - "url": "https://github.com/Intervention", - "type": "github" - }, - { - "url": "https://ko-fi.com/interventionphp", - "type": "ko_fi" - } - ], - "time": "2025-07-30T13:13:19+00:00" - }, { "name": "keepsuit/laravel-liquid", "version": "v0.5.4", @@ -1691,16 +1618,16 @@ }, { "name": "laravel/framework", - "version": "v12.29.0", + "version": "v12.30.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "a9e4c73086f5ba38383e9c1d74b84fe46aac730b" + "reference": "943603722fe95b69f216bdcda7d060c9a55f18fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/a9e4c73086f5ba38383e9c1d74b84fe46aac730b", - "reference": "a9e4c73086f5ba38383e9c1d74b84fe46aac730b", + "url": "https://api.github.com/repos/laravel/framework/zipball/943603722fe95b69f216bdcda7d060c9a55f18fd", + "reference": "943603722fe95b69f216bdcda7d060c9a55f18fd", "shasum": "" }, "require": { @@ -1728,7 +1655,7 @@ "monolog/monolog": "^3.0", "nesbot/carbon": "^3.8.4", "nunomaduro/termwind": "^2.0", - "phiki/phiki": "v2.0.0", + "phiki/phiki": "^2.0.0", "php": "^8.2", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", @@ -1907,7 +1834,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-09-16T14:15:03+00:00" + "time": "2025-09-18T15:10:15+00:00" }, { "name": "laravel/prompts", @@ -2684,6 +2611,62 @@ }, "time": "2024-12-10T19:59:05+00:00" }, + { + "name": "league/pipeline", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/pipeline.git", + "reference": "9069ddfdbd5582f8a563e00cffdbeffb9a0acd01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/pipeline/zipball/9069ddfdbd5582f8a563e00cffdbeffb9a0acd01", + "reference": "9069ddfdbd5582f8a563e00cffdbeffb9a0acd01", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.0 || ^10.0 || ^11.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Pipeline\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net", + "role": "Author" + }, + { + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com", + "role": "Maintainer" + } + ], + "description": "A plug and play pipeline implementation.", + "keywords": [ + "composition", + "design pattern", + "pattern", + "pipeline", + "sequential" + ], + "support": { + "issues": "https://github.com/thephpleague/pipeline/issues", + "source": "https://github.com/thephpleague/pipeline/tree/1.1.0" + }, + "time": "2025-02-06T08:48:15+00:00" + }, { "name": "league/uri", "version": "7.5.1", @@ -3839,16 +3822,16 @@ }, { "name": "phiki/phiki", - "version": "v2.0.0", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/phikiphp/phiki.git", - "reference": "461f6dd7e91dc3a95463b42f549ac7d0aab4702f" + "reference": "6d735108238c03daaaef571448d8dee8187cab5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phikiphp/phiki/zipball/461f6dd7e91dc3a95463b42f549ac7d0aab4702f", - "reference": "461f6dd7e91dc3a95463b42f549ac7d0aab4702f", + "url": "https://api.github.com/repos/phikiphp/phiki/zipball/6d735108238c03daaaef571448d8dee8187cab5e", + "reference": "6d735108238c03daaaef571448d8dee8187cab5e", "shasum": "" }, "require": { @@ -3894,7 +3877,7 @@ "description": "Syntax highlighting using TextMate grammars in PHP.", "support": { "issues": "https://github.com/phikiphp/phiki/issues", - "source": "https://github.com/phikiphp/phiki/tree/v2.0.0" + "source": "https://github.com/phikiphp/phiki/tree/v2.0.2" }, "funding": [ { @@ -3906,7 +3889,7 @@ "type": "other" } ], - "time": "2025-08-28T18:20:27+00:00" + "time": "2025-09-17T18:32:40+00:00" }, { "name": "phpoption/phpoption", @@ -8545,35 +8528,35 @@ }, { "name": "laravel/boost", - "version": "v1.1.5", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/laravel/boost.git", - "reference": "4bd1692c064b2135eb2f8f7bd8bcb710e5e75f86" + "reference": "85f7de54a6b60f684fc9f7f6df5ad94f4f7d0d24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/boost/zipball/4bd1692c064b2135eb2f8f7bd8bcb710e5e75f86", - "reference": "4bd1692c064b2135eb2f8f7bd8bcb710e5e75f86", + "url": "https://api.github.com/repos/laravel/boost/zipball/85f7de54a6b60f684fc9f7f6df5ad94f4f7d0d24", + "reference": "85f7de54a6b60f684fc9f7f6df5ad94f4f7d0d24", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^7.9", - "illuminate/console": "^10.0|^11.0|^12.0", - "illuminate/contracts": "^10.0|^11.0|^12.0", - "illuminate/routing": "^10.0|^11.0|^12.0", - "illuminate/support": "^10.0|^11.0|^12.0", - "laravel/mcp": "^0.1.1", - "laravel/prompts": "^0.1.9|^0.3", - "laravel/roster": "^0.2.5", + "guzzlehttp/guzzle": "^7.10", + "illuminate/console": "^10.49.0|^11.45.3|^12.28.1", + "illuminate/contracts": "^10.49.0|^11.45.3|^12.28.1", + "illuminate/routing": "^10.49.0|^11.45.3|^12.28.1", + "illuminate/support": "^10.49.0|^11.45.3|^12.28.1", + "laravel/mcp": "^0.2.0", + "laravel/prompts": "0.1.25|^0.3.6", + "laravel/roster": "^0.2.6", "php": "^8.1" }, "require-dev": { - "laravel/pint": "^1.14", - "mockery/mockery": "^1.6", - "orchestra/testbench": "^8.22.0|^9.0|^10.0", - "pestphp/pest": "^2.0|^3.0", - "phpstan/phpstan": "^2.0" + "laravel/pint": "1.20", + "mockery/mockery": "^1.6.12", + "orchestra/testbench": "^8.36.0|^9.15.0|^10.6", + "pestphp/pest": "^2.36.0|^3.8.4", + "phpstan/phpstan": "^2.1.27" }, "type": "library", "extra": { @@ -8595,7 +8578,7 @@ "license": [ "MIT" ], - "description": "Laravel Boost accelerates AI-assisted development to generate high-quality, Laravel-specific code.", + "description": "Laravel Boost accelerates AI-assisted development by providing the essential context and structure that AI needs to generate high-quality, Laravel-specific code.", "homepage": "https://github.com/laravel/boost", "keywords": [ "ai", @@ -8606,35 +8589,41 @@ "issues": "https://github.com/laravel/boost/issues", "source": "https://github.com/laravel/boost" }, - "time": "2025-09-18T07:33:27+00:00" + "time": "2025-09-18T13:05:07+00:00" }, { "name": "laravel/mcp", - "version": "v0.1.1", + "version": "v0.2.0", "source": { "type": "git", "url": "https://github.com/laravel/mcp.git", - "reference": "6d6284a491f07c74d34f48dfd999ed52c567c713" + "reference": "56fade6882756d5828cc90b86611d29616c2d754" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/mcp/zipball/6d6284a491f07c74d34f48dfd999ed52c567c713", - "reference": "6d6284a491f07c74d34f48dfd999ed52c567c713", + "url": "https://api.github.com/repos/laravel/mcp/zipball/56fade6882756d5828cc90b86611d29616c2d754", + "reference": "56fade6882756d5828cc90b86611d29616c2d754", "shasum": "" }, "require": { - "illuminate/console": "^10.0|^11.0|^12.0", - "illuminate/contracts": "^10.0|^11.0|^12.0", - "illuminate/http": "^10.0|^11.0|^12.0", - "illuminate/routing": "^10.0|^11.0|^12.0", - "illuminate/support": "^10.0|^11.0|^12.0", - "illuminate/validation": "^10.0|^11.0|^12.0", - "php": "^8.1|^8.2" + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/console": "^10.49.0|^11.45.3|^12.28.1", + "illuminate/container": "^10.49.0|^11.45.3|^12.28.1", + "illuminate/contracts": "^10.49.0|^11.45.3|^12.28.1", + "illuminate/http": "^10.49.0|^11.45.3|^12.28.1", + "illuminate/json-schema": "^12.28.1", + "illuminate/routing": "^10.49.0|^11.45.3|^12.28.1", + "illuminate/support": "^10.49.0|^11.45.3|^12.28.1", + "illuminate/validation": "^10.49.0|^11.45.3|^12.28.1", + "php": "^8.1" }, "require-dev": { - "laravel/pint": "^1.14", - "orchestra/testbench": "^8.22.0|^9.0|^10.0", - "phpstan/phpstan": "^2.0" + "laravel/pint": "1.20.0", + "orchestra/testbench": "^8.36.0|^9.15.0|^10.6.0", + "pestphp/pest": "^2.36.0|^3.8.4|^4.1.0", + "phpstan/phpstan": "^2.1.27", + "rector/rector": "^2.1.7" }, "type": "library", "extra": { @@ -8650,8 +8639,6 @@ "autoload": { "psr-4": { "Laravel\\Mcp\\": "src/", - "Workbench\\App\\": "workbench/app/", - "Laravel\\Mcp\\Tests\\": "tests/", "Laravel\\Mcp\\Server\\": "src/Server/" } }, @@ -8659,10 +8646,15 @@ "license": [ "MIT" ], - "description": "The easiest way to add MCP servers to your Laravel app.", + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Rapidly build MCP servers for your Laravel applications.", "homepage": "https://github.com/laravel/mcp", "keywords": [ - "dev", "laravel", "mcp" ], @@ -8670,7 +8662,7 @@ "issues": "https://github.com/laravel/mcp/issues", "source": "https://github.com/laravel/mcp" }, - "time": "2025-08-16T09:50:43+00:00" + "time": "2025-09-18T12:58:47+00:00" }, { "name": "laravel/pail", @@ -8819,16 +8811,16 @@ }, { "name": "laravel/roster", - "version": "v0.2.6", + "version": "v0.2.7", "source": { "type": "git", "url": "https://github.com/laravel/roster.git", - "reference": "5615acdf860c5a5c61d04aba44f2d3312550c514" + "reference": "9de07bfb52cfe4e5a1fec10b8a446d6add8376cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/roster/zipball/5615acdf860c5a5c61d04aba44f2d3312550c514", - "reference": "5615acdf860c5a5c61d04aba44f2d3312550c514", + "url": "https://api.github.com/repos/laravel/roster/zipball/9de07bfb52cfe4e5a1fec10b8a446d6add8376cd", + "reference": "9de07bfb52cfe4e5a1fec10b8a446d6add8376cd", "shasum": "" }, "require": { @@ -8876,7 +8868,7 @@ "issues": "https://github.com/laravel/roster/issues", "source": "https://github.com/laravel/roster" }, - "time": "2025-09-04T07:31:39+00:00" + "time": "2025-09-18T13:53:41+00:00" }, { "name": "laravel/sail",