v0.1.405-beta
unslothai/unslothv0.1.405-betaMay 18, 2026by shimmyshimmer
AI Summary
A major feature release introducing API connections, external backends, speculative decoding (MTP), experimental MLX inference, and significant security hardening.
Key Highlights
- ~2x faster GGUF inference via auto-enabled MTP
- API provider calling support (OpenAI, Anthropic, etc.) with auto prompt caching
- External backend connections (vLLM, Ollama, llama-server)
- Experimental MLX inference for Macs
- Significant security improvements (rate-limiting, sandboxing, CSP headers)
New Features
- Continued Pretraining (CPT) training method
- Multi Image GRPO support
- Gemma attention mask fixes
- OpenDocument chat attachments
- o3 reasoning summary payload
- IME composer hardening and RTL support
- Tool reasoning trace rendering in UI
Full Release Notes
We've got lots of new updates. Please use the latest Unsloth `v0.1.405-beta`, not `v0.1.40-beta` which is older. * **~2x faster GGUF inference** with automatically enabled MTP * [API calling support](https://unsloth.ai/docs/integrations/connections) for [OpenAI](https://unsloth.ai/docs/integrations/connections/openai), [Anthropic](https://unsloth.ai/docs/integrations/connections/anthropic-claude) etc. with auto prompt caching, web search, code execution * Connect to external inference backends: [vLLM](https://unsloth.ai/docs/integrations/connections/vllm), [Ollama](https://unsloth.ai/docs/integrations/connections/ollama), [llama-server](https://unsloth.ai/docs/integrations/connections/connect-llama.cpp-to-unsloth-run-ggufs-with-llama-server) * Experimental **MLX inference** * Proper support for **non-English languages** * **Security improvements** ## MTP speculative decoding support 1.4 to 2x faster inference! - **Auto MTP speculative decoding** for MTP GGUFs; warn when the bundled llama.cpp prebuilt is stale or too old for MTP - New pre-built llama.cpp binaries for MTP support! ## API provider calling & external connections - You can now connect Unsloth to any API cloud provider (OpenAI, Anthropic, OpenRouter etc.) - **Built-in web search** for OpenAI, Anthropic, OpenRouter and Kimi - **Built-in code execution** for OpenAI and Anthropic (Anthropic containers persist and are reused across turns) - Prompt caching is enabled for OpenAI and Anthropic models saving 50 to 90% of costs. - API key now optional for local providers (llama.cpp / vLLM / Ollama) - Auto-load models when adding a cloud provider ## MLX inference (Experimental) - MLX quants and models now can run locally on your Mac machines! - We'll be adding thinking, tools and web search soon! ## Other Unsloth Studio updates - OpenDocument chat attachments - o3 reasoning summary payload - Sending/prompting non-English languages (e.g. Japanese, Chinese) now works properly - IME composer hardening, RTL `dir="auto"`, long log-line truncation fix - Tool reasoning trace rendering in UI - Fully offline support: cached GGUF discovery and offline DNS auto-detect for both inference and training - Lots of UI/UX polish: dark theme refactor, right sidebar redesign, time-of-day sloth mascot, dismissable copyable toasts, larger chat composer, code-execution config polish, composer action pill styling, narrower Discord button ## Training updates - Gemma attention mask fixes - Multi Image GRPO - GRPO hidden-state return experiments - New Continued Pretraining (CPT) training method as a first-class option - Gemma-4 MoE LoRA extractor registered to fix `grouped_mm` contraction crash - Opt-in fused `lm_head` + cross-entropy forward, with single-matmul path under `UNSLOTH_RETURN_LOGITS=1` - Pass batch size for eval - Eval/training paths now honour `HF_DATASETS_OFFLINE` alongside `HF_HUB_OFFLINE` ## Unsloth Studio security improvements - Authentication rate-limiting, proxy-aware so reverse proxies don't bypass it - Sandboxed worker with a tightened blocklist (bash, `hf upload`, `NOFILE`) - Path containment so workers can't escape their in-flight tmp dirs - Strict schema validation across the Studio API - Tightened CSP / security headers (only legitimate favicon hosts allowed) - Removed the `torch.load` fallback on `training_args.bin` so untrusted pickles can never execute on model load - Hardened Tauri desktop release flow - Frontend auth: singleflight token refresh, current-password input on changes, working logout, shared 422 helper - Cancel cleanup now scoped strictly to in-flight tmp dirs so it can never delete user state ## Bug fixes and correctness - Layout-aware MoE LoRA merge with loud-fail on fallback (no more silent wrong saves) - `num_logits_to_keep` regression fixed on transformers >= 4.52 - Preserve tokenizer EOS token on merged saves - Resume PEFT checkpoints under sentence-transformers >= 5.4 - Restore Flash > SDPA > Flex attention priority for non-Gemma3 models - ORPO text-only tokenization now works with processors - Embedding matrix size mismatch fix - Vicuna chat template fix - `fast_generate` unifies legacy and new logits kwargs (fixes Mistral merge site) - `higher_precision_softmax` made idempotent - Patch every `LOSS_MAPPING` key aliased to `ForCausalLMLoss` (covers transformers 5.x) - GGUF converter sibling imports fixed - UTF-8 encoding added to all text-mode file operations - Serialise GGUF reload and inherit `unsloth-run` extra args - Fix `/recommended-folders` 500 on unreadable model directories under Python 3.12+ - Cross-family GGUF projector blocked in flat local dirs (no more wrong-vision-tower loads) ## Installer and platform reliability - Custom install paths via `STUDIO_HOME` / `UNSLOTH_STUDIO_HOME` - CPU-only Linux x86_64 routed to `ggml-org/llama.cpp` prebuilts - Windows CUDA install fixes: paired `cudart` bundle and Torch NVIDIA DLL paths added to `PATH` - Skip `flash-attn` install on Blackwell GPUs (sm_100+) - Refresh Intel XPU extras for torch 2.7.1 / 2.9.1 / 2.10 / 2.11.0 / 2.12.0; torch upper cap raised to <2.13.0 - HIP source builds on Ubuntu 24.04 now inject `--gcc-install-dir` - Linux prebuilt fixes for branch-based llama.cpp releases (mangled symlink repair, top-level dir strip) - New uninstallers for Linux, macOS (`uninstall.sh`) and Windows (`uninstall.ps1`) - Mac desktop shortcut spawning and lifecycle fixed - `unsloth --version` flag - Studio web update banner and release version display - GPU pinned at 95% headroom, with a warning on silent CPU fallback - Auto-install flash-linear-attention and tilelang for Qwen3.5 family ## What's Changed in Unsloth * Bump installer floor to 2026.5.2 by @danielhanchen in https://github.com/unslothai/unsloth/pull/5297 * install: support STUDIO_HOME / UNSLOTH_STUDIO_HOME for custom install paths by @danielhanchen in https://github.com/unslothai/unsloth/pull/5190 * Route CPU-only Linux x86_64 to ggml-org/llama.cpp prebuilts by @danielhanchen in https://github.com/unslothai/unsloth/pull/5302 * feat(studio): MLX training tab on Apple Silicon (LoRA / full FT, VLM, export) by @Manan17 in https://github.com/unslothai/unsloth/pull/5265 * feat(studio): add Continued Pretraining (CPT) as a training method by @OnePunchMonk in https://github.com/unslothai/unsloth/pull/4677 * Fix 14 stale tests under tests/studio/install/ that drifted from code by @danielhanchen in https://github.com/unslothai/unsloth/pull/5305 * Add Studio PR-time CI: pin enforcement, frontend, backend, wheel smoke by @danielhanchen in https://github.com/unslothai/unsloth/pull/5298 * Studio: restore Studio API and Help menu UI by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5310 * [studio]: Fix tool reasoning trace in UI by @CodeMan62 in https://github.com/unslothai/unsloth/pull/5314 * fix: 3 patch_* helpers — fast_lora import, sft_trainer Union, openenv OSError by @danielhanchen in https://github.com/unslothai/unsloth/pull/5319 * Studio: API settings overflow with long Colab URLs by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5286 * tests/studio/install: parallel UNSLOTH_STUDIO_HOME smoke test by @danielhanchen in https://github.com/unslothai/unsloth/pull/5306 * Studio: Dark theme refactor, right sidebar redesign, and chat UI polish by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5150 * fix: harden Studio IME composer sends by @Etherll in https://github.com/unslothai/unsloth/pull/5327 * Studio: stop truncating long log lines as suspected base64 by @rolandtannous in https://github.com/unslothai/unsloth/pull/5335 * fix(gh_client): fail fast on 401/403 auth errors instead of retrying forever (#5325) by @Anai-Guo in https://github.com/unslothai/unsloth/pull/5329 * fix: unblock 4 tests deselected/skipped in #5312 (real bugs) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5359 * fix(tests/sh): accept pinned tokenizers line after #5359 by @danielhanchen in https://github.com/unslothai/unsloth/pull/5361 * CI: scope GITHUB_TOKEN permissions, add MLX CI, unblock ~60 skipped tests by @danielhanchen in https://github.com/unslothai/unsloth/pull/5312 * studio/tests: make Playwright model-selector probe best-effort by @danielhanchen in https://github.com/unslothai/unsloth/pull/5371 * Studio: download paired cudart bundle on Windows CUDA installs by @danielhanchen in https://github.com/unslothai/unsloth/pull/5322 * Studio: add torch's pip nvidia DLL dirs to PATH on Windows by @danielhanchen in https://github.com/unslothai/unsloth/pull/5324 * studio: authenticate HF downloads across Studio CI workflows by @danielhanchen in https://github.com/unslothai/unsloth/pull/5370 * dependabot: group security updates and cover /studio/frontend npm advisories by @danielhanchen in https://github.com/unslothai/unsloth/pull/5372 * Add Studio web update banner and release version display by @wasimysaid in https://github.com/unslothai/unsloth/pull/5308 * ci/install: retry transient github.com 5xx on unsloth-zoo git fetches by @danielhanchen in https://github.com/unslothai/unsloth/pull/5389 * studio/ci: pre-install lockfile supply-chain audit (npm + cargo) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5392 * studio/ci: npm tarball content scanner (no-install, hostile-input safe) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5393 * studio/tests: AbortSignal-bound in-page fetches and wall-clock watchdog for Playwright probes by @danielhanchen in https://github.com/unslothai/unsloth/pull/5391 * chore: remove unused .semgrep/unsloth-rules.yml by @danielhanchen in https://github.com/unslothai/unsloth/pull/5395 * studio/ci: sweep actions/cache v5 hardening across sibling smoke workflows by @danielhanchen in https://github.com/unslothai/unsloth/pull/5399 * studio/ci: harden HF_HOME cache against actions/cache v5 silent restore failures by @danielhanchen in https://github.com/unslothai/unsloth/pull/5396 * Harden Tauri release flow by @wasimysaid in https://github.com/unslothai/unsloth/pull/5341 * Gemma attn by @Datta0 in https://github.com/unslothai/unsloth/pull/5346 * Multi Image GRPO by @Datta0 in https://github.com/unslothai/unsloth/pull/5197 * [GRPO] Try returning hidden statex for GRPO by @Datta0 in https://github.com/unslothai/unsloth/pull/5142 * Studio: pin GPU at 95% headroom and warn on silent CPU fallback by @danielhanchen in https://github.com/unslothai/unsloth/pull/5323 * Chore(deps): bump the actions group across 1 directory with 4 updates by @dependabot[bot] in https://github.com/unslothai/unsloth/pull/5394 * security: NOT affected by Mini Shai-Hulud (May-12 wave) -- forward-looking hardening only by @danielhanchen in https://github.com/unslothai/unsloth/pull/5397 * studio: security and hardening pass (auth rate-limit, sandbox, path containment, schema validation, headers) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5375 * studio: fix training page regressions from the security hardening pass by @rolandtannous in https://github.com/unslothai/unsloth/pull/5409 * Studio: parity of thinking trace icon with Think toggle icon by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5407 * Studio: vary empty chat sloth mascot by local time of day by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5354 * security: persist-credentials:false on every actions/checkout (org-wide sweep) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5413 * import_fixes: stub transformers.conversion_mapping so peft 0.19.x imports on transformers 4.x by @danielhanchen in https://github.com/unslothai/unsloth/pull/5416 * chore: trim verbose comments added in PR #5416 (commit 12295c1f) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5418 * studio/ci: flat GGUF+mmproj cache for Mac json-images smoke, save partial caches on cancel by @danielhanchen in https://github.com/unslothai/unsloth/pull/5417 * studio: comment out training_args.bin torch.load fallback in model_config by @danielhanchen in https://github.com/unslothai/unsloth/pull/5419 * tests: import_fixes drift detectors (HARD GATE on Core matrix) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5414 * tests: drift detector parity with unsloth-zoo (fix Core matrix RED on triton + vllm) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5421 * scripts: ship deterministic comment / docstring-only diff verifier by @danielhanchen in https://github.com/unslothai/unsloth/pull/5422 * studio: API external provider support for chat (OpenAI, Mistral, Gemini, Cohere, Anthropic, OpenRouter, DeepSeek, custom providers) by @rolandtannous in https://github.com/unslothai/unsloth/pull/4706 * import_fixes + drift detectors: cover transformers 5.x drift (unblocks PR #5376) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5423 * MLX training support for Studio on Apple Silicon by @mmathew23 in https://github.com/unslothai/unsloth/pull/5340 * studio: drop unused max_grad_value schema + route plumbing by @danielhanchen in https://github.com/unslothai/unsloth/pull/5424 * Studio: Passing batch size for eval by @uderbashi in https://github.com/unslothai/unsloth/pull/5168 * studio: skip flash-attn install on Blackwell GPUs (sm_100+) by @rolandtannous in https://github.com/unslothai/unsloth/pull/5420 * Fix: Add missing utf-8 encoding to text-mode file operations by @Tenith01 in https://github.com/unslothai/unsloth/pull/5356 * Fix/issue 3667 vicuna template by @Tenith01 in https://github.com/unslothai/unsloth/pull/5357 * tests: public-api surface drift detector (companion to test_import_fixes_drift.py) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5428 * add UNSLOTH_ALLOW_CPU=1 path for CPU-only CI / source-inspection tests by @danielhanchen in https://github.com/unslothai/unsloth/pull/5429 * fix(studio/mmproj): block cross-family projectors in flat local GGUF dirs (#5347) by @Anai-Guo in https://github.com/unslothai/unsloth/pull/5350 * studio/mmproj: skip unwanted GGUF values via seek instead of read by @danielhanchen in https://github.com/unslothai/unsloth/pull/5431 * ci: install ipython so transformers.utils.notebook imports cleanly in zoo pytest by @danielhanchen in https://github.com/unslothai/unsloth/pull/5437 * studio/mlx: lower per-element grad clip default from 5.0 to 1.0 by @danielhanchen in https://github.com/unslothai/unsloth/pull/5440 * studio/frontend: drop unused next dependency by @danielhanchen in https://github.com/unslothai/unsloth/pull/5438 * Update version-compat-ci.yml by @rolandtannous in https://github.com/unslothai/unsloth/pull/5445 * ci: merge duplicate `with:` keys in notebooks-ci checkout steps by @rolandtannous in https://github.com/unslothai/unsloth/pull/5447 * studio/chat: built-in web search for OpenAI, Anthropic, OpenRouter, Kimi by @rolandtannous in https://github.com/unslothai/unsloth/pull/5443 * ci: make compiler-cache shim test order-independent by @danielhanchen in https://github.com/unslothai/unsloth/pull/5449 * Studio: o3 reasoning summary payload by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5426 * ci: compiler-cache-shim must mutate live module globals + skip rerun by @danielhanchen in https://github.com/unslothai/unsloth/pull/5452 * Polish/cloud to providers by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5450 * ci: cap each compiler-sweep iteration with SIGALRM + log progress by @danielhanchen in https://github.com/unslothai/unsloth/pull/5456 * ci: add tx >=5,<6 slow compile model_types to KNOWN_BROKEN_COMPILE by @danielhanchen in https://github.com/unslothai/unsloth/pull/5458 * Restore Flash > SDPA > Flex priority for non-gemma3 models by @mmathew23 in https://github.com/unslothai/unsloth/pull/5455 * ci: stop a partial mmproj cache from poisoning Mac Studio GGUF CI by @danielhanchen in https://github.com/unslothai/unsloth/pull/5459 * ci: make Windows Stop Studio teardown tolerate Git Bash signal exit by @danielhanchen in https://github.com/unslothai/unsloth/pull/5460 * Studio: make API key optional for local providers (llama.cpp/vLLM/Ollama) by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5457 * studio/chat: built-in code execution for OpenAI + Anthropic by @rolandtannous in https://github.com/unslothai/unsloth/pull/5461 * ci: switch Windows Stop Studio to a cmd no-op marker by @danielhanchen in https://github.com/unslothai/unsloth/pull/5462 * tests: raise pwsh/bash subprocess timeout from 10s to 60s by @danielhanchen in https://github.com/unslothai/unsloth/pull/5463 * studio/install: repair upstream llama.cpp prebuilt mangled symlinks by @danielhanchen in https://github.com/unslothai/unsloth/pull/5465 * studio/chat: OpenAI container picker delete reliability by @rolandtannous in https://github.com/unslothai/unsloth/pull/5466 * studio/install: strip top-level dir from repaired symlink target by @danielhanchen in https://github.com/unslothai/unsloth/pull/5467 * Stop: drop Ollama API key, clean up code execution UI by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5464 * tests/openai: patch httpx.AsyncClient ctor so delete tests hit mock by @danielhanchen in https://github.com/unslothai/unsloth/pull/5469 * revert: stop touching DEVICE_TYPE == cuda branches for CPU CI by @danielhanchen in https://github.com/unslothai/unsloth/pull/5473 * ci: drop `cache: 'npm'` from setup-node (silent abort on Windows) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5474 * ci: bump Mac json-images timeout 30 -> 45 min (cache-miss path) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5475 * ci: wrap hf download in xet-tuned stall-retry loop (root-cause Mac 30-min hang) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5476 * ci: deterministic check for studio/frontend dep removals by @danielhanchen in https://github.com/unslothai/unsloth/pull/5478 * studio/frontend: drop unused dependencies, move type pkg to devDeps by @danielhanchen in https://github.com/unslothai/unsloth/pull/5477 * intel-gpu: refresh xpu extras (fix torch 2.10, add 2.7.1 / 2.9.1 / 2.11.0 / 2.12.0) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5484 * Studio: auto-load models when adding a cloud provider by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5472 * Studio: code execution config visual polish by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5471 * disable_torchcodec_if_broken: also patch datasets and clean sys.modules by @danielhanchen in https://github.com/unslothai/unsloth/pull/5483 * tests: pinned-symbol canary for unsloth-zoo save_pretrained_merged guards (#5410) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5433 * intel-gpu: pin unsloth_zoo>=2026.5.2 (fixes #5494) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5499 * fix(sentence_transformer): resume PEFT checkpoints under sentence-transformers >= 5.4 by @Etherll in https://github.com/unslothai/unsloth/pull/5454 * Studio: serialise GGUF reload and inherit unsloth-run extra args by @danielhanchen in https://github.com/unslothai/unsloth/pull/5427 * Studio: IME / multilingual composer regression test + RTL dir="auto" by @danielhanchen in https://github.com/unslothai/unsloth/pull/5485 * fix: preserve tokenizer eos token on merged saves by @anmolxlight in https://github.com/unslothai/unsloth/pull/5451 * studio/chat: reuse Anthropic code_execution container across turns by @rolandtannous in https://github.com/unslothai/unsloth/pull/5519 * Fix Linux prebuilt installs for branch-based llama.cpp releases by @mmathew23 in https://github.com/unslothai/unsloth/pull/5493 * Studio: stop hint, Uvicorn log rename, reachability check + Mac UI CI retry hardening by @danielhanchen in https://github.com/unslothai/unsloth/pull/5503 * Studio composer action pill styling by @Imagineer99 in https://github.com/unslothai/unsloth/pull/5522 * Fix /recommended-folders 500 on unreadable model directories (Python 3.12+) by @mmathew23 in https://github.com/unslothai/unsloth/pull/5523 * studio/chat: persist Anthropic container id on first turn of new thread by @rolandtannous in https://github.com/unslothai/unsloth/pull/5526 * studio/openai: align chat completions docstring with stream=false default (closes #5047) by @wtfashwin in https://github.com/unslothai/unsloth/pull/5524 * Add a simple --version flag by @melroy89 in https://github.com/unslothai/unsloth/pull/5516 * studio: load cached GGUF models when fully offline by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/5505 * studio: expose launcher capability bits on unauth /api/health by @danielhanchen in https://github.com/unslothai/unsloth/pull/5486 * studio: tighten sandbox blocklist precision (bash, hf upload, NOFILE) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5487 * studio: scope cancel-cleanup to in-flight tmp dirs; walk back tool_call_id by @danielhanchen in https://github.com/unslothai/unsloth/pull/5488 * studio: proxy-aware login rate-limit; allow google favicons in CSP by @danielhanchen in https://github.com/unslothai/unsloth/pull/5489 * studio/frontend: wire logout, singleflight refresh, shared 422 helper, current-password input by @danielhanchen in https://github.com/unslothai/unsloth/pull/5490 * tests/studio: lock in Windows GPU detection fix (#5106) with a synthetic CI test by @danielhanchen in https://github.com/unslothai/unsloth/pull/5376 * Studio: auto-enable MTP speculative decoding for MTP GGUFs by @danielhanchen in https://github.com/unslothai/unsloth/pull/5527 * Studio: warn when llama.cpp prebuilt is too old for MTP by @danielhanchen in https://github.com/unslothai/unsloth/pull/5528 * Studio: warn when llama.cpp prebuilt is at least 3 days behind by @danielhanchen in https://github.com/unslothai/unsloth/pull/5529 * studio: extend offline DNS auto-detect to inference parent + training by @danielhanchen in https://github.com/unslothai/unsloth/pull/5512 * Fix ORPO text-only tokenization with processors by @alkinun in https://github.com/unslothai/unsloth/pull/5501 * fix(studio/worker): inject --gcc-install-dir for HIP source builds on Ubuntu 24.04 by @h34v3nzc0dex in https://github.com/unslothai/unsloth/pull/5517 * studio: gate image input on effective vision capability by @Etherll in https://github.com/unslothai/unsloth/pull/5492 * studio/install: fix mac desktop shortcut spawning and lifecycle by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/5496 * studio: add uninstall.sh and document it in README by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/5497 * Studio update CI: round-trip install -> update -> uninstall by @danielhanchen in https://github.com/unslothai/unsloth/pull/5536 * studio: fix Connections dialog UX issues surfaced by image-gate probe by @danielhanchen in https://github.com/unslothai/unsloth/pull/5518 * studio: add uninstall.ps1 for Windows by @danielhanchen in https://github.com/unslothai/unsloth/pull/5513 * Fix num_logits_to_keep regression on transformers >= 4.52 by @danielhanchen in https://github.com/unslothai/unsloth/pull/5538 * Uninstaller script by @PTFOPlayer in https://github.com/unslothai/unsloth/pull/4611 * Add OpenDocument chat attachments by @alkinun in https://github.com/unslothai/unsloth/pull/5510 * studio/frontend: stop showing Generating spinner on empty welcome view by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/5530 * studio/frontend: swap Hugeicons spokes spinner for CSS ring by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/5531 * studio/frontend: grow chat composer to 16 rows and inset scrollbar by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/5540 * studio/frontend: make toast and inline error text selectable and copyable by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/5506 * studio: add dismissable toasts with corner close button by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/5509 * studio: install flash-linear-attention and tilelang for Qwen3.5 family by @danielhanchen in https://github.com/unslothai/unsloth/pull/5434 * studio/frontend: soften toast shadow and tighten vertical padding by @shimmyshimmer in https://github.com/unslothai/unsloth/pull/5511 * fast_generate: unify legacy/new logits kwarg + fix Mistral merge site by @danielhanchen in https://github.com/unslothai/unsloth/pull/5543 * studio/frontend: hide Current password input on first boot by @danielhanchen in https://github.com/unslothai/unsloth/pull/5545 * tests/studio: tighten MLX smoke gates (loss + round-trip, _on_step grad_norm) by @danielhanchen in https://github.com/unslothai/unsloth/pull/5537 * tests + CI: callback signature drift detector by @danielhanchen in https://github.com/unslothai/unsloth/pull/5498 * images: use narrower Discord button and drop duplicate by @danielhanchen in https://github.com/unslothai/unsloth/pull/5552 * fix(studio): handle expired OpenAI shell-tool containers without surfacing error in chat by @rolandtannous in https://github.com/unslothai/unsloth/pull/5547 * studio/chat: release stuck IME flag when compositionend never fires by @wtfashwin in https://github.com/unslothai/unsloth/pull/5551 ## New Contributors * @Anai-Guo made their first contribution in https://github.com/unslothai/unsloth/pull/5329 * @uderbashi made their first contribution in https://github.com/unslothai/unsloth/pull/5168 * @Tenith01 made their first contribution in https://github.com/unslothai/unsloth/pull/5356 * @anmolxlight made their first contribution in https://github.com/unslothai/unsloth/pull/5451 * @wtfashwin made their first contribution in https://github.com/unslothai/unsloth/pull/5524 * @melroy89 made their first contribution in https://github.com/unslothai/unsloth/pull/5516 * @h34v3nzc0dex made their first contribution in https://github.com/unslothai/unsloth/pull/5517 * @PTFOPlayer made their first contribution in https://github.com/unslothai/unsloth/pull/4611 **Full Changelog**: https://github.com/unslothai/unsloth/compare/v0.1.39-beta...v0.1.40-beta ## What's Changed in Unsloth-Zoo * Register Gemma-4 MoE LoRA extractor to fix grouped_mm contraction crash by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/624 * feat(mlx): Apple Silicon training (text + VLM, LoRA / full FT, CCE, export) by @Manan17 in https://github.com/unslothai/unsloth-zoo/pull/620 * tests: skip MoE LoRA extractor coverage when discovery finds zero classes by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/628 * tests: pivot MoE-coverage canary to _unsloth_already_patched marker by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/630 * fix(compiler): make higher_precision_softmax idempotent by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/631 * fix(mlx): unblock GGUF export and LoRA reload on Apple Silicon by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/627 * fix(compiler): unblock all model_types across transformers 4.57.6 and 5.x by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/632 * Mask for gemma3 attn by @Datta0 in https://github.com/unslothai/unsloth-zoo/pull/635 * Multi Image GRPO by @Datta0 in https://github.com/unslothai/unsloth-zoo/pull/613 * [GRPO] Try returning hidden statex for GRPO by @Datta0 in https://github.com/unslothai/unsloth-zoo/pull/609 * Refactor and consolidate moe lora extractors by @Datta0 in https://github.com/unslothai/unsloth-zoo/pull/629 * security + CI: mirror unsloth's hardening stack onto zoo (greenfield .github/) by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/637 * remove unsloth_zoo/import_fixes.py: redundant with unsloth's by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/639 * chore: trim verbose comments across PR #637 landing by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/640 * scripts: ship deterministic comment / docstring-only diff verifier by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/641 * fix mlx: Adds the MLX training path used by Studio on Apple Silicon by @mmathew23 in https://github.com/unslothai/unsloth-zoo/pull/634 * tests: drift detectors cover transformers 5.x (mirror unsloth PR #5423) by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/642 * gpt_oss: reorder helpers before patch_gpt_oss_bnb4bit_auto by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/643 * __init__: lazy-load legacy MLX aliases on every host by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/644 * tests: contain security-conftest network block; fix stale mlx paths; skip GPU import in trainer-exec-marker by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/648 * fix CI fallout from MLX subpackage refactor (#634) by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/646 * tests: tolerate transformers 5.x source/signature drift in two zoo drift detectors by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/650 * tests: skip _assert_params_superset when upstream forward is (*args, **kwargs) by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/651 * mlx: lower max_grad_value default from 5.0 to 1.0 by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/652 * saving: layout-aware MoE LoRA merge + loud-fail on fallback (#5410) by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/647 * tests: follow MoE merge wrapper delegation in drift detector by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/653 * additional import try except handling for mlx by @mmathew23 in https://github.com/unslothai/unsloth-zoo/pull/654 * Patch every LOSS_MAPPING key aliased to ForCausalLMLoss by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/656 * deps: bump torch upper cap to <2.13.0 (allow xpu 2.11.0 / 2.12.0) by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/658 * Auto-install fused lm_head + cross_entropy forward (opt-in) by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/657 * tests: CPU regression detectors for the MoE merge / save path (#5410) by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/655 * Fix GGUF converter sibling imports by @alkinun in https://github.com/unslothai/unsloth-zoo/pull/661 * fix embedding matrix size mismatch bug by @CodeMan62 in https://github.com/unslothai/unsloth-zoo/pull/645 * Honor UNSLOTH_RETURN_LOGITS in fused forward by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/665 * __init__: include HF_DATASETS_OFFLINE in the offline env cross-sync by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/664 * compiler: single-matmul opt-in for UNSLOTH_RETURN_LOGITS=1 by @danielhanchen in https://github.com/unslothai/unsloth-zoo/pull/666