$ the-wire · showcase
Readable env encryption goes incremental, OpenRouter gets reranking
By RepoJournal · Filed · About Laravel · Composed from the cited sources · methodology
Laravel 13.32 lands alongside a quieter diff for encrypted environment files, a new broadcasting install path, and a batch of SDK fixes for MCP output and attachment filenames.
[13.x] Preserve unchanged values when encrypting readable environment files laravel/framework
Overwriting an existing readable encrypted file used to require --force, which re-encrypted every value and buried real changes in the diff; env:encrypt --readable now encrypts only new or changed values, drops variables removed from .env, and creates the file when it does not exist. Existing readable files update without --force, while --force remains for re-encrypting everything after a key c...
v13.32.0 laravel/framework
by github-actions[bot]
The release picks up enum support in queue pause/resume, a default memoryExceededExitCode for Cloud, and closure return types wrapped in withFreshQueryLog() and askWithCompletion(). Review your queue pause/resume callers if they still pass raw strings.
[13.x] Add support for installing Mercure via broadcasting install command laravel/framework
php artisan install:broadcasting can now set up the Mercure driver and pull the Composer packages it needs, an option that was missing since Mercure broadcasting landed in the framework. installDriverPackages() was rewritten to handle multiple packages and version constraints.
Add OpenRouter reranking support laravel/ai
OpenRouterProvider now implements RerankingProvider against OpenRouter's /rerank endpoint, following the same pattern as the Cohere, Jina, VoyageAI, and Bedrock providers, and defaults to cohere/rerank-v3.5. Override it via models.reranking.default when you want a different reranker.
Fix xAI and OpenRouter dropping filename for unnamed documents laravel/ai
Xai and OpenRouter attachment mappers built document parts with array_filter([...]), so a Base64Document, LocalDocument, or StoredDocument without an explicit name lost its filename on the wire. They now adopt the fallbackFilename(?string $mimeType) behavior OpenAI already had, naming the file from its mime type.
Unescape slashes when encoding structured MCP tool output laravel/ai
In the SDK long tail: NormalizesMcpResult::json() passed only JSON_UNESCAPED_UNICODE, so URLs and file paths in structured MCP tool output reached the model as https:\/\/abc.com\/cba; OpenRouter audio input landed for compatible models; and the rerank tests re-covering shared OpenRouter paths were dropped.
Action items
- → Bump react/http to 1.11.1 in laravel/nightwatch's agent, a security release for the 1.x series laravel/nightwatch [plan]