From 7864c8b7ab39a3311afdb1ff80fe2f7e99a6e5bb Mon Sep 17 00:00:00 2001 From: Benjamin Nussbaum Date: Wed, 11 Mar 2026 06:41:17 +0100 Subject: [PATCH 1/4] chore: update dependencies --- composer.lock | 116 +++++++++++++++++++++++++------------------------- 1 file changed, 59 insertions(+), 57 deletions(-) diff --git a/composer.lock b/composer.lock index 82d7b7a..14b2fac 100644 --- a/composer.lock +++ b/composer.lock @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.372.1", + "version": "3.372.3", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "a48ff951eaad7f038eca3e0e89f168048b99082b" + "reference": "d207d2ca972c9b10674e535dacd4a5d956a80bad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/a48ff951eaad7f038eca3e0e89f168048b99082b", - "reference": "a48ff951eaad7f038eca3e0e89f168048b99082b", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d207d2ca972c9b10674e535dacd4a5d956a80bad", + "reference": "d207d2ca972c9b10674e535dacd4a5d956a80bad", "shasum": "" }, "require": { @@ -153,9 +153,9 @@ "support": { "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.372.1" + "source": "https://github.com/aws/aws-sdk-php/tree/3.372.3" }, - "time": "2026-03-06T21:27:21+00:00" + "time": "2026-03-10T18:07:21+00:00" }, { "name": "bacon/bacon-qr-code", @@ -1435,16 +1435,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.8.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "21dc724a0583619cd1652f673303492272778051" + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", - "reference": "21dc724a0583619cd1652f673303492272778051", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884", + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884", "shasum": "" }, "require": { @@ -1460,6 +1460,7 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "0.9.0", + "jshttp/mime-db": "1.54.0.1", "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { @@ -1531,7 +1532,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.8.0" + "source": "https://github.com/guzzle/psr7/tree/2.9.0" }, "funding": [ { @@ -1547,7 +1548,7 @@ "type": "tidelift" } ], - "time": "2025-08-23T21:21:41+00:00" + "time": "2026-03-10T16:41:02+00:00" }, { "name": "guzzlehttp/uri-template", @@ -1831,16 +1832,16 @@ }, { "name": "laravel/fortify", - "version": "v1.35.0", + "version": "v1.36.1", "source": { "type": "git", "url": "https://github.com/laravel/fortify.git", - "reference": "24c5bb81ea4787e0865c4a62f054ed7d1cb7a093" + "reference": "cad8bfeb63f6818f173d40090725c565c92651d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/fortify/zipball/24c5bb81ea4787e0865c4a62f054ed7d1cb7a093", - "reference": "24c5bb81ea4787e0865c4a62f054ed7d1cb7a093", + "url": "https://api.github.com/repos/laravel/fortify/zipball/cad8bfeb63f6818f173d40090725c565c92651d4", + "reference": "cad8bfeb63f6818f173d40090725c565c92651d4", "shasum": "" }, "require": { @@ -1890,20 +1891,20 @@ "issues": "https://github.com/laravel/fortify/issues", "source": "https://github.com/laravel/fortify" }, - "time": "2026-02-24T14:00:44+00:00" + "time": "2026-03-10T19:59:49+00:00" }, { "name": "laravel/framework", - "version": "v12.53.0", + "version": "v12.54.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "f57f035c0d34503d9ff30be76159bb35a003cd1f" + "reference": "325497463e7599cd14224c422c6e5dd2fe832868" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/f57f035c0d34503d9ff30be76159bb35a003cd1f", - "reference": "f57f035c0d34503d9ff30be76159bb35a003cd1f", + "url": "https://api.github.com/repos/laravel/framework/zipball/325497463e7599cd14224c422c6e5dd2fe832868", + "reference": "325497463e7599cd14224c422c6e5dd2fe832868", "shasum": "" }, "require": { @@ -1924,7 +1925,7 @@ "guzzlehttp/uri-template": "^1.0", "laravel/prompts": "^0.3.0", "laravel/serializable-closure": "^1.3|^2.0", - "league/commonmark": "^2.7", + "league/commonmark": "^2.8.1", "league/flysystem": "^3.25.1", "league/flysystem-local": "^3.25.1", "league/uri": "^7.5.1", @@ -2112,20 +2113,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2026-02-24T14:35:15+00:00" + "time": "2026-03-10T20:25:56+00:00" }, { "name": "laravel/prompts", - "version": "v0.3.13", + "version": "v0.3.14", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "ed8c466571b37e977532fb2fd3c272c784d7050d" + "reference": "9f0e371244eedfe2ebeaa72c79c54bb5df6e0176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/ed8c466571b37e977532fb2fd3c272c784d7050d", - "reference": "ed8c466571b37e977532fb2fd3c272c784d7050d", + "url": "https://api.github.com/repos/laravel/prompts/zipball/9f0e371244eedfe2ebeaa72c79c54bb5df6e0176", + "reference": "9f0e371244eedfe2ebeaa72c79c54bb5df6e0176", "shasum": "" }, "require": { @@ -2169,9 +2170,9 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.13" + "source": "https://github.com/laravel/prompts/tree/v0.3.14" }, - "time": "2026-02-06T12:17:10+00:00" + "time": "2026-03-01T09:02:38+00:00" }, { "name": "laravel/sanctum", @@ -2299,16 +2300,16 @@ }, { "name": "laravel/socialite", - "version": "v5.24.3", + "version": "v5.25.0", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "0feb62267e7b8abc68593ca37639ad302728c129" + "reference": "231f572e1a37c9ca1fb8085e9fb8608285beafb3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/0feb62267e7b8abc68593ca37639ad302728c129", - "reference": "0feb62267e7b8abc68593ca37639ad302728c129", + "url": "https://api.github.com/repos/laravel/socialite/zipball/231f572e1a37c9ca1fb8085e9fb8608285beafb3", + "reference": "231f572e1a37c9ca1fb8085e9fb8608285beafb3", "shasum": "" }, "require": { @@ -2367,7 +2368,7 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2026-02-21T13:32:50+00:00" + "time": "2026-02-27T13:56:35+00:00" }, { "name": "laravel/tinker", @@ -9135,16 +9136,16 @@ }, { "name": "laravel/mcp", - "version": "v0.6.0", + "version": "v0.6.2", "source": { "type": "git", "url": "https://github.com/laravel/mcp.git", - "reference": "28860a10ca0cc5433e25d897ba7af844e6c7b6a2" + "reference": "f696e44735b95ff275392eab8ce5a3b4b42a2223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/mcp/zipball/28860a10ca0cc5433e25d897ba7af844e6c7b6a2", - "reference": "28860a10ca0cc5433e25d897ba7af844e6c7b6a2", + "url": "https://api.github.com/repos/laravel/mcp/zipball/f696e44735b95ff275392eab8ce5a3b4b42a2223", + "reference": "f696e44735b95ff275392eab8ce5a3b4b42a2223", "shasum": "" }, "require": { @@ -9204,7 +9205,7 @@ "issues": "https://github.com/laravel/mcp/issues", "source": "https://github.com/laravel/mcp" }, - "time": "2026-02-24T08:43:06+00:00" + "time": "2026-03-10T20:00:23+00:00" }, { "name": "laravel/pail", @@ -9288,16 +9289,16 @@ }, { "name": "laravel/pint", - "version": "v1.27.1", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5" + "reference": "1feae84bf9c1649d99ba8f7b8193bf0f09f04cc9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/54cca2de13790570c7b6f0f94f37896bee4abcb5", - "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5", + "url": "https://api.github.com/repos/laravel/pint/zipball/1feae84bf9c1649d99ba8f7b8193bf0f09f04cc9", + "reference": "1feae84bf9c1649d99ba8f7b8193bf0f09f04cc9", "shasum": "" }, "require": { @@ -9308,13 +9309,14 @@ "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.93.1", - "illuminate/view": "^12.51.0", - "larastan/larastan": "^3.9.2", + "friendsofphp/php-cs-fixer": "^3.94.2", + "illuminate/view": "^12.54.1", + "larastan/larastan": "^3.9.3", "laravel-zero/framework": "^12.0.5", "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^2.3.3", - "pestphp/pest": "^3.8.5" + "nunomaduro/termwind": "^2.4.0", + "pestphp/pest": "^3.8.5", + "shipfastlabs/agent-detector": "^1.0.2" }, "bin": [ "builds/pint" @@ -9351,7 +9353,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2026-02-10T20:00:20+00:00" + "time": "2026-03-10T20:37:18+00:00" }, { "name": "laravel/roster", @@ -9718,21 +9720,21 @@ }, { "name": "pestphp/pest", - "version": "v4.4.1", + "version": "v4.4.2", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "f96a1b27864b585b0b29b0ee7331176726f7e54a" + "reference": "5d42e8fe3ae1d9fdf7c9f73ee88138fd30265701" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/f96a1b27864b585b0b29b0ee7331176726f7e54a", - "reference": "f96a1b27864b585b0b29b0ee7331176726f7e54a", + "url": "https://api.github.com/repos/pestphp/pest/zipball/5d42e8fe3ae1d9fdf7c9f73ee88138fd30265701", + "reference": "5d42e8fe3ae1d9fdf7c9f73ee88138fd30265701", "shasum": "" }, "require": { "brianium/paratest": "^7.19.0", - "nunomaduro/collision": "^8.9.0", + "nunomaduro/collision": "^8.9.1", "nunomaduro/termwind": "^2.4.0", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", @@ -9752,7 +9754,7 @@ "pestphp/pest-dev-tools": "^4.1.0", "pestphp/pest-plugin-browser": "^4.3.0", "pestphp/pest-plugin-type-coverage": "^4.0.3", - "psy/psysh": "^0.12.20" + "psy/psysh": "^0.12.21" }, "bin": [ "bin/pest" @@ -9818,7 +9820,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v4.4.1" + "source": "https://github.com/pestphp/pest/tree/v4.4.2" }, "funding": [ { @@ -9830,7 +9832,7 @@ "type": "github" } ], - "time": "2026-02-17T15:27:18+00:00" + "time": "2026-03-10T21:09:12+00:00" }, { "name": "pestphp/pest-plugin", From 5ca028b88526ca44371f7f9e414c0dc0de7dd176 Mon Sep 17 00:00:00 2001 From: Benjamin Nussbaum Date: Wed, 11 Mar 2026 06:46:14 +0100 Subject: [PATCH 2/4] chore(#155): update om/icalparser; require PHP 8.4 --- composer.json | 4 ++-- composer.lock | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/composer.json b/composer.json index feb30c8..9ff1f90 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ ], "license": "MIT", "require": { - "php": "^8.2", + "php": "^8.4", "ext-imagick": "*", "ext-simplexml": "*", "ext-zip": "*", @@ -25,7 +25,7 @@ "laravel/tinker": "^2.10.1", "livewire/flux": "^2.0", "livewire/livewire": "^4.0", - "om/icalparser": "^3.2", + "om/icalparser": "^4.0", "spatie/browsershot": "^5.0", "spatie/laravel-settings": "^3.6", "stevebauman/purify": "^6.3", diff --git a/composer.lock b/composer.lock index 14b2fac..e9d30cf 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": "a1b56974da6a4f33fe847dba0549a6e0", + "content-hash": "c13d003eb08beac106e67bfbeff85dd9", "packages": [ { "name": "aws/aws-crt-php", @@ -3926,32 +3926,32 @@ }, { "name": "om/icalparser", - "version": "v3.2.1", + "version": "v4.0.0", "source": { "type": "git", "url": "https://github.com/OzzyCzech/icalparser.git", - "reference": "bc7a82b12455ae9b62ce8e7f2d0273e86c931ecc" + "reference": "3e60e2edf0bdfed6c81b69dccf0b7f2852cd87a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/OzzyCzech/icalparser/zipball/bc7a82b12455ae9b62ce8e7f2d0273e86c931ecc", - "reference": "bc7a82b12455ae9b62ce8e7f2d0273e86c931ecc", + "url": "https://api.github.com/repos/OzzyCzech/icalparser/zipball/3e60e2edf0bdfed6c81b69dccf0b7f2852cd87a6", + "reference": "3e60e2edf0bdfed6c81b69dccf0b7f2852cd87a6", "shasum": "" }, "require": { - "php": ">=8.1.0" + "php": "^8.4" }, "require-dev": { - "nette/tester": "^2.5.7" + "nette/tester": "^2.6.0" }, "suggest": { "ext-dom": "for timezone tool" }, "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "om\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3971,9 +3971,9 @@ ], "support": { "issues": "https://github.com/OzzyCzech/icalparser/issues", - "source": "https://github.com/OzzyCzech/icalparser/tree/v3.2.1" + "source": "https://github.com/OzzyCzech/icalparser/tree/v4.0.0" }, - "time": "2025-12-15T06:25:09+00:00" + "time": "2026-01-29T16:45:33+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -12123,7 +12123,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.2", + "php": "^8.4", "ext-imagick": "*", "ext-simplexml": "*", "ext-zip": "*" From 7301cac8ca9a60d2deba4c20a68adaadcfaf676b Mon Sep 17 00:00:00 2001 From: Benjamin Nussbaum Date: Wed, 11 Mar 2026 08:35:21 +0100 Subject: [PATCH 3/4] fix(#203): add iCal workaround where if ORGANIZER has no parameters --- .../Plugin/Parsers/IcalResponseParser.php | 7 +- tests/Feature/Plugins/Ical/IcalParserTest.php | 163 ++++++++++++++++++ 2 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 tests/Feature/Plugins/Ical/IcalParserTest.php diff --git a/app/Services/Plugin/Parsers/IcalResponseParser.php b/app/Services/Plugin/Parsers/IcalResponseParser.php index c8f2b58..a1caedb 100644 --- a/app/Services/Plugin/Parsers/IcalResponseParser.php +++ b/app/Services/Plugin/Parsers/IcalResponseParser.php @@ -25,7 +25,12 @@ class IcalResponseParser implements ResponseParser } try { - $this->parser->parseString($body); + // Workaround for om/icalparser v4.0.0 bug where it fails if ORGANIZER or ATTENDEE has no parameters. + // When ORGANIZER or ATTENDEE has no parameters (no semicolon after the key), + // IcalParser::parseRow returns an empty string for $middle instead of an array, + // which causes a type error in a foreach loop in IcalParser::parseString. + $normalizedBody = preg_replace('/^(ORGANIZER|ATTENDEE):/m', '$1;CN=Unknown:', $body); + $this->parser->parseString($normalizedBody); $events = $this->parser->getEvents()->sorted()->getArrayCopy(); $windowStart = now()->subDays(7); diff --git a/tests/Feature/Plugins/Ical/IcalParserTest.php b/tests/Feature/Plugins/Ical/IcalParserTest.php new file mode 100644 index 0000000..a394274 --- /dev/null +++ b/tests/Feature/Plugins/Ical/IcalParserTest.php @@ -0,0 +1,163 @@ + Http::response($icalContent, 200, ['Content-Type' => 'text/calendar']), + ]); + + $plugin = Plugin::factory()->create([ + 'data_strategy' => 'polling', + 'polling_url' => 'https://example.com/calendar.ics', + 'polling_verb' => 'get', + ]); + + $plugin->updateDataPayload(); + $plugin->refresh(); + + expect($plugin->data_payload)->not->toHaveKey('error'); + expect($plugin->data_payload)->toHaveKey('ical'); + expect($plugin->data_payload['ical'])->toHaveCount(1); + expect($plugin->data_payload['ical'][0]['SUMMARY'])->toBe('Meeting'); + + Carbon::setTestNow(); +}); + +test('iCal plugin parses recurring events with multiple BYDAY correctly', function (): void { + // Set test now to Monday 2024-03-25 + Carbon::setTestNow(Carbon::parse('2024-03-25 12:00:00', 'UTC')); + + $icalContent = <<<'ICS' +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Example Corp.//EN +BEGIN:VEVENT +DESCRIPTION:XXX-REDACTED +RRULE:FREQ=WEEKLY;UNTIL=20250604T220000Z;INTERVAL=1;BYDAY=TU,TH;WKST=MO +UID:040000008200E00074C5B7101A82E00800000000E07AF34F937EDA01000000000000000 + 01000000061F3E918C753424E8154B36E55452933 +SUMMARY:Recurring Meeting +DTSTART;VALUE=DATE:20240326 +DTEND;VALUE=DATE:20240327 +DTSTAMP:20240605T082436Z +CLASS:PUBLIC +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +ICS; + + Http::fake([ + 'example.com/recurring.ics' => Http::response($icalContent, 200, ['Content-Type' => 'text/calendar']), + ]); + + $plugin = Plugin::factory()->create([ + 'data_strategy' => 'polling', + 'polling_url' => 'https://example.com/recurring.ics', + 'polling_verb' => 'get', + ]); + + $plugin->updateDataPayload(); + $plugin->refresh(); + + $ical = $plugin->data_payload['ical']; + + // Week of March 25, 2024: + // Tue March 26: 2024-03-26 (DTSTART) + // Thu March 28: 2024-03-28 (Recurrence) + + // The parser window is now-7 days to now+30 days. + // Window: 2024-03-18 to 2024-04-24. + + $summaries = collect($ical)->pluck('SUMMARY'); + expect($summaries)->toContain('Recurring Meeting'); + + $dates = collect($ical)->map(fn ($event) => Carbon::parse($event['DTSTART'])->format('Y-m-d'))->values(); + + // Check if Tuesday March 26 is present + expect($dates)->toContain('2024-03-26'); + + // Check if Thursday March 28 is present (THIS IS WHERE IT IS EXPECTED TO FAIL BASED ON THE ISSUE) + expect($dates)->toContain('2024-03-28'); + + Carbon::setTestNow(); +}); + +test('iCal plugin parses recurring events with multiple BYDAY and specific DTSTART correctly', function (): void { + // Set test now to Monday 2024-03-25 + Carbon::setTestNow(Carbon::parse('2024-03-25 12:00:00', 'UTC')); + + $icalContent = <<<'ICS' +BEGIN:VCALENDAR +VERSION:2.0 +X-WR-TIMEZONE:UTC +PRODID:-//Example Corp.//EN +BEGIN:VEVENT +RRULE:FREQ=WEEKLY;UNTIL=20250604T220000Z;INTERVAL=1;BYDAY=TU,TH;WKST=MO +UID:recurring-event-2 +SUMMARY:Recurring Meeting 2 +DTSTART:20240326T100000 +DTEND:20240326T110000 +DTSTAMP:20240605T082436Z +END:VEVENT +END:VCALENDAR +ICS; + + Http::fake([ + 'example.com/recurring2.ics' => Http::response($icalContent, 200, ['Content-Type' => 'text/calendar']), + ]); + + $plugin = Plugin::factory()->create([ + 'data_strategy' => 'polling', + 'polling_url' => 'https://example.com/recurring2.ics', + 'polling_verb' => 'get', + ]); + + $plugin->updateDataPayload(); + $plugin->refresh(); + + $ical = $plugin->data_payload['ical']; + $dates = collect($ical)->map(fn ($event) => Carbon::parse($event['DTSTART'])->format('Y-m-d'))->values(); + + expect($dates)->toContain('2024-03-26'); + expect($dates)->toContain('2024-03-28'); + + Carbon::setTestNow(); +}); From 90fbfadfa4bda82e6d8311046d6750a5da954777 Mon Sep 17 00:00:00 2001 From: Benjamin Nussbaum Date: Sat, 14 Mar 2026 19:06:52 +0100 Subject: [PATCH 4/4] chore: update dependencies --- composer.lock | 68 +++++++++++++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/composer.lock b/composer.lock index e9d30cf..5b51acf 100644 --- a/composer.lock +++ b/composer.lock @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.372.3", + "version": "3.373.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "d207d2ca972c9b10674e535dacd4a5d956a80bad" + "reference": "483fba51c28b3a0c0647bf5100e0edca82090b18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d207d2ca972c9b10674e535dacd4a5d956a80bad", - "reference": "d207d2ca972c9b10674e535dacd4a5d956a80bad", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/483fba51c28b3a0c0647bf5100e0edca82090b18", + "reference": "483fba51c28b3a0c0647bf5100e0edca82090b18", "shasum": "" }, "require": { @@ -92,12 +92,12 @@ "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", "composer/composer": "^2.7.8", - "dms/phpunit-arraysubset-asserts": "^0.4.0", + "dms/phpunit-arraysubset-asserts": "^v0.5.0", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", "ext-sockets": "*", - "phpunit/phpunit": "^9.6", + "phpunit/phpunit": "^10.0", "psr/cache": "^2.0 || ^3.0", "psr/simple-cache": "^2.0 || ^3.0", "sebastian/comparator": "^1.2.3 || ^4.0 || ^5.0", @@ -153,9 +153,9 @@ "support": { "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.372.3" + "source": "https://github.com/aws/aws-sdk-php/tree/3.373.2" }, - "time": "2026-03-10T18:07:21+00:00" + "time": "2026-03-13T18:08:30+00:00" }, { "name": "bacon/bacon-qr-code", @@ -3518,16 +3518,16 @@ }, { "name": "nesbot/carbon", - "version": "3.11.1", + "version": "3.11.3", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "f438fcc98f92babee98381d399c65336f3a3827f" + "reference": "6a7e652845bb018c668220c2a545aded8594fbbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/f438fcc98f92babee98381d399c65336f3a3827f", - "reference": "f438fcc98f92babee98381d399c65336f3a3827f", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/6a7e652845bb018c668220c2a545aded8594fbbf", + "reference": "6a7e652845bb018c668220c2a545aded8594fbbf", "shasum": "" }, "require": { @@ -3619,7 +3619,7 @@ "type": "tidelift" } ], - "time": "2026-01-29T09:26:29+00:00" + "time": "2026-03-11T17:23:39+00:00" }, { "name": "nette/schema", @@ -8452,21 +8452,21 @@ }, { "name": "wnx/sidecar-browsershot", - "version": "v2.8.0", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/stefanzweifel/sidecar-browsershot.git", - "reference": "1d2a20a6723b74c139f98f7a020fe5c0f57d05a5" + "reference": "352083995009bec142ff0c7ae4b2883831be0685" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stefanzweifel/sidecar-browsershot/zipball/1d2a20a6723b74c139f98f7a020fe5c0f57d05a5", - "reference": "1d2a20a6723b74c139f98f7a020fe5c0f57d05a5", + "url": "https://api.github.com/repos/stefanzweifel/sidecar-browsershot/zipball/352083995009bec142ff0c7ae4b2883831be0685", + "reference": "352083995009bec142ff0c7ae4b2883831be0685", "shasum": "" }, "require": { - "hammerstone/sidecar": "^0.7.1", - "illuminate/contracts": "^12.0", + "hammerstone/sidecar": "^0.7.1 | ^0.8.0", + "illuminate/contracts": "^12.0 | ^13.0", "php": "^8.4", "spatie/browsershot": "^5.0", "spatie/laravel-package-tools": "^1.9.2" @@ -8476,7 +8476,7 @@ "laravel/pint": "^1.13", "league/flysystem-aws-s3-v3": "^1.0|^2.0|^3.0", "nunomaduro/collision": "^7.0|^8.0", - "orchestra/testbench": "^10.0", + "orchestra/testbench": "^10.0 | ^11.0", "pestphp/pest": "^3.0|^4.0", "pestphp/pest-plugin-laravel": "^3.0|^4.0", "phpstan/extension-installer": "^1.1", @@ -8526,7 +8526,7 @@ ], "support": { "issues": "https://github.com/stefanzweifel/sidecar-browsershot/issues", - "source": "https://github.com/stefanzweifel/sidecar-browsershot/tree/v2.8.0" + "source": "https://github.com/stefanzweifel/sidecar-browsershot/tree/v2.9.0" }, "funding": [ { @@ -8534,7 +8534,7 @@ "type": "github" } ], - "time": "2026-03-07T18:24:28+00:00" + "time": "2026-03-13T20:12:58+00:00" } ], "packages-dev": [ @@ -9070,16 +9070,16 @@ }, { "name": "laravel/boost", - "version": "v2.2.3", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/laravel/boost.git", - "reference": "44ab65a5455c2d6fceb71d6145f8d5d89c02d889" + "reference": "ba0a9e6497398b6ce8243f5517b67d6761509150" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/boost/zipball/44ab65a5455c2d6fceb71d6145f8d5d89c02d889", - "reference": "44ab65a5455c2d6fceb71d6145f8d5d89c02d889", + "url": "https://api.github.com/repos/laravel/boost/zipball/ba0a9e6497398b6ce8243f5517b67d6761509150", + "reference": "ba0a9e6497398b6ce8243f5517b67d6761509150", "shasum": "" }, "require": { @@ -9132,7 +9132,7 @@ "issues": "https://github.com/laravel/boost/issues", "source": "https://github.com/laravel/boost" }, - "time": "2026-03-06T20:20:28+00:00" + "time": "2026-03-12T09:06:47+00:00" }, { "name": "laravel/mcp", @@ -9289,16 +9289,16 @@ }, { "name": "laravel/pint", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "1feae84bf9c1649d99ba8f7b8193bf0f09f04cc9" + "reference": "bdec963f53172c5e36330f3a400604c69bf02d39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/1feae84bf9c1649d99ba8f7b8193bf0f09f04cc9", - "reference": "1feae84bf9c1649d99ba8f7b8193bf0f09f04cc9", + "url": "https://api.github.com/repos/laravel/pint/zipball/bdec963f53172c5e36330f3a400604c69bf02d39", + "reference": "bdec963f53172c5e36330f3a400604c69bf02d39", "shasum": "" }, "require": { @@ -9315,8 +9315,8 @@ "laravel-zero/framework": "^12.0.5", "mockery/mockery": "^1.6.12", "nunomaduro/termwind": "^2.4.0", - "pestphp/pest": "^3.8.5", - "shipfastlabs/agent-detector": "^1.0.2" + "pestphp/pest": "^3.8.6", + "shipfastlabs/agent-detector": "^1.1.0" }, "bin": [ "builds/pint" @@ -9353,7 +9353,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2026-03-10T20:37:18+00:00" + "time": "2026-03-12T15:51:39+00:00" }, { "name": "laravel/roster",