$ the-wire · showcase
Boost fixes SQL literal prefixing, browser log path resolution
By RepoJournal · Filed · About Laravel · Composed from the cited sources · methodology
laravel/boost now leaves SQL string literals and comments alone when applying table prefixes and reads browser logs from the configured channel instead of a hardcoded file, while laravel/ai adds two opt-in conversation store contracts and laravel/vet continues its API rewrite.
laravel/boost closed a correctness gap in its database-query tool: the prefix regex used to rewrite table-like references inside SQL string literals and comments, so `SELECT 'FROM users' AS label FROM users` with the `wp_` prefix became `SELECT 'FROM wp_users' AS label FROM wp_users` [1]. The fix preserves string literals and comments while continuing to prefix actual table references, and it now derives CTE names [1]. A follow-up commit replaced the second literal regex with lexer offsets, because the prefixing pass had its own definition of a string literal that disagreed with `withoutLiteralsAndComments()` on backslash escapes, doubled quotes, and unterminated literals, leaving real table references unprefixed [2]. Separately, `browser-logs` used to read the hardcoded `storage/logs/browser.log` even when the app defined its own `browser` log channel, so a channel pointing at `storage/logs/frontend.log` produced "No log file found, probably means no logs yet"; it now resolves the path from the channel config through the shared resolver so stack channels work [3][4].
laravel/ai added two opt-in contracts for `ConversationStore`. `ResolvesPendingApprovals` returns the newest turn's outstanding calls as `PendingApproval`, so a paused response and a reload hand a client the same shape instead of the application querying `ConversationMessage` directly and tying itself to the database store [5]. `VerifiesConversationOwnership` takes the participant type and key rather than the participant itself, so a store can answer ownership without Eloquent [6][9]. On the embedding side, Cohere's Bedrock `invoke_model` response body carries no usage data, so the gateway always reported 0 input tokens for Cohere embeddings on Bedrock; it now reads the count from the `x-amzn-bedrock-input-token-count` response header [7][8].
laravel/vet landed a series of commits from nuno maduro: an invitation feature [10], a change making `vet audit --agent` a trust decision [11], bug fixes [12], and an API rewrite [13]. The commits carry no further detail beyond their titles.
Action items
- → Update laravel/boost if you use table prefixes on raw SQL, then re-run any queries whose literals contain table-like text laravel/boost [plan]
- → Update laravel/boost if you run browser-logs against a custom browser log channel laravel/boost [plan]
- → Monitor laravel/vet's API rewrite before adopting it in tooling laravel/vet [monitor]
References
- [1] Preserve SQL literals when applying table prefixes ↗ laravel/boost
- [2] Preserve SQL literals when applying table prefixes (#1014) ↗ laravel/boost
- [3] Resolve the browser log path from the browser channel config instead of a hardcoded location ↗ laravel/boost
- [4] Resolve the browser log path from the browser channel config instead of a hardcoded location (#1017) ↗ laravel/boost
- [5] [0.x] Expose the tool calls a paused conversation is waiting on ↗ laravel/ai
- [6] [0.x] Expose whether a conversation belongs to a participant ↗ laravel/ai
- [7] Read Cohere Bedrock embeddings input token count from response header ↗ laravel/ai
- [8] Merge pull request #914 from serpentblade/fix/cohere-bedrock-input-token-count ↗ laravel/ai
- [9] Expose whether a conversation belongs to a participant (#993) ↗ laravel/ai
- [10] feat: invitation ↗ laravel/vet
- [11] feat: make vet audit --agent a trust decision ↗ laravel/vet
- [12] chore: bug fixes ↗ laravel/vet
- [13] feat: rewrites api ↗ laravel/vet