Public pages like /brands, /pricing, /compare, and /docs are now served directly from Vercel's Edge cache. Previously, middleware was running on these routes even though it had nothing to do — that was enough to prevent the Edge layer from caching ISR-prerendered pages, so every request was a cache miss despite sub-3ms response times. Removing these routes from the middleware matcher fixes that. Write operations still invalidate correctly, and custom-domain CNAMEs still run middleware as before.
Worksheet research now generates three distinct search queries per cell before running the underlying search. Knowledgebase, Web Search, and SERP cells all do this in parallel, then deduplicate the merged results. Ideas that used to come back with no chunks or thin coverage now return something useful.
Blog post bodies no longer get cut off mid-sentence. The cause was a JSON grammar decoder bug in the generation model that occasionally closed a string field early when the content contained markdown links — the article would save silently in whatever half-finished state it was in. Body generation now produces plain markdown directly, which sidesteps the issue entirely. Title, image prompt, and other metadata fields come from the outline step instead and aren't affected. A length check now rejects suspiciously short bodies and retries rather than accepting them.