Zum Inhalt springen

Laravel Release Notes

176 Einträge aus 4 Quellen. Zuletzt aktualisiert:

Folge Laravel, um die Release Notes in deinen Feed zu holen.

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Inertia: Dynamische Daten in usePoll

usePoll akzeptiert nun als zweites Argument eine Funktion, die bei jedem Poll neu ausgewertet wird, sodass Anfragen stets aktuelle Daten enthalten.

Pull request by @pascalbaljet

usePoll previously captured its request options once at mount, so reactive values from props would go stale on every subsequent tick. You can now pass a function as the second argument - Inertia re-evaluates it on each poll, so your requests always carry fresh data.

usePoll(10_000, () => ({
    only: ["notifications"],
    data: { since: lastSeenAt },
}));

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Inertia: router.once für einmalige Event-Listener

Mit router.once() lassen sich Event-Listener registrieren, die sich nach einmaligem Auslösen automatisch entfernen, ohne manuelles remove().

Pull request by @sebastiandedeyne

Registering a one-time event listener previously meant calling remove() manually inside your own callback. router.once() handles the cleanup for you.

// Before
const remove = router.on("before", () => {
    remove();
    // ...
});

// After
router.once("before", () => {
    // ...
});

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Inertia: rescue-Slot für fehlgeschlagene Deferred Props

Der neue rescue-Slot wird angezeigt, wenn eine Deferred Prop mit rescue: true serverseitig fehlschlägt, und bietet einen reloading-Wert für eine Wiederholen-Oberfläche.

Pull request by @pascalbaljet

When a deferred prop throws on the server using rescue: true, the frontend previously had no way to surface the failure - users would sit on the loading fallback indefinitely. The new rescue slot renders when a prop has been rescued, with a reloading boolean so you can build a proper retry UI.

return Inertia::render('Dashboard', [
    'stats' => Inertia::defer(fn () => Github::stats(), rescue: true),
]);
<Deferred data="stats">
  <template #fallback>
    <div>Loading...</div>
  </template>

  <template #rescue="{ reloading }">
    <button :disabled="reloading" @click="router.reload({ only: ['stats'] })">
      Retry
    </button>
  </template>

  <StatsOverview :stats="stats" />
</Deferred>

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Inertia: Fehlerdialog-iFrame mit Sandbox abgesichert

Der iframe im Inertia-Fehlerdialog erhält sandbox="allow-scripts", sodass enthaltene Skripte nicht auf window.parent zugreifen können, ohne dass API-Änderungen nötig sind.

Pull request by @pascalbaljet

When Inertia displays a non-Inertia response in its error dialog, the content is rendered inside an iframe. This change adds sandbox="allow-scripts" to that iframe, blocking scripts inside from reaching window.parent and interacting with your application. No API changes required.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Inertia: host-Option für den SSR-Server

Der SSR-Server akzeptiert jetzt eine host-Option zur Wahl der Netzwerkschnittstelle, wobei der Standard weiterhin 0.0.0.0 ist.

Pull request by @pascalbaljet

The SSR server now accepts a host option to control which network interface it binds to. The default remains 0.0.0.0 so nothing changes unless you need it.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Inertia: withApp-Callback erhält Props

Der withApp-Callback bekommt nun die initialen Seiten-props übergeben und ist damit gleichauf mit setup, etwa zum Setzen der Sprache im SSR-Modus.

Pull request by @CL0Pinette

The withApp callback now receives the initial page props, giving it parity with setup. Use cases like setting a user locale in SSR mode - where the locale comes from page props - are now straightforward without falling back to setup.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Neuer Skill starter-kit-upgrade für Laravel Starter Kits

Der neue Claude-Code-Skill starter-kit-upgrade führt durch die Prüfung von Änderungen in den Vue-, React- und Livewire-Starter-Kits, damit nur gewünschte Neuerungen übernommen werden.

Pull request by @pushpak1300

Pulling in upstream starter kit improvements without clobbering your own customizations has always been a manual, risky process. The new starter-kit-upgrade Claude Code skill gives you a guided, audit-friendly path to review what's changed in the laravel/vue-starter-kit, laravel/react-starter-kit, or laravel/livewire-starter-kit and apply only the specific features you want.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Konversationsliste über HasConversations-Trait abrufbar

Ein neuer HasConversations-Trait für das User-Model stellt eine Eloquent-Beziehung zu Konversationen bereit, wobei updated_at mit neuen Nachrichten fortgeschrieben wird.

Pull request by @barryvdh

Building a conversation history sidebar previously meant writing raw SQL against the agent_conversations table. A new HasConversations trait for your User model exposes a proper Eloquent relationship, with updated_at advancing as messages arrive so ordering by recency just works.

class User extends Authenticatable
{
    use HasConversations;
}

$conversations = $request->user()
    ->conversations()
    ->latest('updated_at')
    ->paginate(20);

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

BroadcastAgent sendet stream_failed-Event bei Fehlern

Schlägt ein BroadcastAgent-Job mit einer unbehandelten Exception fehl, wird nun über den failed()-Hook ein stream_failed-Event gesendet, damit Clients den Fehler anzeigen und einen neuen Versuch ermöglichen können.

Pull request by @sumaiazaman

When a BroadcastAgent job threw an unhandled exception, the frontend had no signal that the stream had failed - leaving the user staring at a spinner indefinitely. A stream_failed event is now broadcast via the job's failed() hook so clients can surface the error and let users retry.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Stringable-Makro toAudio für Text-to-Speech

Über das neue Makro toAudio lässt sich aus jeder Stringable-Instanz direkt Sprache erzeugen, optional mit Provider, Voice, Instructions, Model und Timeout.

Pull request by @nhedger

Text-to-speech is now a fluent one-liner from any Stringable instance:

$response = Str::of('Hello world')->toAudio(timeout: 45);

// With more control
$response = Str::of('Hello world')->toAudio(
    provider: Lab::ElevenLabs,
    voice: 'alloy',
    instructions: 'Speak slowly',
    model: 'custom-model',
    timeout: 45,
);

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

passwordrules-Attribut in Passwortfeldern der Starter Kits

Alle Felder für neue Passwörter in den Starter Kits (Registrierung, Zurücksetzen, Aktualisieren) enthalten nun ein passwordrules-Attribut, damit Passwortmanager gleich ein passendes Passwort erzeugen.

Pull request by @joetannenbaum

Every new-password input across the starter kits - register, reset password, and update password pages - now includes a passwordrules attribute derived from Password::defaults()->toPasswordRulesString(). Password managers can generate a compliant password on the first try rather than failing against validation after the fact.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Laravel MCP: ResourceLink-Inhaltstyp (Spec 2025-06-18)

Laravel MCP unterstützt jetzt den Inhaltstyp resource_link der MCP-Spezifikation, der statt eingebettetem Inhalt einen URI-Verweis liefert und auch aus einer deklarierten Resource-Klasse erzeugt werden kann.

Pull request by @rupeshstha

Laravel MCP now supports the resource_link content type from the MCP spec. Unlike embedded resources that inline content, a resource link returns a URI pointer that the client fetches or subscribes to independently - better suited for large payloads, generated artifacts, and live subscriptions.

Response::resourceLink(
    uri: 'file:///data/report.json',
    name: 'monthly-report',
    mimeType: 'application/json',
    title: 'Monthly Sales Report',
    size: 2048,
);

Resource links can also be built from a declared Resource class, inheriting its URI, name, description, and MIME type - with optional overrides:

Response::resourceLink(WeatherForecastResource::class, title: 'Custom Title');

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Pao: Umgebungsvariable PAO_FORCE

Die neue Umgebungsvariable PAO_FORCE=1 aktiviert PAO unabhängig von der Agent-Erkennung, was etwa Tests in Docker-Containern vereinfacht.

Pull request by @antonkomarev

Running tests inside Docker means agent environment variables often don't propagate into the container. A new PAO_FORCE=1 env var force-enables PAO regardless of agent detection, so you can drop it into a docker compose run command without enumerating every possible agent marker in your compose config.

docker compose run --rm -e PAO_FORCE=1 app vendor/bin/pest

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Passkeys: runWith() deaktiviert alle Agents

Der Testhelfer runWith() deaktiviert während der Testausführung nun alle Agents statt nur Claude Code.

Pull request by @cosmastech

The runWith() testing helper now correctly disables all agents during test execution, not just Claude Code. Previously, other agents could still interfere with test runs.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Reverb: $hidden, $visible und $appends in Model-Komponenten berücksichtigt

Ranger berücksichtigt bei den generierten Typen nun die Eloquent-Eigenschaften $hidden, $visible und $appends, sodass die Struktur der tatsächlich serialisierten Ausgabe entspricht.

Pull request by @joetannenbaum

Eloquent's $hidden, $visible, and $appends properties now influence the types Ranger generates. Previously, the generated TypeScript could include attributes that would never appear in a serialized response, or miss custom appended accessors entirely. The resolved shape now matches what Eloquent actually serializes.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Surveyor: Inertia-Spezial-Prop-Typen werden aufgelöst

Surveyor löst bei den Inertia-Wrappern defer, optional, lazy, always und merge nun den inneren Typ aus dem Callback auf und markiert defer, optional und lazy als optional.

Pull request by @joetannenbaum

Inertia's defer, optional, lazy, always, and merge prop wrappers were previously falling through to reflection, which returned the wrapper class itself rather than the actual type inside. Surveyor now resolves the inner type directly from each wrapper's callback. defer, optional, and lazy are marked as optional since those props may not be present in the initial response.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Surveyor: @var-Docblocks überschreiben abgeleiteten Typ bei Array-Einträgen

Ein @var-Docblock direkt vor einem Array-Eintrag überschreibt in Surveyor nun den abgeleiteten Typ, ohne dass umgebender Code geändert werden muss.

Pull request by @JasBogans

Static analysis can't always follow deep Collection pipelines or SQL aliases down to a precise shape. A @var docblock placed immediately before an array item now overrides the inferred type, giving you an exact local escape hatch without changing any surrounding code.

return Inertia::render('Authors/createOrEdit', [
    'author' => $author,
    /** @var list<array{value:int,label:string}> */
    'categories' => Category::query()->orderBy('name')->get()
        ->map(fn (Category $c) => ['value' => $c->id, 'label' => $c->name])
        ->values()->all(),
]);

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Laravel Framework 13.x: JsonFormatter eingeführt

Der neue Illuminate\Log\Formatters\JsonFormatter nimmt context()-Daten von Exceptions, auch aus verketteten vorherigen Exceptions, in strukturierte Logs auf.

Pull request by @cosmastech

Exception context is one of those things you only realize you needed after staring at production logs for hours. The new Illuminate\Log\Formatters\JsonFormatter ensures context() data on your custom exceptions actually shows up in structured logs, including context from previous exceptions in a chain. Wire it up in config/logging.php:

'formatter' => Illuminate\Log\Formatters\JsonFormatter::class,

Now an exception like this carries its enriched context all the way through to the log entry:

class MyException extends \RuntimeException
{
    public function context(): array
    {
        return [
            'luke' => 'cosmastech',
            'taylor' => 'taylorotwell',
        ];
    }
}

Whether the exception is sent through report() or written via Log::error() with an exception key, the structured payload now includes everything you put on the exception itself.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Laravel Framework 13.x: prefersJsonResponses() im Application Builder

Mit dem optionalen prefersJsonResponses() im Application Builder werden breite Accept-Header als JSON behandelt, während explizite text/html-Anfragen unverändert bleiben und der ursprüngliche Wert in X-Original-Accept erhalten bleibt.

Pull request by @WendellAdriel

Building an API and tired of curl requests coming back as HTML? One line in bootstrap/app.php now treats broad Accept headers as JSON, so auth redirects, validation errors, and exception pages all serialize properly for clients that didn't ask for HTML:

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
    )
    ->prefersJsonResponses()
    ->create();

Clients that explicitly request text/html are left alone, and the original Accept value is preserved on X-Original-Accept if you need it for logging. Default behavior is unchanged unless you opt in.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Agent Skills: useHttp erhält onHttpException, onNetworkError und Response in onSuccess

Der useHttp-Hook bietet nun die Fehler-Callbacks onHttpException und onNetworkError sowie die rohe HttpResponse als zweites Argument von onSuccess, verfügbar für React, Vue und Svelte.

Pull request by @pascalbaljet

The useHttp hook gets the same error callbacks Inertia visits already have. No more wrapping calls in try/catch just to handle a 500 or a dropped connection. There's also a second argument on onSuccess that hands you the raw HttpResponse, so telling a 200 apart from a 204 is now trivial. Available across the React, Vue, and Svelte adapters.

Originalquelle(öffnet in neuem Tab)Problem melden