v0.11.0 - automatic web search and prompt caching
What's changed
- Reworked web search around automatic tool choice. Tool-capable models now decide when to search instead of requiring a per-chat toggle, with a one-message Search action in the composer for forcing it and a persistent hard-disable under Settings → Tools.
- Added a per-model Tool calling switch (migration 0004) so models without tool support can be excluded from tool-bearing requests. The connection tester now verifies an actual tool call when the switch is on.
- Added provider prompt caching: Anthropic cache breakpoints on the system prefix and the latest user turn, and a stable per-chat
promptCacheKeyfor OpenAI derived from a hash of the chat ID. The prompt is append-only so prior prefixes stay byte-for-byte reusable. - Surfaced cache accounting in message stats — uncached input, cache read, and cache write tokens.
- Replaced the per-request runtime-context block with a date-only
Current date:line resolved against a validated client time zone, keeping the system prefix cache-stable across turns. - Rewrote the citation instructions and anchor scheme so anchors address the search call and result index (
turnNsearchI), fixing attribution when a response performs more than one search. - Upgraded the Vercel AI SDK from v6 to v7 across web, mobile, and shared, moving chat execution onto
ToolLoopAgentwithcreateUIMessageStreamResponse. - Expanded model brand icon coverage and model-ID matching to more top providers.
- Added a
?q=shortcut for starting a new chat from a URL, normalizing repeated and blank values and waiting for a valid selected model before submitting. - Restructured the chat title prompt as a single labelled task with the user's message fenced at the end, which stops markdown formatting and conversational replies from leaking into titles.
- Updated the default Compose app image to 0.11.0.
Upgrade note
Migration 0004 runs on startup and adds tool_calling_enabled, defaulting to on for existing model configurations.
Web search is now automatic and on by default, where it used to be opt-in per chat. Turn it off under Settings → Tools, or switch off Tool calling for a model that can't use tools — otherwise its connection test will fail, since the test now requires a real tool call. Older Android clients keep working and will start searching once the server is upgraded.
One caveat if you self-host inference: the Search action and the connection test both send tool_choice: "required", and vLLM's XML-format tool parsers (poolside_v1, GLM-4) silently downgrade that to auto instead of erroring — so on a model like Laguna S2.1, automatic search works but forcing it doesn't, and the connection test can fail on a model whose tool calls are otherwise fine. Nothing to fix on this side; see vllm-project/vllm#47175.
Validation
npm run test (166), lint, typecheck, build, deps:check, docker compose config, docker build. Playwright smoke against the standalone server with live Gemini streaming. Upgraded a v0.10.0-era database to confirm 0004 applies and existing model configurations survive.
Image
- ghcr.io/yoloyash/overtchat-app:0.11.0
- ghcr.io/yoloyash/overtchat-app:latest
- Platforms: linux/amd64 and linux/arm64
Full Changelog: v0.10.0...v0.11.0