v0.1.49-beta
X-PLUG/mPLUG-DocOwlv0.1.49-betaJul 15, 2026by danielhanchen
AI Summary
This beta release introduces extensive personalization options for Unsloth Studio, including customizable color palettes, fonts, and seven new display languages. It also enhances agent safety with a four-level tool-call permission selector and brings GPU-accelerated inference to Intel GPUs via Vulkan llama.cpp.
Key Highlights
- Three color palettes and custom fonts with in-app picker
- Seven new display languages (French, German, Spanish, etc.)
- Four-level tool-call permission selector for safer agents
- Intel GPU support via Vulkan llama.cpp backend
- Introduction of Inkling (975B parameter) open model
New Features
- Personalization options (themes, fonts, voice settings)
- Agent workspace isolation
- Dynamic NVFP4 quantization support
- OpenAI-compatible API enhancements
- Fixed FP8 inference on compressed-tensors
Full Release Notes
Hey guys we got lots of new update for Unsloth, especially customization. Unsloth now yours to personalize: three color palettes plus custom colors and fonts, seven new display languages, and a new Voice settings tab for dictation and read-aloud. Agents get safer with a four-level tool-call permission selector (Ask, Approve for me, Off, Full access) and workspace isolation, and Intel GPUs finally get GPU-accelerated inference through new Vulkan `llama.cpp` support. [Inkling](https://unsloth.ai/docs/models/inkling), a new 975B parameter (41B active) open model with up to a 1M context window. Licensed under Apache 2.0, Inkling accepts text, images, and audio and generates text. Unsloth Studio natively supports it! ## Personalize Your Studio Appearance is now fully customizable, not just light/dark (#7077): - **Three color palettes**, each with its own light and dark scheme: **Standard** (the Unsloth green), **Classic** (a neutral enterprise grey/black/white with a sparing blue accent), and **Minimal** (strictly monochrome). - **Custom accent, background, and foreground colors** through an in-app color picker (hue/saturation, hex, eyedropper), and **custom UI, heading, chat, and code fonts** with font import (woff2/woff/ttf/otf) and device/folder font detection. - Font-size, contrast, pointer-cursor, reduced-motion, and font-smoothing controls, plus a restyle of the core controls (inputs, dropdowns, buttons) and settings search. Every setting is per-mode (light and dark keep their own values) and syncs across devices. ### Seven New Languages - Added French, German, Spanish, Hindi, Arabic, Russian, and Korean display languages (#7076), joining the existing Chinese (Simplified), Japanese, and Portuguese (Brazil), and made Auto-detect (from the browser language) the new default. ### Voice Settings - New Voice settings tab for dictation, dictionary, and read-aloud (#7074). (Full voice conversation mode is still in progress and not part of this release.) - STT and TTS coming very soon! ## Tool-Call Permissions & Safer Agents Finer control and safer defaults whenever a model calls a tool or an agent runs. - The Bypass-permissions toggle becomes a four-level tool-call permission selector: **Ask** (approve every call), **Approve for me** (auto-runs read-only calls, pauses only on potentially-unsafe ones), **Off**, and **Full access** (also disables the sandbox). Covers terminal, python, web search, RAG, and MCP tools (#7079). - Agent workspace isolation and Hermes one-shot resume (#7103); `unsloth start` now warns before running an agent's remote installer (#7024) and gains `--persist` to keep and reopen agent sessions (#7014). - Live tool output streams with SSE heartbeats, with better web-page extraction and surfaced interrupted turns (#7083); binary `web_search` fetches are rejected instead of decoded into replacement characters (#7130). - Removed `AGENTS.md` / `CLAUDE.md` from install artifacts and tightened instruction-file cleanup (#7096, #7097); the seeded bootstrap password auto-fill is now scoped to loopback clients (#7131). ## Dynamic NVFP4 See our Dynamic NVFP4 article for more details: https://unsloth.ai/docs/basics/nvfp4 We also shipped a broader **[NVFP4 collection](https://huggingface.co/collections/unsloth/nvfp4)** this release: * [Qwen3.6 35B](https://huggingface.co/unsloth/Qwen3.6-35B-A3B-NVFP4) and (Qwen3.6 35B [Fast](https://huggingface.co/unsloth/Qwen3.6-35B-A3B-NVFP4-Fast)) and [27B](https://huggingface.co/unsloth/Qwen3.6-27B-NVFP4) * [Qwen3.5 122B](https://huggingface.co/unsloth/Qwen3.5-122B-A10B-NVFP4) * [Inkling](https://huggingface.co/unsloth/inkling-NVFP4) * [GLM-4.7 Flash](https://huggingface.co/unsloth/GLM-4.7-Flash-NVFP4) * Gemma 4: [31B](https://huggingface.co/unsloth/gemma-4-31B-it-NVFP4), [26B](https://huggingface.co/unsloth/gemma-4-26B-A4B-it-NVFP4), [12B](https://huggingface.co/unsloth/gemma-4-12b-it-NVFP4), [E4B](https://huggingface.co/unsloth/gemma-4-E4B-it-NVFP4), [E2B](https://huggingface.co/unsloth/gemma-4-E2B-it-NVFP4) ## Vulkan & llama.cpp - New Vulkan `llama.cpp` backend: Intel GPUs now get GPU-accelerated inference instead of falling back to CPU (they use Vulkan, not CUDA/ROCm), reusing the existing VRAM, context auto-sizing, multi-GPU selection, and layer-offload paths. AMD users can opt in with `UNSLOTH_FORCE_VULKAN=1` (#5819). - Prebuilts resolve via the release-assets CDN to avoid GitHub API rate limits (#7086); update-apply is pinned to the exact release the banner offered (#7112); fixed the permanent GGUF "update available" on no-symlink caches (#7113); model state resyncs after a `llama.cpp` update unloads it (#6998). - Stop now interrupts a `llama.cpp` generation stalled mid-stream (#7117). ## Models & Training - DeepSeek-V4: eager attention and trainable FP8 grouped experts (#7042). - Stopped silent full-sequence training: "Train on completions" used a hardcoded template table and silently disabled masking on a miss, so DeepSeek and most LFM models trained on prompts too while the toggle said otherwise. Markers are now auto-detected from the tokenizer's chat template (#7054); also fixed manual response-template markers that never matched their rendered templates (#7062). - Honor the "none" gradient-checkpointing option instead of silently forcing "unsloth" (#7128). - Restore the process-global `torch.compile` config on torch 2.12 so gradient-checkpointing backward honors it (#7019). - Keep native RoPE scaling when extending context, carrying `rope_theta` for linear scaling (#7028). - Force-terminate a stuck training stop after a grace period (#7099). - Route new architectures automatically: `lfm2_moe` (LFM2-8B-A1B) to transformers 5.3.0 (#7040), models by `CONFIG_MAPPING_NAMES` instead of hardcoded tables (#7043), and offer the latest transformers release for brand-new architectures (#7056). - Inkling (TML) support fixes for multi-GPU B200s: KV-cache-aware context buffer sizing, tool-call healing for its typed `<|content_invoke_tool_json|>` markers, a download-worker `HF_TOKEN` fallback, and numeric reasoning-effort mapping (#7153). ## FP8, Quant & Export - Fixed fast inference on compressed-tensors FP8 models (#7025), restored dropped FP8 `weight_scale_inv` tensors on load (#6978), and guarded FP8 Triton launches with tensor device context (#6888). - Single-pass GGUF export for directly convertible outtypes in `save.py` (#7090); concise NVFP4 inference errors (#7145). - Probe xformers support on `sm_120` instead of disabling it by version (#6828). ## OpenAI-Compatible API, GGUF & MCP - Hardened OpenAI-compatible GGUF streaming (#6950) and queue local GGUF requests before `llama-server` (#7047). - `/v1/messages` accepts thinking and null/unknown content blocks, fixing resumed Claude Code / Anthropic sessions that previously 400'd (#7017); the "No model loaded" 400 now hints at Model auto-switch (#7006); Studio auto-loads the last used local model, including GGUF variant (#6966). - Render image content returned by MCP tools (#7081); persistent stdio MCP sessions keep server state across tool calls (#7080). ## Recipes, RAG & Data Prep - Fixed `SyntheticDataKit.chunk_data` emitting chunks over `max_tokens` (#7073) and guarded `smart_chunk_text` against `stride >= chunk_size` (#7126). - Fixed `FastSentenceTransformer` Qwen embedding preprocessing (#6939) and switched recipes to a writable artifact path (#7044). ## Installer, Hardware & Platform - Fixed the Windows installer torch index override (#6972) and install a torchao Windows ROCm stub in the inference worker (#7000). - Added the `UNSLOTH_SKIP_AUTOSTART` installer flag (#7093); the installer now returns proper failure exit codes (#7123). - Detect Windows Intel GPUs via the registry before WMI (#7064) and expose Windows drive roots in the folder browser (#7082). ## Polish & Reliability - Fixed Studio auto-titles for reasoning models (#7098), user-message overflow for long unbroken text (#7100), and duplicate response model labels and hover (#7049). - Recover MLX VLM image prompts (#7094); prevent an auth-monitor reload loop (#7118); fix S3 tab flashing on reload (#7106) and Hub offline status (#7129). - Quiet noisy logs, log real progress, and speed up Windows/macOS dataset prep (#7087); added a startup loading banner and muted the benign bitsandbytes ROCm warning (#7085). - UI polish: compact thinking control in narrow composers (#7150), tidier permission composer layout and Hub feed icons (#7148), toast close-button positioning (#7142), and removed the edge-fades appearance setting (#7143). - Made the Cloudflare tunnel opt-in, off by default (#7046). # Updating Unsloth To update Unsloth or install a fresh Unsloth Unsloth, use the commands below: **macOS, Linux, WSL:** ``` curl -fsSL https://unsloth.ai/install.sh | sh ``` **Windows:** ``` irm https://unsloth.ai/install.ps1 | iex ``` ## What's Changed * Bump install.sh / install.ps1 pin to unsloth>=2026.7.1 by @danielhanchen in https://github.com/unslothai/unsloth/pull/6943 * Sort chat recents by last activity by @NilayYadav in https://github.com/unslothai/unsloth/pull/6844 * Studio: render \[ \] and \( \) LaTeX delimiters in chat by @oobabooga in https://github.com/unslothai/unsloth/pull/6914 * fix: match qwen3-thinking double-newline in train_on_responses_only response pattern by @InfoSage05 in https://github.com/unslothai/unsloth/pull/6926 * Studio: stream reasoning tokens in the tool-loop generator (fixes DeepSeek thinking not streaming with a pill on) by @oobabooga in https://github.com/unslothai/unsloth/pull/6947 * Create ossf.yml by @danielhanchen in https://github.com/unslothai/unsloth/pull/6952 * Speed up Studio startup path by @wasimysaid in https://github.com/unslothai/unsloth/pull/6899 * Polish assistant message actions menu by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/6962 * Move New badge to System settings tab by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/6963 * Fix opencode Unsloth provider selection by @Imagineer99 in https://github.com/unslothai/unsloth/pull/6906 * Fix Hermes install hint on Windows by @Imagineer99 in https://github.com/unslothai/unsloth/pull/6903 * Studio: heal DiffusionGemma tool calls into structured tool_calls by @oobabooga in https://github.com/unslothai/unsloth/pull/6851 * Fix case-variant model matching and GGUF cache reuse in unsloth start by @Imagineer99 in https://github.com/unslothai/unsloth/pull/6900 * Studio: show Hugging Face address on hover for Hub and online model rows (#6382) by @danielhanchen in https://github.com/unslothai/unsloth/pull/6928 * Studio: fix currency and indentation edge cases in LaTeX rendering by @danielhanchen in https://github.com/unslothai/unsloth/pull/6957 * Add MLX backend support for CLI unsloth train by @Lyxot in https://github.com/unslothai/unsloth/pull/6709 * feat(cli): support MLX distributed inference by @Lyxot in https://github.com/unslothai/unsloth/pull/6845 * Route MLX trainer callbacks through UnslothTrainer by @Lyxot in https://github.com/unslothai/unsloth/pull/6929 * (GRPO) Fix PEFT replacement for TRL >= 1.7.0, add missing compute_aux_loss for TRL >= 1.7.0 by @marcandrelarochelle in https://github.com/unslothai/unsloth/pull/6904 * version-compat CI: fake CPU training runs for SFT/GRPO/DPO by @danielhanchen in https://github.com/unslothai/unsloth/pull/6965 * Fix OpenClaw start default to local TUI by @Imagineer99 in https://github.com/unslothai/unsloth/pull/6937 * feat: detect installed coding agent CLIs in Studio settings by @ErenAta16 in https://github.com/unslothai/unsloth/pull/6909 * Studio: don't pin transformers before the training worker activates the 5.x sidecar by @danielhanchen in https://github.com/unslothai/unsloth/pull/6968 * Studio: source CPU llama.cpp prebuilts from unslothai/llama.cpp by @oobabooga in https://github.com/unslothai/unsloth/pull/6311 * fix(studio/hub): apply repo_id length limit per segment, not whole string (#6946) by @Anai-Guo in https://github.com/unslothai/unsloth/pull/6953 * MoE LoRA: auto-target per-expert Linear experts (gpt-oss 4bit) instead of leaving them frozen by @danielhanchen in https://github.com/unslothai/unsloth/pull/6936 * Studio: fix flash-attn and torchao install on Blackwell (sm_100+) GPUs (Closes #6961) by @ThomasEricB in https://github.com/unslothai/unsloth/pull/6970 * Fix Backend CI: add has_blackwell_gpu to the mlx worker test stub by @danielhanchen in https://github.com/unslothai/unsloth/pull/6980 * Studio: allow CPU-only DiffusionGemma by granting the diffusion runner the CPU device by @danielhanchen in https://github.com/unslothai/unsloth/pull/6979 * Bump install.sh / install.ps1 pin to unsloth>=2026.7.2 by @danielhanchen in https://github.com/unslothai/unsloth/pull/6981 * Studio: render thinking blocks for safetensors inference with prefilled <think> templates by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/6816 * Remove API menu new badge by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/6983 * Fix BAD_MAPPINGS not redirecting the -unsloth-bnb-4bit dynamic quants by @vineethsaivs in https://github.com/unslothai/unsloth/pull/6949 * Fix duplicate gemma-2b-bnb-4bit key routing the base model to the instruct model by @vineethsaivs in https://github.com/unslothai/unsloth/pull/6891 * Fix to_sharegpt optional block rendering "None" for missing extra columns by @vineethsaivs in https://github.com/unslothai/unsloth/pull/6827 * Guard FP8 Triton launches with tensor device context by @ramisworld in https://github.com/unslothai/unsloth/pull/6888 * Fix per-block ID collisions and add block cleanup for unstructured uploads by @NilayYadav in https://github.com/unslothai/unsloth/pull/6944 * Stabilize floating monitor drag by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/6984 * Retry the Studio UI shutdown re-login on transient goto timeout by @danielhanchen in https://github.com/unslothai/unsloth/pull/7027 * Fix FastSentenceTransformer Qwen embedding preprocessing by @Etherll in https://github.com/unslothai/unsloth/pull/6939 * unsloth start: warn before running an agent's remote installer by @danielhanchen in https://github.com/unslothai/unsloth/pull/7024 * Restore process-global torch.compile config on torch 2.12 so gradient checkpointing backward honors it by @danielhanchen in https://github.com/unslothai/unsloth/pull/7019 * Silence torch._check_is_size FutureWarning and shim it if torch removes it by @danielhanchen in https://github.com/unslothai/unsloth/pull/7023 * unsloth start: add --persist to keep and reopen agent sessions by @danielhanchen in https://github.com/unslothai/unsloth/pull/7014 * Studio /v1/messages: accept thinking and unknown content blocks by @danielhanchen in https://github.com/unslothai/unsloth/pull/7017 * Studio: add Vulkan llama.cpp support by @oobabooga in https://github.com/unslothai/unsloth/pull/5819 * Fix Windows installer torch index override by @alkinun in https://github.com/unslothai/unsloth/pull/6972 * Fix fast inference crash on compressed-tensors FP8 models by @danielhanchen in https://github.com/unslothai/unsloth/pull/7025 * Keep native RoPE scaling when extending context; carry rope_theta for linear by @danielhanchen in https://github.com/unslothai/unsloth/pull/7028 * scripts: refresh scan_packages allowlist baseline by @danielhanchen in https://github.com/unslothai/unsloth/pull/7032 * Studio: remove dead direct_linux_release_plan path by @danielhanchen in https://github.com/unslothai/unsloth/pull/7030 * Restore dropped FP8 weight_scale_inv tensors on load by @danielhanchen in https://github.com/unslothai/unsloth/pull/6978 * Studio: resolve the repo-root MTP drafter after the MTP/ GGUF rename by @danielhanchen in https://github.com/unslothai/unsloth/pull/7031 * Studio: harden OpenAI-compatible GGUF streaming by @Apoze in https://github.com/unslothai/unsloth/pull/6950 * Studio: auto-load last used local model by @alkinun in https://github.com/unslothai/unsloth/pull/6966 * Clarify in README that -H 0.0.0.0 starts a public Cloudflare tunnel by @oobabooga in https://github.com/unslothai/unsloth/pull/7007 * CI: retry transient HTTP timeouts in Studio smoke probes by @danielhanchen in https://github.com/unslothai/unsloth/pull/7052 * fix: guard remove_special_tokens against tokenizers without a BOS token by @vineethsaivs in https://github.com/unslothai/unsloth/pull/7048 * Studio: queue local GGUF OpenAI-compatible requests before llama-server by @Apoze in https://github.com/unslothai/unsloth/pull/7047 * Studio: hint at Model auto-switch in the OpenAI "No model loaded" 400 by @oobabooga in https://github.com/unslothai/unsloth/pull/7006 * Studio: detect Windows Intel GPUs via the registry before WMI by @oobabooga in https://github.com/unslothai/unsloth/pull/7064 * Studio: route lfm2_moe (LFM2-8B-A1B) to transformers 5.3.0 by @danielhanchen in https://github.com/unslothai/unsloth/pull/7040 * Studio: route models by CONFIG_MAPPING_NAMES instead of hardcoded tables by @danielhanchen in https://github.com/unslothai/unsloth/pull/7043 * Studio: auto-detect completion masking markers, stop silent full-sequence training by @danielhanchen in https://github.com/unslothai/unsloth/pull/7054 * scripts: refresh scan_packages allowlist baseline by @danielhanchen in https://github.com/unslothai/unsloth/pull/7078 * DeepSeek-V4: eager attention and trainable FP8 grouped experts by @danielhanchen in https://github.com/unslothai/unsloth/pull/7042 * Studio: fix the manual response-template markers that never match their rendered templates by @danielhanchen in https://github.com/unslothai/unsloth/pull/7062 * Fix SyntheticDataKit.chunk_data emitting chunks over max_tokens by @winklemad in https://github.com/unslothai/unsloth/pull/7073 * Studio: startup loading banner and mute the benign bitsandbytes ROCm warning by @danielhanchen in https://github.com/unslothai/unsloth/pull/7085 * Studio: add UNSLOTH_SKIP_AUTOSTART installer flag by @danielhanchen in https://github.com/unslothai/unsloth/pull/7093 * Studio: remove AGENTS.md and CLAUDE.md from install artifacts by @danielhanchen in https://github.com/unslothai/unsloth/pull/7096 * Tighten Studio instruction-file cleanup boundaries by @danielhanchen in https://github.com/unslothai/unsloth/pull/7097 * Fix Studio user-message overflow for long unbroken text by @Lyxot in https://github.com/unslothai/unsloth/pull/7100 * fix(studio): use writable recipe artifact path by @Lyxot in https://github.com/unslothai/unsloth/pull/7044 * Fix Studio auto-titles for reasoning models by @Lyxot in https://github.com/unslothai/unsloth/pull/7098 * Studio: resync model state after a llama.cpp update unloads it by @oobabooga in https://github.com/unslothai/unsloth/pull/6998 * Studio: Fix torch_dtype deprecation warning on startup and ASR load by @oobabooga in https://github.com/unslothai/unsloth/pull/6999 * Studio: Show Run button for downloaded non-GGUF models in the Model Hub by @oobabooga in https://github.com/unslothai/unsloth/pull/7001 * Studio: install torchao Windows ROCm stub in the inference worker by @oobabooga in https://github.com/unslothai/unsloth/pull/7000 * Studio: Add rename to project chat rows by @oobabooga in https://github.com/unslothai/unsloth/pull/7005 * Probe xformers support on sm_120 instead of disabling it by version by @oobabooga in https://github.com/unslothai/unsloth/pull/6828 * Studio: render image content returned by MCP tools by @NilayYadav in https://github.com/unslothai/unsloth/pull/7081 * Studio: add French, German, Spanish, Hindi, Arabic, Russian and Korean display languages by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/7076 * scan_packages: baseline sentencepiece dup2 finding after upstream reindent by @danielhanchen in https://github.com/unslothai/unsloth/pull/7120 * Studio: persistent stdio MCP sessions so server state survives across tool calls by @NilayYadav in https://github.com/unslothai/unsloth/pull/7080 * Studio: resolve llama.cpp prebuilts via the release-assets CDN to avoid GitHub API rate limits by @danielhanchen in https://github.com/unslothai/unsloth/pull/7086 * fix(studio): prevent auth monitor reload loop by @Lyxot in https://github.com/unslothai/unsloth/pull/7118 * Studio: make Stop interrupt a llama.cpp generation stalled mid-stream by @oobabooga in https://github.com/unslothai/unsloth/pull/7117 * Unsloth: appearance palettes, customization options, and control restyle by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/7077 * Studio: pin llama.cpp update apply to the release the banner offered by @oobabooga in https://github.com/unslothai/unsloth/pull/7112 * Studio: fix the permanent GGUF "update available" on no-symlink caches by @gaurav0107 in https://github.com/unslothai/unsloth/pull/7113 * Fix S3 tab flashing on reload by @NilayYadav in https://github.com/unslothai/unsloth/pull/7106 * fix: correct DeepScaleR-1.5B 16bit mapping to its own repo by @anxkhn in https://github.com/unslothai/unsloth/pull/7088 * fix(dataprep): guard smart_chunk_text against stride >= chunk_size by @anxkhn in https://github.com/unslothai/unsloth/pull/7126 * Fix Hub offline status by @NilayYadav in https://github.com/unslothai/unsloth/pull/7129 * fix: name unsloth_vllm_standby parameter in vLLM standby error by @anxkhn in https://github.com/unslothai/unsloth/pull/7089 * Studio: expose Windows drive roots in the folder browser by @gaurav0107 in https://github.com/unslothai/unsloth/pull/7082 * Studio CI: make tool-calling SSE probes resilient to transport stalls by @danielhanchen in https://github.com/unslothai/unsloth/pull/7137 * Studio: force-terminate a stuck training stop after a grace period by @danielhanchen in https://github.com/unslothai/unsloth/pull/7099 * fix(studio): recover MLX VLM image prompts by @Lyxot in https://github.com/unslothai/unsloth/pull/7094 * fix(install): return failure exit codes by @ShiroKSH in https://github.com/unslothai/unsloth/pull/7123 * Fix bare except clauses and remove duplicate MAX_FUSED_SIZE definition by @lxcxjxhx in https://github.com/unslothai/unsloth/pull/7138 * Studio: scope the seeded bootstrap password auto-fill to loopback clients by @oobabooga in https://github.com/unslothai/unsloth/pull/7131 * fix: single-pass GGUF export for directly convertible outtypes in save.py by @dylanschroers in https://github.com/unslothai/unsloth/pull/7090 * Studio: offer the latest transformers release for brand-new architectures by @danielhanchen in https://github.com/unslothai/unsloth/pull/7056 * Fix agent workspace isolation and Hermes one-shot resume by @wasimysaid in https://github.com/unslothai/unsloth/pull/7103 * Studio: permission levels for chat tool calls (Ask, Approve for me, Off, Full access) by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/7079 * Studio: make the Cloudflare tunnel opt-in (off by default) by @LeoBorcherding in https://github.com/unslothai/unsloth/pull/7046 * Studio: honor the 'none' gradient checkpointing option in training by @oobabooga in https://github.com/unslothai/unsloth/pull/7128 * Studio: remove the edge fades appearance setting by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/7143 * Studio: quiet noisy logs, log real progress, and speed up Windows/macOS dataset prep by @danielhanchen in https://github.com/unslothai/unsloth/pull/7087 * Show concise NVFP4 inference errors by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/7145 * Fix Studio toast close-button positioning by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/7142 * Studio: add Voice settings tab (dictation, dictionary, read aloud) by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/7074 * Studio: stream live tool output with SSE heartbeats, fix web page extraction, and surface interrupted turns by @danielhanchen in https://github.com/unslothai/unsloth/pull/7083 * Studio: fix permission composer layout and Hub feed icons by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/7148 * Compact thinking control in narrow composers by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/7150 * Studio: reject binary web_search fetches instead of decoding them into replacement chars by @oobabooga in https://github.com/unslothai/unsloth/pull/7130 * Studio: fix duplicate response model labels and hover by @Etherll in https://github.com/unslothai/unsloth/pull/7049 ## New Contributors * @ErenAta16 made their first contribution in https://github.com/unslothai/unsloth/pull/6909 * @ThomasEricB made their first contribution in https://github.com/unslothai/unsloth/pull/6970 * @Apoze made their first contribution in https://github.com/unslothai/unsloth/pull/6950 * @winklemad made their first contribution in https://github.com/unslothai/unsloth/pull/7073 * @gaurav0107 made their first contribution in https://github.com/unslothai/unsloth/pull/7113 * @ShiroKSH made their first contribution in https://github.com/unslothai/unsloth/pull/7123 * @lxcxjxhx made their first contribution in https://github.com/unslothai/unsloth/pull/7138 **Full Changelog**: https://github.com/unslothai/unsloth/compare/v0.1.48-beta...v0.1.49-beta