Changelog

New updates and improvements to Laravel's open source products.

August 2026

Laravel Framework 13.x

A Laravel Cloud Facade for Managed Queues

Pull request by @jackbayliss

Laravel now provides an Illuminate\Support\Facades\Cloud facade for inspecting Laravel Cloud at runtime. Cloud::hosted() determines whether the application is hosted on Laravel Cloud, Cloud::usesManagedQueues() detects the managed queue connection, and Cloud::queue() gives access to that connection when configured.

Read-Through Filesystems

Pull request by @taylorotwell

Laravel now includes a read-through filesystem driver for gradually migrating files between disks. It checks the primary disk first; when a file exists only on the fallback disk, Laravel returns it and copies it to the primary disk for future requests. Writes and directory listings continue to target the primary disk, while streamed reads are supported without loading the entire file into memory.

1'assets' => [
2 'driver' => 'read-through',
3 'primary' => 'r2',
4 'fallback' => 'legacy-s3',
5],

Portable Eloquent Vector Casts

Pull request by @eas4ai

Laravel now provides the AsVector Eloquent cast for working with vector columns as arrays of floats. The cast handles MariaDB's binary vector representation as well as PostgreSQL-compatible text values, accepts arrays and Arrayable objects when storing vectors, and correctly converts query bindings for MariaDB vector distance functions.

1use Illuminate\Database\Eloquent\Casts\AsVector;
2 
3class Document extends Model
4{
5 protected $casts = [
6 'embedding' => AsVector::class,
7 ];
8}

MariaDB Vector Distance Queries

Pull request by @Rhaima96

Laravel's vector query methods now support MariaDB's native vector capabilities. Methods such as whereVectorSimilarTo, whereVectorDistanceLessThan, orderByVectorDistance, and selectVectorDistance compile to MariaDB's vector distance functions, bringing the same expressive query API previously available for PostgreSQL to supported MariaDB releases.

1$documents = Document::query()
2 ->whereVectorSimilarTo('embedding', $queryEmbedding)
3 ->orderByVectorDistance('embedding', $queryEmbedding)
4 ->get();

Automatically Retry Safe Redis Commands

Pull request by @taylorotwell

PhpRedis connections now automatically reconnect and retry safe commands following transient connection failures. Laravel retries a curated set of read-only commands and option-free SET operations once by default, while avoiding automatic retries for non-idempotent writes. Applications that need additional attempts may configure them with the REDIS_COMMAND_RETRIES environment variable.

Debounce Queued Event Listeners

Pull request by @stevebauman

The #[DebounceFor] attribute can now be applied to queued event listeners. When several events arrive for the same resource during the debounce period, Laravel processes only the most recently dispatched listener, making it a natural fit for work such as updating a product search index after a burst of changes. A maxWait value can ensure a continuous stream of events does not defer the listener indefinitely.

1use Illuminate\Contracts\Queue\ShouldQueue;
2use Illuminate\Queue\Attributes\DebounceFor;
3 
4#[DebounceFor(30, maxWait: 120)]
5class UpdateProductSearchIndex implements ShouldQueue
6{
7 public function debounceId(ProductUpdated $event): string
8 {
9 return (string) $event->product->getKey();
10 }
11}

Pause Every Queue at Once

Pull request by @jackbayliss

Laravel's queue commands now support php artisan queue:pause --all and queue:resume --all, allowing applications to pause or resume work across every connection and queue from one place. Global pauses are independent from per-queue pauses, and the new QueuesPaused and QueuesResumed events make it possible to observe these operations.

Scout

Pull request by @taylorotwell

Laravel Scout now includes a Turbopuffer engine with batched indexing, automatic namespace creation, weighted BM25 full-text search, filtering, and vector distance metadata. It uses Laravel's HTTP client directly, so no additional Turbopuffer PHP SDK is required.

This release also introduces semantic and hybrid search support for Scout's database engine. Applications can use generated or precomputed embeddings through the familiar Scout builder API, with support for vector search, text search, filters, pagination, and configurable search weights.

1$documents = Document::search('ocean climate')
2 ->semantic()
3 ->where('published', true)
4 ->get();

Semantic and Hybrid Meilisearch Queries

Pull request by @taylorotwell

Scout's Meilisearch engine now supports semantic and hybrid search. Configure an embedder and model embedding settings, then use Scout's semantic() or hybrid() builder methods to search with generated or precomputed vectors. Laravel AI is used to generate embeddings when needed, while applications may provide their own vectors for indexing and querying.

1$results = Article::search('a guide to queues')
2 ->hybrid(textWeight: 1, semanticWeight: 2)
3 ->get();

AI

Repair Unknown AI Tool Calls

Pull request by @pushpak1300

Laravel AI agents can now recover when a model requests an unknown local tool. Opting an agent into the #[RepairToolCalls] attribute returns a tool result containing its available local tools, allowing the model to correct the call and continue generation instead of aborting the loop. Provider-hosted tools are intentionally excluded from the repair response.