Lots of bug fixes, UI, UX fixes to Studio!
To get the latest updates do:
macOS, Linux, WSL:
curl -fsSL https://unsloth.ai/install.sh | shWindows:
irm https://unsloth.ai/install.ps1 | iexFixes
- Fix
unsloth studio updatenot working well - Fix getting stuck on
reset-passwordpage - More offline mode support
- Improve MTP not being faster on Macs, CPUs and GPUs - now it's much better!
- Fix Desktop Shortcut not working after update
- Many many UI UX bug fixes
What's Changed in Unsloth
- install scripts: bump unsloth pin to >=2026.5.3 by @danielhanchen in #5557
- studio: engage draft-mtp on vision MTP GGUFs (drop incorrect vision gate) by @danielhanchen in #5560
- install scripts: bump unsloth pin to >=2026.5.4 by @danielhanchen in #5566
- Studio: derive Playwright default model expectation by @Imagineer99 in #5589
- studio: read Playwright default model from defaults.py without importing it by @danielhanchen in #5595
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #5586
- studio: fix toast close-button click and light-mode hover by @shimmyshimmer in #5597
- fix(loader): honour HF_HUB_OFFLINE/TRANSFORMERS_OFFLINE env vars by @xodn348 in #5598
- studio: emit one comma-chained --spec-type for CPU/Mac MTP path by @danielhanchen in #5575
- Fix loss function not patched for Qwen3.5 models by @rycerzes in #5442
- Fix GGUF multi-image chat handling by @alkinun in #5508
- Expose standalone tool healing utilities by @alkinun in #5583
- studio/frontend: reconcile stale must_change_password localStorage flag by @danielhanchen in #5576
- studio/frontend: cap auto-load cascade attempts by @danielhanchen in #5578
- studio: regenerate desktop launcher on
unsloth studio update(macOS + Linux + Windows) by @danielhanchen in #5577 - ci: advisory lockfile supply-chain audit (no install-script changes) by @danielhanchen in #5604
- loader: import FORCE_FLOAT32 from unsloth_zoo (single source of truth) by @danielhanchen in #5610
- fix(peft): expose finetune_last_n_layers for parity with mlx-lm CLI by @danielhanchen in #5564
- studio: add --spec-draft-n-max toggle for MTP speculative decoding by @danielhanchen in #5582
- studio: reserve VRAM headroom for the MTP draft cache in auto-fit by @danielhanchen in #5585
- Studio: tools, thinking blocks, code execution and web search for safetensors by @danielhanchen in #5520
- studio/frontend: widen settings sidebar so 'Connections' label fits by @danielhanchen in #5607
- studio: respect prefers-reduced-motion across animations by @danielhanchen in #5611
- studio/frontend: guard message-timing badge against unphysical tok/s by @danielhanchen in #5570
- studio/web: differentiate offline from backend-down in fetch error by @danielhanchen in #5591
- studio/frontend: keep theme classes mutually exclusive on by @danielhanchen in #5580
- studio/frontend: show Loading fallback instead of blank pane on lazy route navigation by @danielhanchen in #5568
- studio/frontend: include filename in attachment aria-label + img alt by @danielhanchen in #5594
- studio/frontend: compare composer blocks send when no model picked by @danielhanchen in #5574
- studio: restore focus to opener when settings dialog closes by @danielhanchen in #5612
- studio/frontend: add aria-label to Dictate / Stop dictation buttons by @danielhanchen in #5599
- studio/frontend: settings dialog fits viewport at tablet widths by @danielhanchen in #5600
- studio/frontend: show Generation stopped placeholder when cancelled mid-thinking by @danielhanchen in #5565
- studio: tool calling for Llama-3, Mistral, Gemma 4 on safetensors + MLX by @danielhanchen in #5615
- Revert "studio: tool calling for Llama-3, Mistral, Gemma 4 on safetensors + MLX (#5615)" by @danielhanchen in #5619
What's Changed in Unsloth Zoo:
- Honour offline env vars when enabling hf_transfer by @danielhanchen in unslothai/unsloth-zoo#675
- Fix Studio q2_k_l GGUF export and new llama.cpp converter package layout by @danielhanchen in unslothai/unsloth-zoo#667
- fix(mlx): match mlx-lm batch padding rule (1 + pad_to * ceil) by @danielhanchen in unslothai/unsloth-zoo#672
- fix(mlx): expose finetune_last_n_layers for parity with mlx-lm CLI by @danielhanchen in unslothai/unsloth-zoo#669
- fix(mlx): honor max_grad_value=None as a disable signal by @danielhanchen in unslothai/unsloth-zoo#671
- fix(mlx): seed mx.random immediately before linear_to_lora_layers (re-PR of #674) by @danielhanchen in unslothai/unsloth-zoo#678
- fix(mlx): warn on bf16 -> fp16 downcast in FastMLXModel loader by @danielhanchen in unslothai/unsloth-zoo#670
- fix(mlx): make_baseline_loss_fn byte-identical to mlx-lm default_loss when labels=None by @danielhanchen in unslothai/unsloth-zoo#673
- Fix Q2_K_L recipe: q2_k base + ffn_down=Q3_K, output=Q6_K, embed=Q4_K by @danielhanchen in unslothai/unsloth-zoo#677
Full Changelog: v0.1.40-beta...v0.1.41-beta