v0.5.3
Upgrade notes
Breaking changes
None.
Upgrade notes
v0.5.3 is a maintenance release focused on chat reliability: the recommended Ollama Cloud reasoning model was swapped after the previous default soft-deprecated upstream, model errors now surface as actionable in-chat bubbles instead of raw HTTP 500s, and the chat layout was restructured so per-agent runtimes survive in-app navigation. File attachments also got a proper preview surface.
Upgrade with the standard flow:
cd /opt/pinchy
sed -i 's/PINCHY_VERSION=v0.5.2/PINCHY_VERSION=v0.5.3/' .env
docker compose pull && docker compose up -dNo database migration, no docker-compose.yml change, and no env-var changes are required.
Default Ollama Cloud reasoning model swapped
ollama-cloud/kimi-k2-thinking is removed from the curated model list. The model began returning silent HTTP 500s from Ollama Cloud and is no longer a safe default. Agents that resolve via tier=reasoning now fall through to deepseek-v4-pro, which is already configured and tested.
Existing agents that pinned kimi-k2-thinking explicitly keep loading from the database — but the next request will fail upstream. Open Settings → Agent → Model for each affected agent and pick a working model. The new in-chat error surface (below) makes those agents easy to spot.
Actionable model-error bubbles in chat
When an agent's model call returns a 5xx from the upstream provider, the chat now shows a structured error bubble (<Agent> couldn't respond. + provider/model + a deep-link to the agent's model picker) instead of the raw HTTP 500: "Internal Server Error (ref: …)" string. The original error stays available under a collapsible Technical details section so support requests can still cite the upstream ref ID. Every flip into this error state writes an agent.model_unavailable audit entry.
Per-agent chat runtimes survive in-app navigation
Switching between agents in the sidebar no longer tears down and recreates the chat runtime: a new ChatSessionProvider mounts one runtime per agent at the (app) layout level, so streams in-flight on agent A keep running while you read agent B's history. The sidebar shows a subtle pulse on agents with an active turn and a red dot on agents that ended in an error, so background activity is visible without opening every chat.
Existing behavior is preserved on full page reloads: history still rehydrates from OpenClaw, the bundled history cap is now 200 messages, and a transient disconnect bubble shows when the WebSocket drops mid-stream.
Attachment preview and composer chips
Non-image attachments (PDFs and other files) now render as a filename chip in the composer and on sent messages, with the full filename available on hover. Clicking an attachment opens an in-app AttachmentPreview modal with PDF and image preview, instead of forcing a download. The uploads route is now authenticated for both POST and GET, and PDFs/images are routed through OpenClaw's built-in tools rather than inlined.
Background-run audit telemetry
Chat runs that complete while the user is not actively viewing the agent now emit a chat.background_run_completed audit event with the agent identity, run duration, and turn outcome. This makes background activity auditable without leaking conversation content into the audit log.
What's Changed
- docs(ollama): fix option B/C URL — bare service name fails OpenClaw allowlist by @clemenshelm in #295
- fix(chat): keep draining OpenClaw stream after browser disconnect (#199 Layer B) by @clemenshelm in #297
- fix(screenshots): bump chat-ready timeout to 90s by @clemenshelm in #303
- docs(llm-providers): Ollama Cloud silent-500 troubleshooting + fast-uri CVE bump by @clemenshelm in #312
- fix: WS frame limit for image attachments by @clemenshelm in #307
- test(#199): regression guards + E2E for Layer A history-reload path by @clemenshelm in #311
- fix(onboarding-prompt): reference tools by their prefixed names by @clemenshelm in #317
- test(setup-provider): guard against process.exit regression (#177) by @clemenshelm in #318
- fix: drop kimi-k2-thinking + actionable model-error UX (closes #305) by @clemenshelm in #315
- feat: PDF and audio file attachments in chat composer by @clemenshelm in #316
- fix(chat): suppress NO_REPLY silent-reply sentinel from chat UI by @clemenshelm in #322
- feat(chat): in-app navigation chat persistence + sidebar indicators (#199) by @clemenshelm in #319
- docs(upgrading): freeze v0.5.2 section + add v0.5.3 upgrade notes by @clemenshelm in #323
- fix(chat): HEAD-probe attachment URL before mounting preview (race seen on staging) by @clemenshelm in #325
- fix(chat): forward agent.model as provider/model to fix vision uploads by @clemenshelm in #327
Full Changelog: v0.5.2...v0.5.3