<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://laravelblog.com/blog/laravel-ai-v1-2-0-openai-decisions-classification-sturdier-structured-output-and-new-anthropic-defaults</loc>
<lastmod>2026-10-11T12:18:33+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-ai-v1-2-0-openai-decisions-classification-sturdier-structured-output-and-new-anthropic-defaults/2cbb7a8b.png</image:loc>
<image:title>laravel/ai v1.2.0: OpenAI Decisions classification, sturdier structured output, and new Anthropic defaults</image:title>
<image:caption>laravel/ai v1.2.0 adds OpenAI Decisions classification with image attachments, fixes structured output on Bedrock and with provider options, and updates Anthropic model defaults and sampling parameter handling.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/livewire-v4-4-7-release-notes</loc>
<lastmod>2026-10-11T12:22:21+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/livewire-v4-4-7-release-notes/976820a4.png</image:loc>
<image:title>Livewire v4.4.7 – Release Notes</image:title>
<image:caption>This patch release for Livewire 4 introduces several key fixes, particularly around the handling of the `wire:key` directive and event listeners, improving reliability for complex component setups.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-12-69-3-timed-out-worker-exit-codes-and-named-s3-credential-providers</loc>
<lastmod>2026-10-11T12:23:16+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-12-69-3-timed-out-worker-exit-codes-and-named-s3-credential-providers/ca214da8.png</image:loc>
<image:title>Laravel 12.69.3: Timed-Out Worker Exit Codes and Named S3 Credential Providers</image:title>
<image:caption>What shipped in v12.69.3: a kill hook that makes the queue worker's timeout exit code reachable, and named S3 credential providers for ECS and instance-profile authentication.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-13-35-0-property-array-fake-assertions-smarter-scheduling-and-a-quieter-http-client</loc>
<lastmod>2026-10-11T12:25:02+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-13-35-0-property-array-fake-assertions-smarter-scheduling-and-a-quieter-http-client/a15062d4.png</image:loc>
<image:title>Laravel Framework 13.35.0: property-array fake assertions, smarter scheduling and a quieter HTTP client</image:title>
<image:caption>A summary of the Laravel Framework v13.35.0 release covering fake assertion improvements, scheduler enhancements, model defaults, QUERY verb support, memory leak fixes and more.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-mcp-v1-0-1</loc>
<lastmod>2026-10-11T12:28:02+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-mcp-v1-0-1/d4ae5950.png</image:loc>
<image:title>Laravel MCP v1.0.1</image:title>
<image:caption>v1.0.1 restores legacy initialize clients alongside the modern protocol and hardens OAuth redirect URI validation.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/fix-structured-output-format-no-longer-dropped-when-provider-options-set-output-config</loc>
<lastmod>2026-10-11T13:24:26+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/fix-structured-output-format-no-longer-dropped-when-provider-options-set-output-config/a74d5669.png</image:loc>
<image:title>Fix: structured output format no longer dropped when provider options set output_config</image:title>
<image:caption>Provider options like output_config no longer wipe the structured output format — the nested key is merged one level deep instead of replacing it.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/pr-1107-update-anthropic-model-defaults-and-skip-sampling-params-on-claude-4-7</loc>
<lastmod>2026-10-11T13:25:29+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/pr-1107-update-anthropic-model-defaults-and-skip-sampling-params-on-claude-4-7/9175cb91.png</image:loc>
<image:title>PR #1107: Update Anthropic model defaults and skip sampling params on Claude 4.7+</image:title>
<image:caption>Anthropic defaults move to Haiku 5.5 / Opus 5.5; sampling params are now only sent to Claude 3.x and 4.0–4.6, fixing 400s on Claude 4.7+.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/13-x-support-percentages-for-queue-work-memory</loc>
<lastmod>2026-10-11T13:26:15+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/13-x-support-percentages-for-queue-work-memory/bec7a919.png</image:loc>
<image:title>[13.x] Support percentages for queue:work --memory</image:title>
<image:caption>Pull request #61753 extends the `--memory` option of `queue:work` so it accepts a percentage of the PHP `memory_limit` in addition to an absolute number of megabytes. Let worker memory limits scale with your container sizing instead of recalculating a static value every time.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/graceful-deploys-for-long-running-scheduled-commands-hasbeeninterruptedsince-in-laravel-13-x</loc>
<lastmod>2026-10-11T13:27:05+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/graceful-deploys-for-long-running-scheduled-commands-hasbeeninterruptedsince-in-laravel-13-x/949c9154.png</image:loc>
<image:title>Graceful Deploys for Long-Running Scheduled Commands: hasBeenInterruptedSince() in Laravel 13.x</image:title>
<image:caption>PR #61764 turns schedule:interrupt into a timestamp-based signal that long-running, runInBackground scheduled commands can poll via Schedule::hasBeenInterruptedSince(), enabling graceful deploys without breaking existing behavior.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/framework-61770-13-x-allow-fake-assertions-to-accept-an-array-of-properties</loc>
<lastmod>2026-10-11T13:28:16+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/framework-61770-13-x-allow-fake-assertions-to-accept-an-array-of-properties/a22cf13c.png</image:loc>
<image:title>framework #61770: [13.x] Allow fake assertions to accept an array of properties</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/parallel-test-runs-no-longer-race-over-compiled-view-directories</loc>
<lastmod>2026-10-11T13:29:20+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/parallel-test-runs-no-longer-race-over-compiled-view-directories/e8c9126b.png</image:loc>
<image:title>Parallel test runs no longer race over compiled view directories</image:title>
<image:caption>{seed} PR #61786: [13.x] Make the parallel compiled view callbacks tolerate a concurrent run</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/regression-tests-for-job-timeout-signals-in-the-queue-worker</loc>
<lastmod>2026-10-11T13:32:33+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/regression-tests-for-job-timeout-signals-in-the-queue-worker/6b22bf4e.png</image:loc>
<image:title>Regression Tests for Job Timeout Signals in the Queue Worker</image:title>
<image:caption>Briefly explain this bugfix: a traceability gap in BroadcastEvent

Briefly explain this bugfix: a traceability gap in BroadcastEvent
~2x token budget</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/fix-root-route-matching-with-route-cache-when-served-from-a-subdirectory-61794</loc>
<lastmod>2026-10-11T13:41:01+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/fix-root-route-matching-with-route-cache-when-served-from-a-subdirectory-61794/005e8903.png</image:loc>
<image:title>Fix: root route matching with route cache when served from a subdirectory (#61794)</image:title>
<image:caption>Cached routes no longer break the application root when Laravel is served from a subdirectory such as /app behind Apache or a reverse proxy.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/13-x-add-query-route-method-support</loc>
<lastmod>2026-10-11T13:44:56+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/13-x-add-query-route-method-support/a5584af8.png</image:loc>
<image:title>[13.x] Add QUERY route method support</image:title>
<image:caption>Add QUERY route method support</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/framework-61799-13-x-add-lazy-root-creation-configuration-option-for-local-disks</loc>
<lastmod>2026-10-11T13:47:25+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/framework-61799-13-x-add-lazy-root-creation-configuration-option-for-local-disks/bf04fe06.png</image:loc>
<image:title>framework #61799: [13.x] Add `lazy_root_creation` configuration option for `local` disks</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/add-markdown-method-to-the-response-factory</loc>
<lastmod>2026-10-11T13:48:03+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/add-markdown-method-to-the-response-factory/e9c20d8e.png</image:loc>
<image:title>Add markdown() Method to the Response Factory</image:title>
<image:caption>PR #61800 adds response()-&gt;markdown() for returning text/markdown responses, completing content negotiation with wantsMarkdown(). Purely additive for 13.34.0 upgraders.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/memcached-locks-no-longer-report-free-locks-as-locked</loc>
<lastmod>2026-10-11T13:49:39+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/memcached-locks-no-longer-report-free-locks-as-locked/43df4a22.png</image:loc>
<image:title>Memcached locks no longer report free locks as locked</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/fixing-a-memory-leak-in-pendingrequest-throw-one-keyword-thousands-of-retained-responses</loc>
<lastmod>2026-10-11T13:50:20+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/fixing-a-memory-leak-in-pendingrequest-throw-one-keyword-thousands-of-retained-responses/4e7b7e8c.png</image:loc>
<image:title>Fixing a memory leak in PendingRequest::throw(): one keyword, thousands of retained responses</image:title>
<image:caption>PR #61802 declares the default throw() callback static, removing a reference cycle that pinned every -&gt;throw() response in memory. A must-have fix for queue workers, Octane, and long-running CLI jobs.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/str-finish-and-str-start-get-a-major-speed-boost</loc>
<lastmod>2026-10-11T13:51:43+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/str-finish-and-str-start-get-a-major-speed-boost/2fa8fae7.png</image:loc>
<image:title>Str::finish() and Str::start() Get a Major Speed Boost</image:title>
<image:caption>A deep dive into PR #61803, which adds early fast-paths to Str::finish() and Str::start() for significant performance gains in common string operations.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/fix-db-setdefaultconnection-storing-enums-in-the-configuration</loc>
<lastmod>2026-10-11T13:52:19+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/fix-db-setdefaultconnection-storing-enums-in-the-configuration/cc835729.png</image:loc>
<image:title>Fix `DB::setDefaultConnection()` storing enums in the configuration</image:title>
<image:caption>...</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/lazy-collections-no-longer-dropped-by-collapse-collapsewithkeys-and-flatten</loc>
<lastmod>2026-10-11T13:54:01+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/lazy-collections-no-longer-dropped-by-collapse-collapsewithkeys-and-flatten/3e5f2004.png</image:loc>
<image:title>Lazy collections no longer dropped by collapse(), collapseWithKeys() and flatten()</image:title>
<image:caption>PR #61811 widens collection type checks from Collection to Enumerable so LazyCollection items survive collapse(), collapseWithKeys() and flatten().</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-opt-in-defaults-trait-for-eloquent-models-lands-in-13-35-0</loc>
<lastmod>2026-10-11T13:59:21+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-opt-in-defaults-trait-for-eloquent-models-lands-in-13-35-0/d9dc1617.png</image:loc>
<image:title>laravel/framework: Opt-In defaults() Trait for Eloquent Models Lands in 13.35.0</image:title>
<image:caption>Laravel 13.35.0 introduces method-based default attribute values for Eloquent via the new opt-in HasDefaultAttributes trait.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/framework-61816-13-x-fix-chunkbyid-and-lazybyid-looping-forever-on-models-with-a-cast-primary-key</loc>
<lastmod>2026-10-11T14:01:54+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/framework-61816-13-x-fix-chunkbyid-and-lazybyid-looping-forever-on-models-with-a-cast-primary-key/fda999be.png</image:loc>
<image:title>framework #61816: [13.x] Fix `chunkById()` and `lazyById()` looping forever on models with a cast primary key</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/framework-61817-13-x-accept-null-password-in-hashpasswordforcookie</loc>
<lastmod>2026-10-11T14:03:47+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/framework-61817-13-x-accept-null-password-in-hashpasswordforcookie/600cb92e.png</image:loc>
<image:title>framework #61817: [13.x] Accept null password in hashPasswordForCookie</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/framework-61819-13-x-database-test-improvements</loc>
<lastmod>2026-10-11T14:05:55+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/framework-61819-13-x-database-test-improvements/3e64c702.png</image:loc>
<image:title>framework #61819: [13.x] Database test improvements</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/framework-61823-13-x-fix-forcecreate-ignoring-withattributes</loc>
<lastmod>2026-10-11T14:06:45+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/framework-61823-13-x-fix-forcecreate-ignoring-withattributes/1f851473.png</image:loc>
<image:title>framework #61823: [13.x] Fix `forceCreate()` ignoring `withAttributes()`</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-unique-job-locks-are-now-released-by-queue-fakefor</loc>
<lastmod>2026-10-11T14:08:20+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-unique-job-locks-are-now-released-by-queue-fakefor/612b92bf.png</image:loc>
<image:title>laravel/framework: Unique job locks are now released by Queue::fakeFor()</image:title>
<image:caption>Queue::fakeFor() and Queue::fakeExceptFor() now release unique job locks when the callback finishes, preventing stale cache locks from silently skipping later unique job dispatches in tests.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-13-x-fix-inherited-queue-attributes-being-ignored-when-the-child-uses-queueable</loc>
<lastmod>2026-10-11T14:12:53+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-13-x-fix-inherited-queue-attributes-being-ignored-when-the-child-uses-queueable/938aab37.png</image:loc>
<image:title>laravel/framework: [13.x] Fix inherited queue attributes being ignored when the child uses Queueable</image:title>
<image:caption>Child jobs using the Queueable trait no longer drop Queue, Connection, and Delay attributes declared on their parent classes.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-fix-hasonethrough-is-no-longer-compares-the-wrong-keys</loc>
<lastmod>2026-10-11T14:13:45+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-fix-hasonethrough-is-no-longer-compares-the-wrong-keys/443f08c8.png</image:loc>
<image:title>laravel/framework: Fix: HasOneThrough::is() no longer compares the wrong keys</image:title>
<image:caption>PR #61827 corrects HasOneThrough::is()/isNot() so they resolve through the relation query instead of comparing the parent's key with the related model's foreign key to the intermediate table. Results no longer depend on coincidental ID matches, of-many through variants are covered, and there are no API changes — just corrected results and a per-call exists() query.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-normalize-queue-names-in-sqsqueue-bulk-so-events-report-strings-not-enums</loc>
<lastmod>2026-10-11T14:15:06+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-normalize-queue-names-in-sqsqueue-bulk-so-events-report-strings-not-enums/26cdf181.png</image:loc>
<image:title>laravel/framework: Normalize queue names in SqsQueue::bulk() so events report strings, not enums</image:title>
<image:caption>Change to SqsQueue.php normalize queue name to work with backed enums, aligning SQS bulk behavior with other drivers, verified by regression tests and a fixture enum.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-fix-json-path-updates-on-asencryptedarrayobject-and-asencryptedcollection</loc>
<lastmod>2026-10-11T14:17:39+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-fix-json-path-updates-on-asencryptedarrayobject-and-asencryptedcollection/6ed05897.png</image:loc>
<image:title>laravel/framework: Fix JSON path updates on `AsEncryptedArrayObject` and `AsEncryptedCollection`</image:title>
<image:caption>Fixes data corruption when updating nested keys via the `-&gt;` syntax on `AsEncryptedArrayObject` and `AsEncryptedCollection` cast attributes.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-address-query-issues-in-cursor-pagination-and-whererowvalues</loc>
<lastmod>2026-10-11T14:19:35+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-address-query-issues-in-cursor-pagination-and-whererowvalues/d37dfb8e.png</image:loc>
<image:title>laravel/framework: Address query issues in cursor pagination and whereRowValues()</image:title>
<image:caption>Two SQL-injection hardening fixes in the query builder</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-fix-cursorpaginate-losing-union-select-and-join-bindings</loc>
<lastmod>2026-10-11T14:21:25+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-fix-cursorpaginate-losing-union-select-and-join-bindings/660d5c84.png</image:loc>
<image:title>laravel/framework: Fix cursorPaginate() losing union select and join bindings</image:title>
<image:caption>Then run 

```
php artisan vendor:publish --tag=laravel-config
php artisan config:clear
```

Then add to `config/logging.php`:

```php
'channels' =&gt; [
    // ...
    'loggr' =&gt; [
</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-13-x-fix-loadmissing-with-nested-relations-on-mixed-morphto-models</loc>
<lastmod>2026-10-11T14:24:00+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-13-x-fix-loadmissing-with-nested-relations-on-mixed-morphto-models/a9e68fd1.png</image:loc>
<image:title>laravel/framework: [13.x] Fix `loadMissing()` with nested relations on mixed `morphTo` models</image:title>
<image:caption>Fixes a bug where `loadMissing()` with nested relations through a `morphTo` used the first model's class for the whole collection, causing wrong relations to be loaded for models of other classes.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-has-and-wherehasmorph-now-respect-withtrashed-on-morphto</loc>
<lastmod>2026-10-11T14:26:15+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-has-and-wherehasmorph-now-respect-withtrashed-on-morphto/36c7c098.png</image:loc>
<image:title>laravel/framework: has() and whereHasMorph() now respect withTrashed() on morphTo</image:title>
<image:caption>PR #61846 fixes morphTo()-&gt;withTrashed() being ignored by has() and whereHasMorph() existence queries.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-13-x-fix-incrementorcreate-not-setting-the-foreign-key-on-relations</loc>
<lastmod>2026-10-11T14:31:09+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-13-x-fix-incrementorcreate-not-setting-the-foreign-key-on-relations/11550420.png</image:loc>
<image:title>laravel/framework: [13.x] Fix `incrementOrCreate()` not setting the foreign key on relations</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-13-x-fix-wherejsonoverlaps-with-a-json-path-on-mysql</loc>
<lastmod>2026-10-11T14:33:14+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-13-x-fix-wherejsonoverlaps-with-a-json-path-on-mysql/152363ff.png</image:loc>
<image:title>laravel/framework: [13.x] Fix `whereJsonOverlaps()` with a JSON path on MySQL</image:title>
<image:caption>Fix `whereJsonOverlaps()` with a JSON path on MySQL and MariaDB by wrapping the column in `json_extract()` before calling `JSON_OVERLAPS()`.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/framework-61854-13-x-fix-ashtmlstring-attributes-serializing-to-an-empty-object</loc>
<lastmod>2026-10-11T14:35:26+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/framework-61854-13-x-fix-ashtmlstring-attributes-serializing-to-an-empty-object/6fdb2217.png</image:loc>
<image:title>framework #61854: [13.x] Fix `AsHtmlString` attributes serializing to an empty object</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-13-x-fix-findornew-and-chunkmap-on-hasmanythrough-and-belongstomany</loc>
<lastmod>2026-10-11T14:37:11+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-13-x-fix-findornew-and-chunkmap-on-hasmanythrough-and-belongstomany/7cb1b525.png</image:loc>
<image:title>laravel/framework: [13.x] Fix `findOrNew()` and `chunkMap()` on HasManyThrough and BelongsToMany</image:title>
<image:caption>...</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-enums-now-accepted-in-filesystemmanager-set-forgetdisk-and-purge</loc>
<lastmod>2026-10-11T14:40:35+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-enums-now-accepted-in-filesystemmanager-set-forgetdisk-and-purge/895edf90.png</image:loc>
<image:title>laravel/framework: Enums now accepted in FilesystemManager::set(), forgetDisk() and purge()</image:title>
<image:caption>Fixes TypeError when passing enums to FilesystemManager::set(), forgetDisk() and purge()...</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-fix-undefined-array-key-in-genericuser-getauthpassword-for-passwordless-users-61876</loc>
<lastmod>2026-10-11T14:42:21+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-fix-undefined-array-key-in-genericuser-getauthpassword-for-passwordless-users-61876/e7e74a56.png</image:loc>
<image:title>laravel/framework: Fix undefined array key in GenericUser::getAuthPassword() for passwordless users (#61876)</image:title>
<image:caption>Bug fix changelog: GenericUser::getAuthPassword() now returns null when the password attribute is missing, eliminating Undefined array key warnings on every passwordless login.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-pull-request-analysis-fix-incrementorcreate-ignoring-extra-attributes-on-record-creation</loc>
<lastmod>2026-10-11T14:43:58+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-pull-request-analysis-fix-incrementorcreate-ignoring-extra-attributes-on-record-creation/a01d24f9.png</image:loc>
<image:title>laravel/framework: Pull Request Analysis: Fix `incrementOrCreate()` ignoring `$extra` attributes on record creation</image:title>
<image:caption>Laravel 13.34.1 fixes `incrementOrCreate()` so `$extra` attributes are now persisted when a record is created, matching the existing-record behavior. No API changes; drop-in upgrade from v13.34.0 with more consistent first-write data.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-pr-61884-fix-recycled-models-leaking-into-later-calls-on-the-same-factory</loc>
<lastmod>2026-10-11T14:46:29+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-pr-61884-fix-recycled-models-leaking-into-later-calls-on-the-same-factory/9cfa4640.png</image:loc>
<image:title>laravel/framework: PR #61884: Fix recycled models leaking into later calls on the same factory</image:title>
<image:caption>The technical details of a specific Laravel framework pull request.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-qualify-eager-loaded-columns-on-through-and-one-of-many-relations</loc>
<lastmod>2026-10-11T14:48:48+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-qualify-eager-loaded-columns-on-through-and-one-of-many-relations/40c9f4ff.png</image:loc>
<image:title>laravel/framework: Qualify eager loaded columns on through and one-of-many relations</image:title>
<image:caption>...</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-framework-downloads-no-longer-crash-on-filenames-without-an-ascii-equivalent</loc>
<lastmod>2026-10-11T14:50:04+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-framework-downloads-no-longer-crash-on-filenames-without-an-ascii-equivalent/153a4c73.png</image:loc>
<image:title>laravel/framework: Downloads no longer crash on filenames without an ASCII equivalent</image:title>
<image:caption>**Category:** Bug fix (9)

PR #61888 fixes an `InvalidArgumentException` thrown by `Storage::download()`, `Storage::response()`, `Storage::serve()`, and `response()-&gt;streamDownload()` whenever the download filename contains characters with no ASCII equivalent — for example `請求書` or `😀`. After this change, those methods emit a `Content-Disposition` header with one underscore per character as the ASCII fallback, matching the behavior `response()-&gt;download()` already had via Symfony's `BinaryFileResponse`. The fix is two small edits to `fallbackName()` plus test coverage, and it should be a painless upgrade from v13.34.0.

## What broke

When Laravel builds a download response for a non-ASCII filename, it produces both parameters of an RFC 5987/6266 `Content-Disposition` header: a plain `filename=` fallback for legacy clients, and `filename*=utf-8''...` carrying the real name percent-encoded. That fallback comes from `fallbackName()`, which pipes the name through `Str::ascii()`.

For names that transliterate cleanly, this works: `привет.txt` becomes `privet.txt`. But some characters have no ASCII mapping at all. `Str::ascii('請求書')` returns an empty string, and the disposition logic then rejects the empty (or original, non-ASCII) fallback:

```php
Storage::put('file.txt', 'Hello');

return Storage::download('file.txt', '請求書');

// InvalidArgumentException:
// The filename fallback must only contain ASCII characters.
```

Meanwhile `response()-&gt;download()` already survived this exact input, because Symfony's `BinaryFileResponse` substitutes one `_` per character when the fallback comes back empty. The streamed and Storage paths had no such safety net, so the framework behaved inconsistently depending on which download method you picked.

## The fix

Both `fallbackName()` implementations — in `Illuminate\Filesystem\FilesystemAdapter` and `Illuminate\Routing\ResponseFactory` — now check whether transliteration left anything behind, and substitute underscores if it didn't:

```php
protected function fallbackName($name)
{
    $fallback = str_replace('%', '', Str::ascii($name));

    return $fallback !== '' ? $fallback : str_repeat('_', mb_strlen($name));
}
```

Note the use of `mb_strlen()`: the underscore count matches the character count of the original name, so `請求書` (three characters) yields `filename=___`, and a single emoji yields `filename=_`. The existing `str_replace('%', '', ...)` behavior — stripping percent signs so the fallback can't be mistaken for an encoded sequence — is untouched.

## Consistent headers across every download method

After the fix, all four previously crashing paths produce the same header as `response()-&gt;download()`:

```php
// Before
response()-&gt;download($path, '請求書');             // filename=___
response()-&gt;streamDownload($cb, '請求書');         // Crash
Storage::download('file.txt', '請求書');           // Crash

// After — all three
// attachment; filename=___; filename*=utf-8''%E8%AB%8B%E6%B1%82%E6%9B%B8
```

The `filename*` parameter still carries the exact UTF-8 name, so modern browsers continue showing `請求書` in the save dialog. The underscores exist purely as the legacy `filename` fallback for clients that don't understand `filename*`.

Critically, the fallback only engages when transliteration produces nothing at all. Names that already work don't change: `привет.txt` still becomes `privet.txt` (not `______.txt`), and `naïve résumé.txt` still becomes `naive resume.txt`.

## Test coverage

Two new tests lock in the exact header. `FilesystemAdapterTest::testDownloadFilenameWithoutAsciiEquivalent` covers `Storage::download()`, and a brand-new `RoutingResponseFactoryTest` covers `streamDownload()`:

```php
$response = $factory-&gt;streamDownload(fn () =&gt; null, '請求書');

$this-&gt;assertSame(
    'attachment; filename=___; filename*=utf-8\'\'%E8%AB%8B%E6%B1%82%E6%9B%B8',
    $response-&gt;headers-&gt;get('content-disposition')
);
```

## Upgrade impact

For anyone upgrading from v13.34.0, this is a drop-in bug fix. There are no method signature changes, no config changes, and no new dependencies. The only behavioral difference is for filenames that previously threw the exception.

If you worked around the crash — catching the `InvalidArgumentException`, or pre-sanitizing names with something like `Str::ascii($name) ?: 'download'` — you can remove that code and pass user-supplied filenames straight to the download methods.

**Takeaways:**

- `Storage::download()`, `Storage::response()`, `Storage::serve()`, and `response()-&gt;streamDownload()` no longer throw for filenames with no ASCII equivalent.
- Empty transliteration fallbacks now become one `_` per character, matching Symfony's `BinaryFileResponse` and `response()-&gt;download()`.
- Names that transliterate (e.g. `привет.txt` → `privet.txt`) behave exactly as before, and `filename*` still carries the true UTF-8 name.
- Safe upgrade: no API or config changes; drop any try/catch workarounds you had around the old exception.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/framework-61894-13-x-fix-schedule-list-timezone-conversion-when-the-next-runs-straddle-a-dst-change</loc>
<lastmod>2026-10-11T14:54:49+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/framework-61894-13-x-fix-schedule-list-timezone-conversion-when-the-next-runs-straddle-a-dst-change/a8d45cf2.png</image:loc>
<image:title>framework #61894: [13.x] Fix `schedule:list` timezone conversion when the next runs straddle a DST change</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/align-protocol-error-codes-with-mcp-2026-07-28</loc>
<lastmod>2026-10-11T14:55:39+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/align-protocol-error-codes-with-mcp-2026-07-28/d259261a.png</image:loc>
<image:title>Align protocol error codes with MCP 2026-07-28</image:title>
<image:caption>Upgrade notes</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/every-result-now-carries-its-type-and-server-info-for-mcp-2026-07-28</loc>
<lastmod>2026-10-11T14:56:48+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/every-result-now-carries-its-type-and-server-info-for-mcp-2026-07-28/a97a3b4a.png</image:loc>
<image:title>Every result now carries its type and server info for MCP 2026-07-28</image:title>
<image:caption>Complies with MCP 2026-07-28 by adding a required resultType and serverInfo _meta envelope to every result via a single central send path.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/laravel-mcp-remove-server-session-state-for-the-stateless-transports</loc>
<lastmod>2026-10-11T14:57:57+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/laravel-mcp-remove-server-session-state-for-the-stateless-transports/a90b8dbd.png</image:loc>
<image:title>laravel/mcp: Remove server session state for the stateless transports</image:title>
<image:caption>PR #285 strips every trace of session state from laravel/mcp's server transports, aligning the package with the stateless model in the MCP `2026-07-28` specification. In that revision, a server has no session to hold onto: each message stands alone, and the session id that used to travel with a request has nothing left to identify. If you are upgrading from v0.9.6, this is a breaking change — but a mechanical one. Unless you built a custom transport or read the session id inside a tool, the migration mostly consists of deleting code.

## Why the spec dropped sessions

Under earlier revisions of the MCP spec, an HTTP client called `initialize`, received a `MCP-Session-Id` response header, and echoed that id back on every subsequent request so the server could look up its state. The [2026-07-28 changelog](https://modelcontextprotocol.io/specification/2026-07-28/changelog) removes that model for [stateless transports](https://modelcontextprotocol.io/specification/2026-07-28/basic/transports): no handshake, no negotiated id, no server-side session store.

Laravel's MCP servers already handled each request independently through the framework's request lifecycle, so the session plumbing was bookkeeping with no payoff. It also forced clients to perform an initialization round trip that served no purpose before real work could start.

## What was removed

- `Request::sessionId()` and `Request::setSessionId()` are gone, and the `Request` constructor no longer accepts a `$sessionId` parameter.
- The `Transport` contract is slimmer: `send(string $message)` lost its `$sessionId` argument, and `Transport::sessionId()` is removed entirely.
- `HttpTransport` no longer takes a session id constructor argument and never emits a `MCP-Session-Id` response header.
- `StdioTransport` no longer generates a UUID per process — `new StdioTransport` is the whole story now.
- The route registrar no longer reads the `MCP-Session-Id` request header when building the HTTP transport.
- `JsonRpcRequest::from()` lost its `$sessionId` parameter, so session ids never enter the message pipeline in the first place.

## Runtime behavior after the upgrade

New feature tests lock in the stateless contract. Posting a request with a stale `MCP-Session-Id` header still returns `200` — the header is simply ignored — and the response asserts `assertHeaderMissing('MCP-Session-Id')`. A second test fires two requests back to back with no prior handshake and both succeed, so stateless clients (and clients still sending the old header out of habit) keep working uninterrupted.

The PR also confirms nothing else needed removing: `Last-Event-ID` and SSE event ids were never implemented in the first place, and `GET`/`DELETE` requests on an MCP route already answer `405`, which the stateless profile expects.

## Upgrading tool code

Any tool that touched the session id will break once you upgrade:

```php
use Laravel\Mcp\Request;
use Laravel\Mcp\Response;

class OrderHistoryTool extends Tool
{
    public function handle(Request $request): Response
    {
        return Response::text('Session: '.$request-&gt;sessionId()); // fatal: method removed
    }
}
```

Remove the call. If you were using the session id as a proxy for client identity, lean on Laravel authentication instead — `$request-&gt;user()` is available inside tools:

```php
public function handle(Request $request): Response
{
    return Response::text('Orders for: '.$request-&gt;user()?-&gt;email);
}
```

## Upgrading custom transports

If you implement `Laravel\Mcp\Server\Contracts\Transport`, two changes are required:

```php
// Before
public function send(string $message, ?string $sessionId = null): void;
public function sessionId(): ?string;

// After
public function send(string $message): void;
```

Likewise, drop the constructor argument wherever transports are built directly — `new HttpTransport(request())` in a route or test, `new StdioTransport` for local servers. The package's own `FakeTransporter` and `ArrayTransport` test fixtures were updated the same way, so they make a handy reference for the minimal compliant implementation.

## Takeaways

- The MCP `2026-07-28` spec makes stateless servers the norm; laravel/mcp no longer reads, stores, or emits session ids anywhere.
- `Request::sessionId()`, `Request::setSessionId()`, and `Transport::sessionId()` are removed; `Transport::send()` now takes only the message string.
- `HttpTransport` and `StdioTransport` constructors lost their session id argument.
- Inbound `MCP-Session-Id` headers are silently ignored and never echoed back; no handshake is required before calling tools, resources, or prompts.
- Replace session-based identity with `$request-&gt;user()` or your own authentication layer.
- Thanks to @JordanDalton, whose #275 mapped out the 2026-07-28 work this PR completes.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/validate-the-mirrored-mcp-request-headers-over-http</loc>
<lastmod>2026-10-11T14:59:28+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/validate-the-mirrored-mcp-request-headers-over-http/376ec21f.png</image:loc>
<image:title>Validate the mirrored MCP request headers over HTTP</image:title>
<image:caption>Category: Upgrade notes (11)</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog/mcp-295-add-the-server-discover-method</loc>
<lastmod>2026-10-11T15:01:17+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/blog/mcp-295-add-the-server-discover-method/740127e8.png</image:loc>
<image:title>mcp #295: Add the server/discover method</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/category/security</loc>
<lastmod>2026-10-11T14:19:35+05:45</lastmod>
</url>
<url>
<loc>https://laravelblog.com/category/upgrade-notes</loc>
<lastmod>2026-10-11T14:24:00+05:45</lastmod>
</url>
<url>
<loc>https://laravelblog.com/category/technical-report</loc>
<lastmod>2026-10-11T14:46:29+05:45</lastmod>
</url>
<url>
<loc>https://laravelblog.com/category/id-3-name-fix</loc>
<lastmod>2026-10-11T16:18:04+05:45</lastmod>
</url>
<url>
<loc>https://laravelblog.com/category/release</loc>
<lastmod>2026-10-08T21:53:41+05:45</lastmod>
</url>
<url>
<loc>https://laravelblog.com/category/feature</loc>
<lastmod>2026-10-08T21:53:41+05:45</lastmod>
</url>
<url>
<loc>https://laravelblog.com/category/fix</loc>
<lastmod>2026-10-08T21:53:41+05:45</lastmod>
</url>
<url>
<loc>https://laravelblog.com/category/hot-fix</loc>
<lastmod>2026-10-08T21:53:41+05:45</lastmod>
</url>
<url>
<loc>https://laravelblog.com/category/chore</loc>
<lastmod>2026-10-08T21:53:41+05:45</lastmod>
</url>
<url>
<loc>https://laravelblog.com/category/documentation</loc>
<lastmod>2026-10-08T21:53:41+05:45</lastmod>
</url>
<url>
<loc>https://laravelblog.com</loc>
<lastmod>2026-10-11T16:43:55+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/page/landing-page/d1608fe6.png</image:loc>
<image:title>Laravel release notes, explained</image:title>
<image:caption>LaravelBlog follows the Laravel packages you depend on and turns each new release into a short, readable article, with a link back to every pull request.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/blog</loc>
<lastmod>2026-10-11T16:43:55+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/page/laravel-blog/7f8ca9ea.png</image:loc>
<image:title>Articles</image:title>
<image:caption>Every article LaravelBlog has published, newest first, covering new releases across the packages we track.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/page/about-us</loc>
<lastmod>2026-10-11T16:43:55+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/page/about-us/c1ca0154.png</image:loc>
<image:title>About LaravelBlog</image:title>
<image:caption>LaravelBlog is a publication that turns Laravel package releases into articles you can actually read.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/faq</loc>
<lastmod>2026-10-11T16:43:55+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/page/faq/ffb6cc2c.png</image:loc>
<image:title>Frequently Asked Questions</image:title>
<image:caption>How LaravelBlog works, which packages it covers, and how to suggest one.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/contact</loc>
<lastmod>2026-10-11T16:43:55+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/page/contact/a57f30ac.png</image:loc>
<image:title>Contact</image:title>
<image:caption>Suggest a package, report a mistake, or send feedback.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/laravelblogbot</loc>
<lastmod>2026-10-08T21:53:41+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/laravelblogbot/0fd1d1de.png</image:loc>
<image:title>LaravelBlogBot</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/jack-bayliss</loc>
<lastmod>2026-10-11T07:09:35+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/jack-bayliss/80e24bf8.png</image:loc>
<image:title>Jack Bayliss</image:title>
<image:caption>Jack of all trades, captain of a couple.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/cyppe</loc>
<lastmod>2026-10-11T07:09:36+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/cyppe/609d85c7.png</image:loc>
<image:title>cyppe</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/josh</loc>
<lastmod>2026-10-11T07:09:37+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/josh/1815ba1a.png</image:loc>
<image:title>Josh</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/ashot-gharakeshishyan</loc>
<lastmod>2026-10-11T07:09:37+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/ashot-gharakeshishyan/a5856839.png</image:loc>
<image:title>Ashot Gharakeshishyan</image:title>
<image:caption>Full stack web developer
</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/jamie-york</loc>
<lastmod>2026-10-11T07:09:39+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/jamie-york/816db852.png</image:loc>
<image:title>Jamie York</image:title>
<image:caption>Senior Developer (PHP, Laravel, JS)</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/hamidreza-asnaashari</loc>
<lastmod>2026-10-11T07:09:40+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/hamidreza-asnaashari/88037231.png</image:loc>
<image:title>Hamidreza Asnaashari</image:title>
<image:caption>Software Engineer, Backend Specialist
</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/andrew-nabors</loc>
<lastmod>2026-10-11T07:09:41+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/andrew-nabors/1dac6e7a.png</image:loc>
<image:title>Andrew Nabors</image:title>
<image:caption>Jack of all trades, master of none.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/javad-seydi</loc>
<lastmod>2026-10-11T07:09:41+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/javad-seydi/eea4ef6d.png</image:loc>
<image:title>javad seydi</image:title>
<image:caption>Running on caffeine and bad decisions ☕️</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/joel-butcher</loc>
<lastmod>2026-10-11T07:09:42+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/joel-butcher/6cbbacb0.png</image:loc>
<image:title>Joel Butcher</image:title>
<image:caption>Full Stack PHP / JavaScript developer, based in Lincoln, England. I work with Laravel, React, Next.js, MySQL and TailwindCSS daily.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/volodya-kurshudyan</loc>
<lastmod>2026-10-11T07:09:43+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/volodya-kurshudyan/3f64c47f.png</image:loc>
<image:title>Volodya Kurshudyan</image:title>
<image:caption>Laravel Contributor</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/athanasius</loc>
<lastmod>2026-10-11T07:09:44+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/athanasius/212e7ae0.png</image:loc>
<image:title>Athanasius</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/ahmadreza</loc>
<lastmod>2026-10-11T07:09:44+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/ahmadreza/04d21362.png</image:loc>
<image:title>Ahmadreza</image:title>
<image:caption>Back-end Developer [PHP::Laravel &amp; Go] 👨‍💻.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/simon-harms</loc>
<lastmod>2026-10-11T07:09:45+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/simon-harms/dbfd79a2.png</image:loc>
<image:title>Simon Harms</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/taylor-otwell</loc>
<lastmod>2026-10-11T07:09:46+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/taylor-otwell/34b56f5e.png</image:loc>
<image:title>Taylor Otwell</image:title>
<image:caption>Creator of @laravel.</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/richard-van-baarsen</loc>
<lastmod>2026-10-11T07:09:46+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/richard-van-baarsen/d3976332.png</image:loc>
<image:title>Richard van Baarsen</image:title>
<image:caption>PHP Web Developer, Laravel, TALL Stack Enthousiast</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/javier-ciberman-mora</loc>
<lastmod>2026-10-11T07:09:49+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/javier-ciberman-mora/a61822db.png</image:loc>
<image:title>Javier "Ciberman" Mora</image:title>
<image:caption>Laravel. Game development, Rendering and graphics programming. </image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/thomas-wijnands</loc>
<lastmod>2026-10-11T07:09:49+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/thomas-wijnands/f55f77ed.png</image:loc>
<image:title>Thomas Wijnands</image:title>
<image:caption>Laravel developer @swisnl </image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/jenthe-noordsij</loc>
<lastmod>2026-10-11T07:09:50+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/jenthe-noordsij/d55f2f66.png</image:loc>
<image:title>Jenthe Noordsij</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/wes-hooper</loc>
<lastmod>2026-10-11T07:09:51+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/wes-hooper/e2a4ba76.png</image:loc>
<image:title>Wes Hooper</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/francisco-madeira</loc>
<lastmod>2026-10-11T07:09:51+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/francisco-madeira/3719e7bb.png</image:loc>
<image:title>Francisco Madeira</image:title>
<image:caption>Hello World 👋</image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/kjell-kind</loc>
<lastmod>2026-10-11T07:09:57+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/kjell-kind/372dfbb5.png</image:loc>
<image:title>Kjell Kind</image:title>
<image:caption></image:caption>
</image:image>
</url>
<url>
<loc>https://laravelblog.com/author/pushpak-chhajed</loc>
<lastmod>2026-10-11T07:09:57+05:45</lastmod>
<image:image>
<image:loc>https://laravelblog.com/open-graph/author/pushpak-chhajed/d23c7edb.png</image:loc>
<image:title>Pushpak Chhajed</image:title>
<image:caption>oss software engineer at  
@laravelphp · speaker · open-source maintainer · boost, mcp and aisdk · created  @shipfastlabs, parsel, agent-detector and more</image:caption>
</image:image>
</url>
</urlset>