v2.2

HumanSignal/label-studiov2.2Jul 2, 2026by github-actions[bot]

AI Summary

A major update focusing on improved onboarding workflows, enhanced LLM transport stability, and refinements to the chat UI and memory management.

Key Highlights

  • Deferred first-send model gate for smoother UX
  • Unified onboarding provider selection
  • Stabilized LiteLLM provider fallback
  • Chat composer now supports Markdown code blocks

New Features

  • Markdown-backed code blocks in chat composer
  • Deferred model setup logic (in-thread vs on-screen)
  • Unified provider selection covering Cloud, Account, and Local

Full Release Notes

## Release Notes

### Onboarding & Model Setup

- Introduced a deferred first-send model gate: missing-model setup now happens in-thread instead of on the welcome screen, preserving the pending prompt across refresh and auto-dispatching once a model is configured.
- Unified the onboarding provider selection into a single step covering Cloud, Account, and Local choices, replacing the previous separate illustrated paths.
- Utility model selection is now explicit — no longer silently synced to the main model — and defaults to each provider's utility model when available.
- OAuth account connections no longer auto-populate Main and Utility models; users are routed to model configuration to make an explicit choice.
- Fixed stale OAuth model provider appearing selected when the stored model slot points at a non-connected provider.
- Updated default main model to `anthropic/claude-sonnet-5` across bundled config, Balance preset, and onboarding defaults.
- Refreshed Codex OAuth defaults: removed stale model metadata so connected accounts use upstream `/models` responses instead of the retired `gpt-5.2-codex` default; fallback model updated to `gpt-5.5`.

### LLM Transport & Streaming

- Stabilized LiteLLM provider fallback: Responses endpoint failures now fall back to Chat Completions before any output is emitted, including when the Responses mock encounters real SSE streams.
- Streamed Chat Completions tool-call deltas are now preserved as structured function-call items, so fallback providers can still drive tools.
- Fixed streamed parallel tool extraction so nested `tool_calls` objects no longer prematurely end the stream before the parallel wrapper closes.

### Chat & Memory

- Pruned deleted saved chats from sidebar state so stale in-memory contexts disappear after their chat files are removed.
- Normalized `memory_load` threshold and limit values from model calls before vector search, preventing numeric strings from reaching FAISS unchanged.
- Users are now notified when automatic chat renaming cannot reach the Utility Model, while the rename task remains best-effort.

### Web UI

- Chat composer now supports Markdown-backed code blocks: typing a triple-backtick fence and pressing Enter creates a visual code block, serialized back to fenced Markdown on send.
- File browser action menus now render outside the scroll container with fixed positioning, fixing dropdown clipping.
- Message action button chrome is now non-selectable so copy/paste captures message text without toolbar labels.
- Settings secrets render as masked text inputs instead of browser password fields, avoiding password-manager prompts.
- What's New cards are disabled until new content is added; manual access remains available with an empty state.

### Documentation

- Refreshed onboarding screenshots and first-run docs for the new welcome screen, in-chat model gate, and provider paths.
- Documented Docker host-gateway addressing for local model servers where container localhost does not reach host loopback.
- Clarified that the memory plugin is optional and removed memory-plugin assumptions from non-plugin documentation.
- Updated A0 Launcher download links to v1.1.