$ the-wire · showcase
Gemini request fields unblocked, inplace DDL lands, Anthropic counts thinking tokens
By RepoJournal · Filed · About Laravel · Composed from the cited sources · methodology
Three provider- and schema-level correctness fixes landed across laravel/ai and laravel/framework: Gemini options that were being sent where the API rejects them now reach the top level, MySQL index and foreign key operations can opt into ALGORITHM=INPLACE, and Anthropic finally reports reasoning token usage.
Hoist every top level Gemini request field out of generationConfig laravel/ai
Gemini's request builder funneled every providerOptions() key into generationConfig unless it appeared on a hoist list that contained only cachedContent, so safetySettings, toolConfig, serviceTier and store were nested where the API rejects them outright with HTTP 400 "Unknown name \"safetySettings\" at 'generation_config': Cannot find field." Those four documented top-level generateContent fie...
[13.x] Add inplace() DDL algorithm modifier for index and foreign key operations laravel/framework
Index and foreign key operations gain an ->inplace() DDL modifier, so an index build can be written as $table->index('foo', 'foo_index')->inplace() instead of dropping to DB::statement with ALGORITHM=INPLACE, LOCK=NONE. The PR was motivated by a partial outage from a migration that locked a large table while adding a foreign key index, and the modifier exists to keep that lock off the table.
[13.x] Resolve FormRequest attributes from parent classes laravel/framework
PHP does not inherit attributes, so #[StopOnFirstFailure], #[RedirectTo], #[RedirectToRoute], #[ErrorBag] and #[FailOnUnknownFields] declared on a shared abstract FormRequest base were silently ignored by every child class. FormRequest now resolves those attributes from parent classes, which fixes base request classes that looked configured but were not.
fix(anthropic): report thinking tokens in usage laravel/ai
Anthropic was the only gateway that omitted reasoningTokens, leaving Usage::$reasoningTokens at its 0 default while Gemini, OpenRouter, Groq, DeepSeek, OpenAiCompatible and xAI all populated it. That gap is now closed, so token accounting and cost tracking over Anthropic turns matches the other providers.
[13.x] Add opt-in support for persisting real NULL on AsCollection/AsArrayObject laravel/framework
AsCollection and AsArrayObject always called set() and JSON-encoded the value, and because json_encode(null) returns the four-character string "null", assigning null persisted the JSON string "null" instead of a native SQL NULL. Opt-in support for persisting real NULL now exists; the long tail also includes replaying earlier tool steps ahead of a paused step's provider blocks, storing a user me...