Qwen3.8-27B is here with Dynamic v3.1 GGUFs, ready to run locally with Unsloth. This release also brings major performance improvements, smoother Glass rendering, revamped code blocks and Thinking UI, HTML/PDF chat exports, and new image generation and coding agent features.
Highlights
- New Qwen3.8-27B Dynamic v3.1 GGUFs.
- Faster chats: Major performance improvements to streaming, scrolling, menus and dialogs, especially in long conversations.
- Smoother Glass: Reduced lag while typing, scrolling and generating.
- Revamped code blocks and Thinking: Independently scrolling, expandable panels with improved syntax highlighting.
- HTML and PDF exports: Export chats directly from the chat menu.
- Image queue: Queue upcoming image generations while another is rendering.
- Claude Code and Codex on MLX: Run coding agents with MLX models through
unsloth start.
Chat & UI
- Streaming performance no longer degrades as conversations grow.
- Smoother scrolling with background images, with or without Glass.
- Faster menus, dialogs and browser pane loading.
- Read aloud starts after the first sentence instead of waiting for the entire response.
- Chat preferences, time format and spell check now sync with your account.
Images & Video
- FLUX.2 and FLUX.3 use 36–43% less VRAM during image decoding at the same speed.
- Queue image generations from the Images page or API.
- INT8 and FP8 image models now load on older NVIDIA GPUs, including T4.
- Fixed black image outputs with FLUX.3.
- LTX-2.5 FP8 now runs on 24 GB GPUs.
- Cosmos3-Nano can continue video clips from their first or last frames.
Coding Agents & API
- Run Claude Code and Codex with MLX models on Mac using
unsloth start. - New Unsloth MCP preset lets coding agents access Unsloth tools.
- Claude API models without an explicit token limit no longer stop at 1,024 tokens.
- MLX models now return a proper context-length error instead of an empty response.
Training
model.generate()is now 2–8x faster on T4 GPUs by default across FastModel models.- Video columns are now correctly supported when training vision models.
- Ulysses context parallelism now supports Kimi-Linear, DeepSeek, MiniMax and Gemma 4 text models.
What's Changed
- Bump install.sh / install.ps1 pins to unsloth>=2026.11.3 by @danielhanchen in #16920
- Studio GGUF: keep the stock Q8_0 forward on torch below 2.7 by @danielhanchen in #16911
- Studio: merge LoRA and LoKR adapters into ComfyUI-quantized weights by @oobabooga in #16874
- Studio: restore WebKitGTK offscreen code fences in batches and on any pointer release by @danielhanchen in #16919
- Studio: warm the compile workers and Triton / inductor keys during a load that compiles inline by @danielhanchen in #16918
- Studio: pre-seed the float specialisations of an image load's first compiled render by @danielhanchen in #16917
- Studio diffusion: reuse the early quant probe's result instead of spawning a second child by @danielhanchen in #16910
- Studio: keep Glass fast on WebKit by giving glass surface contents their own layers by @danielhanchen in #16921
- Studio: release a streamed encoder's safetensors mapping once its weights are pinned by @danielhanchen in #16914
- Studio: load long chat history faster on Linux by mounting parked history in larger steps by @danielhanchen in #16924
- Studio: decode escaped spreadsheet text during RAG indexing by @DimitriChrysafis in #16712
- Studio: refuse MLX prompts longer than the served context by @Lyxot in #16821
- Studio: preserve Unicode across continued XLS strings by @DimitriChrysafis in #16713
- Studio: classify MLX repos by name or model-card tag everywhere by @Lyxot in #16883
- Studio: blur the glass Settings dialog on its own layer so scrolling it stays cheap by @danielhanchen in #16942
- Studio CI: long-chat gate measures every interactive area under every appearance mode by @danielhanchen in #16931
- Studio: keep Glass cheap on the Linux app by dropping its live blur except the sidebar's by @danielhanchen in #16957
- Studio: stop menus, sidebar and browser pane from restyling the whole chat by @danielhanchen in #16938
- Studio: stop WebKit restyling the whole page when dialogs, menus and the browser pane open or close by @danielhanchen in #16961
- Studio CI: tighten long-chat gate allowances after the :has() rewrite by @danielhanchen in #16978
- Studio: preserve S3 dataset files with colliding names by @DimitriChrysafis in #16830
- Studio CI: long-chat gate measures the dialog lock again before failing by @danielhanchen in #16985
- Studio: stop dialog open and close from rescanning a long chat for every shortcut by @danielhanchen in #16983
- Studio: skip layout of distant messages so the browser pane opens fast on long chats by @danielhanchen in #16986
- Studio diffusion: return the heap a finished image load freed to the OS by @danielhanchen in #16934
- Scan baseline: re-review the seven unsloth-zoo sites 2026.11.3 moved by @danielhanchen in #16922
- CI: run the Playwright WebKit jobs on ubuntu-24.04 while ubuntu-latest is 26.04 by @danielhanchen in #16987
- Studio: ship built-in float specialisations so a fresh install's first compiled render traces once by @danielhanchen in #16939
- Studio diffusion: faster returning first render and first clip (reuse tuned reductions, warm video compile keys) by @danielhanchen in #16981
- Inline images: give a slow sandbox image load a bounded grace and say why it timed out by @danielhanchen in #16923
- Diffusion route tests: pin a compiling host for the tests that expect fp8 to be admitted by @danielhanchen in #16993
- Studio sd.cpp: image render failures carry sd-server's own output by @danielhanchen in #16815
- Studio: show long thinking in a capped box that scrolls on its own instead of Expand thinking by @shimmyshimmer in #16876
- Studio: keep compacted turns searchable when the archive embedder fails by @debojyoti-dev in #16718
- Studio: realtime option for speed and context stats, shorter Chat defaults by @shimmyshimmer in #16888
- Studio RAG: embed the documents of one ingest together instead of one call per document by @debojyoti-dev in #16727
- Studio images: render on the NVIDIA card when torch drives no GPU by @debojyoti-dev in #16853
- Studio CI: long-chat gate Glass ceilings back to 10x (areas) and 18x (Settings scroll) by @danielhanchen in #17003
- Studio: quantise the hosted int8 leftovers on the GPU on offloaded loads by @danielhanchen in #17002
- Studio: start a first video load's cache writes after its first render by @danielhanchen in #17001
- Studio: let unsloth start attach to a loaded Ollama model by @NilayYadav in #16944
- Studio: show DeepSeek Harness as installed on Windows by @NilayYadav in #16954
- Studio: stop OpenAI chats failing on earlier replies sent as parts by @NilayYadav in #16945
- Studio: keep messages from another window when deleting in a stale one by @NilayYadav in #16926
- Studio: size the popular audio.cpp TTS and music models from measured peaks on each runtime backend by @oobabooga in #16984
- Studio: block more metadata host spellings for approved Python by @NilayYadav in #16937
- Studio: offer ChatGPT Reconnect for reused or revoked refresh tokens by @NilayYadav in #16946
- Studio: Agents tab says unsloth start claude needs a GGUF model by @NilayYadav in #16952
- Studio: stop Export all chats from saving an empty or stale backup by @NilayYadav in #16930
- Studio CI: guard the long-chat gate Glass ceilings against runner noise by @danielhanchen in #17012
- Studio: auto-start the server from the same install as unsloth start by @NilayYadav in #16948
- Studio: show an error when ChatGPT sign-in is denied by @NilayYadav in #16950
- Studio: cap chat code blocks at a scrollable height and keep them coloured while scrolling by @shimmyshimmer in #16865
- Studio: stop cutting Claude answers at 1,024 tokens without a limit by @NilayYadav in #16953
- Studio: keep Codex AGENTS.md, skills and rules in unsloth start codex by @NilayYadav in #16947
- CI: key the Playwright browser caches on the OS release, and move the WebKit jobs back to ubuntu-latest by @danielhanchen in #17009
- Studio: reload an idle-unloaded GGUF with its original launch settings by @NilayYadav in #16927
- Studio: keep the base URL query string on connection requests by @NilayYadav in #16951
- Studio: key the modal pointer-lock rules off attributes that never sit above the thread by @danielhanchen in #17006
- Studio: keep same-second fine-tuning jobs in submission order across restarts by @oobabooga in #16835
- Studio: accept zstd-compressed requests from the TypeSafe SDK by @NilayYadav in #16929
- Studio: keep Hermes MCP servers in unsloth start hermes by @NilayYadav in #16949
- Studio: report the LTX-2.5 encoder worker host memory on macOS and Windows too by @danielhanchen in #17014
- Studio: pick which LoRA to add from a searchable list instead of cycling through them by @oobabooga in #16964
- Run Claude Code and Codex on MLX models by @Lyxot in #16811
- Studio: hide the Model hub list under an open model page by @danielhanchen in #17021
- Tests: let the install damage and reinstall hint tests run on Windows by @danielhanchen in #17022
- Studio: keep search icons sharp under the Glass theme on non-chat pages by @debojyoti-dev in #16989
- Studio: keep the first in-loop cut for later tool rounds in chats without a saved thread by @NilayYadav in #16936
- Unsloth Studio: keep tabs signed in on plain-HTTP origins when two refresh at once by @LeoBorcherding in #16755
- Studio: keep chat, time format and spell check settings per account by @NilayYadav in #16958
- Unsloth Studio: shorter new-architecture dialog, one Update button, custom code under Other by @LeoBorcherding in #16966
- Studio: refuse sandbox connects to cloud metadata addresses at runtime by @danielhanchen in #17024
- Unsloth Studio: LFM3 spoken replies and read aloud on the transformers backend by @LeoBorcherding in #16972
- Studio: switch light and dark without starting a transition on every element under Reduce motion by @LeoBorcherding in #16977
- Unsloth Studio: read aloud starts speaking after the first sentence instead of after the whole reply by @LeoBorcherding in #16955
- Unsloth Studio: AMD: skip LFM3's Triton conv and flex attention on ROCm cards Triton cannot build for by @LeoBorcherding in #16974
- fix(studio): heal tool calls in the model's own format on the in-process route by @Lyxot in #16824
- Unsloth Studio (AMD): retry an unpinned llama-server arch crash on the cards the build has kernels for by @LeoBorcherding in #16513
- Block Swap blocker: offload_layers never engages on Qwen3.8-Flash-Next, the CPU-kept n-gram table makes the map look like two devices by @LeoBorcherding in #15633
- Studio: memory-map an oversized load on an integrated GPU and read its lookup tables from disk by @oobabooga in #16857
- Studio: answer shortcut availability checks from registered surfaces, not the whole document by @danielhanchen in #17005
- Unsloth Studio: Cosmos3 guardrail refusal names the gated nvidia/Cosmos-1.0-Guardrail repo by @LeoBorcherding in #16742
- Studio: stream the LTX-2.5 text encode on the card under a VRAM budget, no per-prompt encoder copy back by @danielhanchen in #17000
- Unsloth Studio: show why a video generation failed instead of only "Video generation failed." by @LeoBorcherding in #16744
- Tests: update two contract tests that #16953 and #16927 left red on main by @danielhanchen in #17040
- Unsloth Studio: train and export LFM3-Audio-2B (LoRA, merged 16-bit, GGUF) by @LeoBorcherding in #16973
- Studio diffusion: race the unlisted-arch int8 GEMM tiles held under load (RTX 3090 class: Qwen-Image-2.1 -10%, MiniMax-H3 -9%) by @danielhanchen in #17026
- Studio: name the Cosmos guardrail module outright so the risky-loader lint passes on main by @danielhanchen in #17041
- Tests: let the RAG re-embed and embedder alias tests run on macOS and Windows by @danielhanchen in #17037
- Unsloth Studio / Desktop: the Images page Compare grid, for API callers (server-rendered X/Y grid, no UI change) by @LeoBorcherding in #15169
- Studio: Live monitor with CPU, memory and per-GPU rows, Unsloth's share by model, and a refresh rate by @LeoBorcherding in #15630
- Studio int8 GEMM: keep sm8x GPUs on cuBLAS under Triton 3.8+, where every shipped tile spills by @danielhanchen in #17036
- Studio: auto runs compiled int8 W8A8 for Qwen-Image families on RDNA by @danielhanchen in #17013
- Studio int8 GEMM: read and write the tile race cache as UTF-8 by @danielhanchen in #17044
- Refuse fp8 training layers under tensor parallel instead of silently training in 16 bit by @danielhanchen in #16881
- Context parallel: Unsloth's fast Mistral, Granite and Cohere attention, and DPO / GRPO on fast Qwen3 by @danielhanchen in #16893
- Studio tests: drain deferred work before the auth refresh fixture restores window by @danielhanchen in #17055
- TP x FSDP2 save: one writer when only tp-mesh DTensors remain by @lonexreb in #15257
- Tensor parallel sharded loading: allow init_lora_weights = "orthogonal" by @lonexreb in #15218
- ORPO / CPO / DPO / KTO chunked head: fall back under torch's global module hooks by @lonexreb in #15259
- Studio diffusion: decode image VAEs into one expandable allocator segment (SDXL holds 1.15 GiB less VRAM) by @danielhanchen in #17045
- FSDP2 sharded loading: allow orthogonal LoRA init by @danielhanchen in #17038
- PPO / RLOO fused log-probs: fall back under torch global module hooks by @danielhanchen in #17043
- Context parallel: Ulysses for Kimi-Linear (KDA + MLA), and fix Kimi-Linear MoE gate backward by @MegaGimen in #15880
- GRPO: score a hooked output head through its own forward by @danielhanchen in #17050
- Tests: skip the compiled half of the fp8 codes layer test on Windows without MSVC by @danielhanchen in #17073
- Studio diffusion: Automatic CFG-parallel no longer refuses an idle card over its own CUDA context by @danielhanchen in #17057
- Context parallel: register the Qwen3.5 hybrid cp x native FSDP2 cell, add coverage tests by @danielhanchen in #17039
- Studio: offloaded native int8 denoisers release their safetensors file once pinned (LTX-2.5 holds ~23 GiB less host mapping) by @danielhanchen in #17065
- Studio tests: keep two Linux-host assumptions off the Windows and macOS legs by @danielhanchen in #17107
- Studio tests: skip pre-quant tests without torchao and pin the Mac memory reading by @danielhanchen in #17117
- Studio MiniMax-H3: run int8 / fp8 denoisers where torchao's runtime does not (Ampere fp8, ROCm, MPS) by @danielhanchen in #17064
- Studio: widen stored fp8 / int8 weights without full float32 temporaries by @danielhanchen in #17068
- Studio: keep nvfp4 / mxfp8 layers packed when no native runtime runs them by @danielhanchen in #17067
- Studio sd.cpp: pass the Windows core count to MiniMax-H3 when sd.cpp would halve it by @danielhanchen in #17089
- Studio: AUTO W8A8 on ROCm RDNA keeps bf16 when the int8 plan still offloads by @danielhanchen in #17104
- Context parallel: Ulysses for MiniMax (M1 Lightning hybrid, M2) by @MegaGimen in #15881
- Studio sd.cpp: pick the Q8_0 BF16 cuBLAS route from the diffusion GGUF, not its companions (1.57x on A100) by @danielhanchen in #17098
- Backend CI: retry the ruff-unsloth wheel install on a release-asset 504 by @danielhanchen in #17130
- Studio tests: keep the multi-GB fake checkpoints sparse on Windows by @danielhanchen in #17119
- Studio diffusion tests: plan as Linux does whatever the host can compile by @danielhanchen in #17135
- Studio tests: import the new test helpers top-level when a sibling imports the module that way by @danielhanchen in #17139
- Studio: run single-file fp8 on torchao under group offload, and keep Qwen-Image-2.1's timestep table in fp32 by @danielhanchen in #17127
- Studio: read GPU metadata from the CUDA driver API, not torch.cuda.get_device_properties by @danielhanchen in #17120
- Studio video: spool encoded stream chunks instead of holding a second raw clip by @danielhanchen in #17066
- Studio MiniMax-H3: reuse the conditioner output when only the seed of a reference / keyframe render changes by @danielhanchen in #17094
- Studio desktop: steady floating browser window on drag, resize and float by @shimmyshimmer in #17027
- Studio: keep the lora_adapter_metadata strength of a rewritten LoRA file by @danielhanchen in #17088
- Unsloth Studio: train video-capable VLMs on a dataset's video instead of dropping it by @LeoBorcherding in #16965
- GRPO PrefixGrouper: engage only when the model's forward applies prefix_seg_info by @danielhanchen in #17058
- Studio: skip QKV fusion when projections are kept packed by @danielhanchen in #17132
- Studio: streamed torchao weights no longer crash after a compile (Cannot swap t1 ... weakref) by @danielhanchen in #17141
- MoE DDP negative control: accept the idle rank's missing gradient, whichever rank fails first by @danielhanchen in #17151
- Studio Qwen-Image-2.1: reuse an unchanged condition image's VAE latents across renders by @danielhanchen in #17092
- Studio: no strip behind Back to Hub over a background image by @shimmyshimmer in #17152
- Studio: keep fp32 timestep and RoPE tables in fp32 on single-file loads by @danielhanchen in #17142
- Studio LTX-2.5: one denoiser lease per CFG request, upload the next streamed encoder layer while this one runs by @danielhanchen in #17123
- Studio SSM kernels: read the loaded torch build instead of a torch-import child per load by @danielhanchen in #16996
- unsloth chat: parse the streamed Markdown when a frame is drawn, not on every chunk by @danielhanchen in #16994
- Studio cached models: keep parsed README front matter per unchanged file by @danielhanchen in #17034
- Studio VLM conversion: fetch repo image files on a pool, settle rows in order by @danielhanchen in #17029
- Deep Research: keep a clean attachment inventory clean when inserting the terminal fallback by @danielhanchen in #16997
- Studio diffusion runs: keep a passing full-load verdict per unchanged bundle for the run listing by @danielhanchen in #17033
- Studio: load the chat runtime on use instead of in the startup bundle by @danielhanchen in #16999
- Studio /v1/embeddings: count tokens in one batch and serialize float rows with tolist by @danielhanchen in #17030
- Studio downloads: skip the GGUF requirement lookup on scoped progress polls by @danielhanchen in #17028
- Studio chat: skip the transcript read when no message recorded a context fit by @danielhanchen in #16995
- Studio tool output: strip ANSI in plain runs and find the tail without splitting the whole text by @danielhanchen in #16998
- Studio llama.cpp: remember the positive reasoning budget probe per binary by @danielhanchen in #17031
- Unsloth Studio / Desktop: queue image generations from the Images page and the API by @LeoBorcherding in #15005
- Unsloth Studio: refuse Cosmos3 on diffusers 0.39 and 0.40 instead of failing at load or generate by @LeoBorcherding in #16745
- Studio: each model's compile bundle holds only its own artifacts by @danielhanchen in #17110
- Studio RAG: clip re-embedded chunks and embeddings API inputs with batched token counts by @danielhanchen in #17032
- Studio: packed nvfp4 / mxfp8 layers follow a module dtype cast by @danielhanchen in #17131
- Studio: run FLUX.3 in float32 on fp16-only GPUs (T4 renders were black) by @danielhanchen in #17124
- Studio: bit-identical one-kernel RoPE for FLUX.3 eager attention (L4: -12% s/step) by @danielhanchen in #17136
- Studio CLI tests: keep the --secure re-exec tests off the cloudflared download by @danielhanchen in #17129
- RoPE: rotate Q and K in one launch each way under torch.compile by @danielhanchen in #17109
- Studio: let peft 0.19 attach a LoRA to torchao int8 / fp8 weights of quantised single files by @danielhanchen in #17087
- Studio MLX convert: pack 3 / 5 / 6-bit codes from Fortran-order or strided arrays by @danielhanchen in #17082
- Studio diffusion: expandable VAE decode keeps a runtime allocator opt-in and restores the exact settings by @danielhanchen in #17076
- Studio GGUF: load IQ1_S / IQ1_M / IQ2_XXS / IQ2_XS / IQ2_S / IQ3_XXS / IQ3_S on the diffusers path by @danielhanchen in #17071
- Studio: re-merge only the layers of the LoRA adapters whose weight changed by @danielhanchen in #17102
- Studio MiniMax-H3: normalise a reference video one VAE chunk at a time by @danielhanchen in #17096
- Studio LTX-2.5: keep a fixed negative prompt in the encoder cache (refresh entries on a hit) by @danielhanchen in #17138
- Studio diffusion: FLUX.3 modulation heads project once per sample; offloaded Base edits reuse the conditioning streams by @danielhanchen in #17059
- Studio LTX VAE: keep only the open tile band on the card during tiled decode by @danielhanchen in #17060
- Studio text encoders: keep the fp8 storage across a layerwise-cast forward instead of re-casting it by @danielhanchen in #17103
- Context parallel: Ulysses for DeepSeek (V2 / V3 MLA, V3.2 indexer, V4 sink attention) by @MegaGimen in #15882
- Studio: per-tool MCP switches at the end of Settings > Agents by @Etherll in #15629
- Studio diffusion: keep single-file int8 weights as int8 on T4 / pre-Ampere NVIDIA and Intel XPU under offload by @danielhanchen in #17079
- Studio: a denoiser-only LoRA change keeps the cached text embeddings by @danielhanchen in #17105
- Studio: run the int8 / fp8 Triton widen on the operand's GPU by @danielhanchen in #17133
- Studio MiniMax-H3: keep only the conditioner hidden state H3 reads (about 2 GiB less at 4096 tokens) by @danielhanchen in #17095
- Studio: keep the LoRA fuse host backup off integrated GPU pins and inside the host RAM reserve by @danielhanchen in #17086
- Studio video: fall back to the tiled VAE decode when the Linux / macOS CPU allocator refuses by @danielhanchen in #17075
- Studio: queued image generations wait on their own pool, not the default executor by @danielhanchen in #17108
- Studio: judge the compiled ROCm W8A8 linear per card, not once per process by @danielhanchen in #17078
- Studio: let chat call Unsloth's own MCP tools by @Etherll in #15631
- Studio diffusion: pair Qwen-Image-2.1's guidance branches per streamed block by @danielhanchen in #17111
- Studio int8: fused MLPs and v2 Linears quantize their input with the probed one-pass kernel by @danielhanchen in #17114
- Studio: the load prefetch skips chunks already in the page cache and budgets its read buffers by @danielhanchen in #17112
- Studio image postprocess: convert to uint8 in row strips with one float32 copy each by @danielhanchen in #17091
- Studio diffusion: launch the VAE and MOSS Triton kernels on the input's own card by @danielhanchen in #17099
- Studio NVFP4: the protected branch compiles once from a cold decode table and accepts fp16 inputs by @danielhanchen in #17081
- Studio upscaler: normalise seams and finalise uint8 in place on the host result by @danielhanchen in #17083
- Studio GGUF: cast K-quant and legacy weights to bf16 in their own buffer by @danielhanchen in #17080
- Studio MiniMax-H3 VAE: stitch batched decoder tiles into the frame as they arrive by @danielhanchen in #17097
- Studio Sol-H3 VAE: decide window masks from the geometry, build each RoPE table once per decode by @danielhanchen in #17100
- Studio int8 GEMV: wide scale groups tile inside shared memory, a grouped miss no longer demotes per-row Linears by @danielhanchen in #17106
- Studio int8 GEMM: the unlisted-card race switch acts between loads by @danielhanchen in #17084
- Studio FLUX.3: keep bf16 weights as stored on fp16-only GPUs and compute in float32 per layer by @danielhanchen in #17173
- FSDP2 save: compose the writer across equal meshes, not only identical ones by @danielhanchen in #17158
- Studio: run INT8 on T4 and other Turing GPUs instead of refusing it by @danielhanchen in #17167
- Studio Qwen-Image-2.1: encode prompts without the text encoder's unused K/V cache by @danielhanchen in #17118
- Studio Wan fused blocks: one Triton binary per kernel for every sequence length by @danielhanchen in #17101
- Studio: fp8 denoisers on sm_89 no longer hang on the first render (CUDA graph replay under torch < 2.12) by @danielhanchen in #17166
- Context parallel: Ulysses for Gemma 4 text models by @MegaGimen in #15883
- Studio: install FlashInfer's prebuilt kernels into the vLLM engine env by @danielhanchen in #17063
- Studio llama.cpp: the token-count memo renders again on a new day by @danielhanchen in #17090
- Context parallel: Ulysses evidence for gpt-oss (attention sinks, MoE, aux off) by @danielhanchen in #17183
- Studio video: log an automatic text-encoder pick after the load retries its hosted encoder by @danielhanchen in #17093
- Studio tests: make the compiled-wrapper onload test hold its own weakref (follow-up to #17141) by @danielhanchen in #17189
- Studio tests: the two-card compiled W8A8 test judges each card on its own arch (follow-up to #17078) by @danielhanchen in #17195
- Context parallel: patch DPO / GRPO even when context_parallel is imported before the models by @danielhanchen in #17185
- Studio diffusion: reload a released text encoder from its own safetensors files, no snapshot write by @danielhanchen in #17184
- Studio: no header strips on macOS glass or over a plain background image by @shimmyshimmer in #17154
- Backend CI: split the g-r pytest shard into g-l and m-r by @danielhanchen in #17187
- Studio: read the hosted LTX-2.5 int8 checkpoint when the load's own plan offloads the denoiser by @danielhanchen in #17143
- Backend CI: back off for about five minutes before giving up on the ruff-unsloth wheel by @danielhanchen in #17211
- Studio MiniMax-H3: run the text stream once per render, pack the sequence in place, look up the streamed conditioner's vocabulary rows on the host by @danielhanchen in #17203
- Studio diffusion: read the XPU's float64 support from the device (Arc A-series LTX RoPE) by @danielhanchen in #17070
- Studio MiniMax-H3 Sol VAE: free expired Q/K/V slots before building the next, at most two live by @danielhanchen in #17085
- Frontend CI: back off for minutes before giving up on the Bun download by @danielhanchen in #17221
- Studio GGUF: dequantise bit-identical to llama.cpp, rounded once to the compute dtype by @danielhanchen in #17204
- Studio: int8 ConvRot by default for FLUX.2 klein and FLUX.3 klein (LPIPS 0.10 to 0.04) by @danielhanchen in #17209
- Studio diffusion: size CPU / MPS VAE decode tiles from free host memory (CPU 512 px decode 2.1x faster) by @danielhanchen in #17186
- Studio: decode the FLUX.2 / FLUX.3 VAE in row strips (36-43% less decode VRAM, same speed) by @danielhanchen in #17202
- Studio Qwen-Image-2.1: one GEMM for the dense gate + value and Q / K / V projections by @danielhanchen in #17214
- Compiled RoPE: keep per-tensor launches when only Q or K needs a gradient by @danielhanchen in #17205
- Studio MiniMax-H3: keep the whole denoiser forward compilable with the render text cache (follow-up to #17203) by @danielhanchen in #17226
- Studio: keep segment CUDA graphs on unprotected NVFP4 steps by @danielhanchen in #17216
- Studio: run Detailer inpaints on the image-generation pool by @danielhanchen in #17188
- Studio LTX-2.5: auto text-encoder precision loads the hosted int8 ConvRot encoder by @danielhanchen in #17179
- Studio MiniMax-H3: keep the conditioner read capture and tile decode traceable under torch.compile (#17095, #17097) by @danielhanchen in #17190
- Studio compile cache: torch 2.7 keeps reused graphs in saved bundles (follow-up to #17110) by @danielhanchen in #17196
- Studio diffusion: keep a streamed denoiser's blocks resident for the denoise phase, not the whole render (A100 8 GiB Qwen-Image-2.1 -18%, FLUX.3 -21 to -24%) by @danielhanchen in #17207
- Studio FLUX.3 / Qwen-Image-2.1: prompt encodes keep only the hidden states they read by @danielhanchen in #17182
- Studio CUDA graphs: the sm_89 fp8 stream-K guard reads every split card, not only the primary (follow-up to #17166) by @danielhanchen in #17194
- Studio: install FlashInfer 0.7.3 prebuilt kernels for diffusion NVFP4 by @danielhanchen in #17215
- Studio sd.cpp: pin the prebuilt resynced with upstream master-1050 by @danielhanchen in #17148
- Studio: export chats as HTML and PDF by @shimmyshimmer in #17227
- Studio diffusion: keep Qwen-Image-2.1 CFG pairing through its first-render compile by @danielhanchen in #17177
- Studio LoRA fuse: charge the host RAM guard what the pinned backup really holds by @danielhanchen in #17191
- Studio FLUX.3 manual cast: keep LoRA adapters at the fp32 compute dtype and out of the bf16 fold by @danielhanchen in #17201
- Studio: give each rotated native int8 Linear its own ConvRot buffer (FLUX.3 INT8 on T4 failed its first render) by @danielhanchen in #17217
- Studio FLUX.3: run attention in float16 on fp16-only GPUs (T4: -15% per image GGUF, -34% INT8) by @danielhanchen in #17223
- Studio FLUX.3 on fp16-only GPUs: an explicit INT8 / FP8 quant reads the bf16 checkpoint as stored instead of widening the transformer to float32 by @danielhanchen in #17228
- Studio FLUX.3: price float32 compute on fp16-only GPUs from the measured activation table (x2), so a GGUF Q4 denoiser stays resident on a T4 by @danielhanchen in #17219
- Studio FLUX.3: keep reference-image modulation at one row per span in the joint blocks by @danielhanchen in #17181
- Studio Qwen-Image-2.1: encode a condition image again after load_state_dict(assign=True) on its VAE by @danielhanchen in #17197
- Tool activity gate: wait for each card to open before reading it, not a fixed sleep by @danielhanchen in #17234
- Studio: a streamed GGUF denoiser's top-level weights re-point to their host copy instead of copying back every step (FLUX.3 Q8_0 T4: -11% per image) by @danielhanchen in #17222
- Studio small-host INT8: armed layers compile once (eager-only call counters, follow-up to #17167) by @danielhanchen in #17193
- RoPE: no recompile per sequence length when a compiled backward hands over a seq-major gradient by @danielhanchen in #17212
- Studio FLUX.3: pass cuDNN attention the projections' strided Q/K/V instead of contiguous copies by @danielhanchen in #17180
- Studio diffusion: keep Qwen-Image-2.1 scoped LoRA prompt reuse after the no-K/V wrapper, and key callable helpers fully by @danielhanchen in #17192
- Studio: drop the live Glass blur while anything moves, on software-composited pages by @danielhanchen in #17007
- Studio: stop the autoscroll follow flag restyling the whole thread in WebKit by @danielhanchen in #17035
- Studio: open Settings and the shortcuts list with one panel render and one focus move by @danielhanchen in #17042
- Studio: hold mid-scroll code block work on WebKit, fixing the #16865 scroll regression by @danielhanchen in #17149
- Studio: run FP8 on T4 and other Turing GPUs as weight-only fp8 instead of refusing it by @danielhanchen in #17218
- Studio: stop the Windows Terminal from creating nul files through Git Bash by @danielhanchen in #17010
- Studio: save Image LoRA training settings as presets by @danielhanchen in #17019
- Studio RAG: pause linked-folder indexing while a local chat generates by @danielhanchen in #17018
- Studio LTX-2.5: compact conditioning transport and stage-two connector reuse by @danielhanchen in #17232
- Studio: load INT8 instead of NVFP4 on pre-Blackwell GPUs by @danielhanchen in #17229
- Studio: keep single-file int8 denoiser weights as int8 on CPU instead of expanding them to float32 by @danielhanchen in #17178
- Studio: fuse the int8 ConvRot rotation into its producers on FLUX.2 / FLUX.3 (ConvRot cost +8.7% to +0.5%) by @danielhanchen in #17230
- Studio diffusion: price a streamed Qwen-Image-2.1 edit's reference from its token count, not the flat allowance (A100 8 GiB edit -15%, ahead of the baseline) by @danielhanchen in #17233
- Studio chat: only a note followed by its wrapper starts an attachment by @YakshithK in #16915
- Studio LTX-2.5: use two CUDA cards, the sidecar text encoder priced on its own card by @danielhanchen in #17077
- Condense comments added since the last cleanup: Studio frontend and Tauri by @danielhanchen in #16109
- Condense comments added since the last cleanup: installers, scripts and CI by @danielhanchen in #16112
- Studio update: stop size-checking the managed Windows launcher by @debojyoti-dev in #16901
- Studio MiniMax-H3: keep the released bf16 denoiser resident beside a streamed conditioner on ~100 GB cards by @danielhanchen in #16877
- Add configurable voice context to reduce Qwen3-ASR memory by @Imagineer99 in #15810
- Fix file drops in new project chats by @Imagineer99 in #14472
- Studio video: run LTX-2.5 FP8 on a 24 GB card by streaming the hosted fp8 DiT instead of refusing it by @danielhanchen in #17238
- Studio: pause Glass blur through bursts of keys and presses under software compositing by @danielhanchen in #17237
- Condense comments added since the last cleanup: Studio backend by @danielhanchen in #16110
- Condense comments added since the last cleanup: core, CLI and tests by @danielhanchen in #16111
- [Feature] Unsloth Studio / Desktop: let the mic send audio straight to any audio-input model by @LeoBorcherding in #16976
- Studio: bake the blurred chat wallpaper once instead of re-running the blur on every scroll frame by @danielhanchen in #17253
- gloo-tp tests: a rank that finished is not failed by an abort in interpreter teardown by @danielhanchen in #17244
- Studio ROCm layer split: probe secondary cards read-only, at the attention dtype by @danielhanchen in #14655
- Studio ROCm VAE attention: math SDPA in the VAE's bf16/fp16 dtype, not an fp32 upcast by @danielhanchen in #17252
- Studio CFG-parallel: treat an NVFP4 precision-state flip as a cold call so the two branches never compile at once by @danielhanchen in #14854
- Studio: load image / video / text-encoder weights from .safetensors first, reuse a cached .pt / .bin when its sha256 matches the Hub by @danielhanchen in #17061
- Studio tests: stub stt-context when mic-target loads the voice settings store by @danielhanchen in #17293
- Make shared composer drafts opt-in by @Imagineer99 in #16548
- Studio: give FLUX.3's per-mode block stacks their own offload groups (5 GiB L4 int8: -17.6% per image) by @danielhanchen in #17122
- Studio: serve the hosted Wan2.2-A14B int8 pair to an offloaded load as torchao-free W8A8 layers by @danielhanchen in #15240
- Studio diffusion: auto attention keeps native flash SDPA on A100 / L4 class cards by @danielhanchen in #17290
- Studio tests: pin the H3 cached-prequant lookup offline and cover the online twin rule by @danielhanchen in #17309
- Studio diffusion: split the batch across two cards for LTX-2, Chroma, Qwen-Image, HunyuanImage and Krea-2, and pair Cosmos 3 guidance by @danielhanchen in #17278
- Studio tests: skip the FLUX.3 group-offload test where diffusers is not installed by @danielhanchen in #17317
- Studio ROCm: use the measured fastest GEMM solution table for diffusion denoisers on gfx1151 by @danielhanchen in #17299
- Long-chat gate: settle pointer targets before a trusted hover or click by @danielhanchen in #17274
- Long-chat gate: measure streaming a reply into the chat by @danielhanchen in #17269
- Long-chat gate: measure every appearance setting or allowlist it with a reason by @danielhanchen in #17262
- Studio native diffusion: run the text encoders on a second CUDA card when one card cannot hold the load by @danielhanchen in #17276
- Studio diffusion: keep the fused AdaLN census out of compiled FLUX.1 blocks (recompile limit on first render) by @danielhanchen in #17310
- Use one glass surface for the docked Windows browser by @Imagineer99 in #16754
- Studio: title tooltips stop walking the whole thread on every pointer move by @danielhanchen in #17304
- Studio: Glass Settings pane scrolls on the compositor; API monitor fade pauses its blur (software compositing) by @danielhanchen in #17308
- Studio: keep the view_image picture visible when its tool card is collapsed by @keyiyu0331 in #17174
- Studio: stream a reply without re-rendering every message client per token by @danielhanchen in #17305
- Studio: browser pane opens without per-frame thread work on long chats by @danielhanchen in #17282
- Windows install: keep typer below 0.29 so studio setup does not hold pydantic_core open by @danielhanchen in #17319
- Studio ROCm TunableOp: label the results file with the HIP build string, not a raw read by @danielhanchen in #17325
- Studio: colour chat code blocks from the worker while scrolling and streaming by @danielhanchen in #17160
- Studio: key group hover / focus-within / active on the group class (WebKit long-chat menus and dialogs) by @danielhanchen in #17323
- Studio: modal opens stop re-laying out long chats in WebKit by @danielhanchen in #17284
- Studio: WebKitGTK Glass drops the sidebar's live blur and Frosted's grain tile (long-chat scroll) by @danielhanchen in #17327
- Unsloth Studio: restyle a video with Cosmos3-Nano-Sim-Transfer on sd-server by @LeoBorcherding in #16975
- Fix Windows wallpaper titlebar and Transparent glass surfaces by @Imagineer99 in #16959
- Studio CI: WebKit leg for the long-chat gate, report-only paint / CPU length check, recheck gap fixed by @danielhanchen in #17331
- Studio ROCm RDNA int8: Triton W8A8 kernels and fused Qwen-Image-2.1 projections (gfx1151 INT8 -12% per step, explicit int8 -26% to -34%) by @danielhanchen in #17334
- Studio: open the browser pane without React's Suspense reveal hold by @danielhanchen in #17335
- Long-chat gate: block on CPU / paint growth with chat length, judged on fresh-page rechecks by @danielhanchen in #17336
- Studio: share the FLUX.3 joint block int8 ConvRot quant under the span forward by @danielhanchen in #17337
- Studio: reroute only official NVFP4 checkpoints to INT8 on pre-Blackwell GPUs by @danielhanchen in #17343
- Studio FLUX.3: probe strided cuDNN attention on every layer split card by @danielhanchen in #17341
- Studio diffusion: do not let functools.wraps copy the prompt-cache transparent-wrapper marker by @danielhanchen in #17348
- Studio sd.cpp: only block-split on builds whose --auto-fit takes on|off by @danielhanchen in #17346
- Studio ROCm layer split: apply the common SDPA guard only once the split fits by @danielhanchen in #17347
- Studio: an unverified cached .pt no longer demotes the baseline-format safetensors twin by @danielhanchen in #17342
- Studio sd.cpp: send MiniMax-H3 reference video and audio to the resident sd-server by @danielhanchen in #17349
- Studio: glass toast surface for the runtime, Studio and Desktop update cards by @shimmyshimmer in #17352
- Studio: restore ROCm TunableOp state when the last diffusion pipeline unloads by @danielhanchen in #17340
- Studio: compute ROCm VAE half-math SDPA per call instead of flipping the global flag by @danielhanchen in #17350
- Studio sd.cpp: retry an image render that sd-server refused for VRAM under half the budget by @oobabooga in #17339
- Studio: open a long chat at its latest message on Chromium by @danielhanchen in #17351
- Studio: open and close dialogs and menus in long chats without a full thread re-layout on Firefox by @danielhanchen in #17357
- Studio: fit a GGUF reload only after the stopped llama-server's VRAM shows as free by @oobabooga in #17345
- Studio MiniMax-H3: skip the up-front denoiser slab pin when every block will be resident (-16 GiB host peak on A100 40 GB) by @danielhanchen in #17354
- Studio MiniMax-H3: keep conditioner layers on the card beside a resident denoiser, size its host pins to their weights by @danielhanchen in #17355
- Studio MiniMax-H3: park the VAEs when a render returns, so later requests keep their residency budget by @danielhanchen in #17356
- Studio diffusion: keep no pinned host copy of a resident Qwen-Image-2.1 text encoder (L4 host RAM -8.1 GiB, peak RSS 25.3 -> 16.6 GiB) by @danielhanchen in #17359
- Studio sd.cpp: send the simple scheduler so flow families get the diffusers sigma grid by @danielhanchen in #17360
- Studio diffusion: keep a hosted checkpoint's header across processes, so an 8 GiB Qwen-Image-2.1 load skips its FP8 header read (L4 load -1.8 s) by @danielhanchen in #17353
- Long-chat gate: Firefox leg for dialogs, menus, browser pane and typing by @danielhanchen in #17361
- Unsloth Studio: Cosmos3 256p, NVIDIA's frame ranges and a per-model frame-rate picker by @LeoBorcherding in #16737
- Decode CUDA graphs on by default for every FastModel model (2-8x on T4, tokens equal to eager) by @danielhanchen in #16587
- Studio diffusion: price a Qwen-Image-2.1 edit's reference on the group tier so 16 GiB edits stop hooking the resident transformer (L4 first edit -19%, -8.4 GiB host RAM) by @danielhanchen in #17364
- Studio: reuse Windows ROCm Get-Counter readings for display polls like amd-smi by @danielhanchen in #17306
- unsloth CLI: check a Studio pid with psutil before spawning tasklist on Windows by @danielhanchen in #17271
- Studio Images X/Y plot: shrink grid cells off the event loop by @danielhanchen in #17265
- Studio debug logs: list log names instead of building a Path per file on each poll by @danielhanchen in #17302
- Studio library: cache Intl formatters for per-row dates and sizes by @danielhanchen in #17251
- Studio research: run each step's knowledge base and MCP lookups alongside its web search by @danielhanchen in #17287
- H3 rotation park test: read video.py as UTF-8 by @danielhanchen in #17370
- Unsloth Studio: Cosmos3-Nano video continuation (extend a clip from its last or first frames) by @LeoBorcherding in #16741
- Studio: keep the browser feature index out of startup by @danielhanchen in #17280
- Studio: reduce Liquid Glass paint cost when WebKit paints on the CPU by @oobabooga in #16960
- Studio embeddings: parse the GGUF body only when read and once, and serialize the Studio embedder payload off the event loop by @danielhanchen in #17286
- Studio dataset preview: hand a JSON file that is not JSON Lines to the loader without reading it whole by @danielhanchen in #17277
- Studio chat search: skip metadata_json when building the search index batch by @danielhanchen in #17249
- Studio GGUF variants: reuse the request's Hub listing for the MLX fallback by @danielhanchen in #17279
- Studio: skip superseded wallpaper writes and no-op history / bookmark persists by @danielhanchen in #17298
- Studio Windows tools: stop the trusted git lookup at the first trusted candidate by @danielhanchen in #17270
- Studio: memoize the nonce-free Content-Security-Policy on its inputs by @danielhanchen in #17246
- Studio: keep marked out of startup by moving the export format names to their own module by @danielhanchen in #17250
- Studio Data Recipes: keep unstructured seed upload file IO off the event loop by @danielhanchen in #17266
- Unsloth Studio: list Cosmos3-Nano in the Video picker and route it from the Hub by @LeoBorcherding in #16743
- Studio dataset detection: read only the still-missing columns when filling a sparse first row by @danielhanchen in #17248
- Studio: pause display-only training polls while the tab is hidden by @danielhanchen in #17294
- Studio: import HfApi on first use instead of at backend start by @danielhanchen in #17273
- unsloth studio stop: return as soon as the server exits instead of on the next half-second step by @danielhanchen in #17283
- Patch sentence_transformers when it is first imported instead of importing it with unsloth by @danielhanchen in #17267
- Studio Metal: read the Apple wired headroom once per GGUF placement by @danielhanchen in #17275
- Studio chat: skip the display strip chain for history text with no tool markup by @danielhanchen in #17264
- Studio RAG: delete a retired folder's or scope's chunks in batches instead of one index scan per document by @danielhanchen in #17281
- Studio: cache the native-template markup profile per tokenizer in renderable_tool_catalog by @danielhanchen in #17288
- Studio Anima LoRA: rule out kohya splits that name no registered module before probing by @danielhanchen in #17247
- Diffusion guard test: match the calibrated placement and ControlNet kwargs structurally by @danielhanchen in #17376
- Studio: resolve the nested Radix primitive / slot / context copies to one version by @danielhanchen in #17301
- Studio: keep speaker notes when a PowerPoint file is attached in chat by @NilayYadav in #17258
- Studio: keep searching the web past a lone Wikipedia result by @NilayYadav in #17242
- Studio Windows GPU inventory: run the PowerShell adapter scan only when AMD or Intel records need it by @danielhanchen in #17272
- Studio installers: ask for the latest llama.cpp / whisper.cpp release tag once per run by @danielhanchen in #17289
- Studio: read once per tab return instead of on both visibility and focus by @danielhanchen in #17300
- Studio: keep the Ask before downloading programs setting across browsers by @NilayYadav in #17240
- Studio: turn Reduce motion on by default by @shimmyshimmer in #17377
- Skip the duplicate tokenizer load on transformers 5 when it can only copy the fast tokenizer by @danielhanchen in #17318
- Studio: keep a user-set Hermes api_key in unsloth start hermes by @NilayYadav in #17320
- Studio: train Phi-4-mini on its own chat template by @NilayYadav in #17312
- Studio MiniMax-H3: run one denoiser forward per requested step (20 steps ran 19) by @danielhanchen in #17362
- Slot-clamp lint: accept the allow marker on any line of a wrapped assignment by @danielhanchen in #17384
- Fix CPU pipeline evaluation loss normalization by @0xalkinun in #17291
- Studio: keep hidden spreadsheet rows in chat attachments by @NilayYadav in #17314
- Studio: save LoRA and merged exports of a run to separate folders by @NilayYadav in #17260
- Decode CUDA graphs for Qwen3.5 / Qwen3.6 hybrid linear-attention caches by @danielhanchen in #17324
- Studio: stop audio models learning to answer None for blank transcripts by @NilayYadav in #17257
- Studio: hold the login rate limit on the Colab public link by @NilayYadav in #17259
- Studio: end plain-text training rows with EOS when Format is Auto by @NilayYadav in #17255
- Decision models on MLX: refuse a config.json model_file unless trusted by @danielhanchen in #17391
- AsyncGRPO: require a per-run secret on the local vLLM server; validate BF16 AdamW state on load by @danielhanchen in #17390
- Studio: cap request bodies on every route and decode zstd bodies one at a time by @danielhanchen in #17388
- Studio: do not start a queued fine-tuning job for a disabled or deleted account by @danielhanchen in #17392
- Studio: edit_file and Rewind write through an open chat-folder descriptor on POSIX by @danielhanchen in #17389
- Studio: open update-notes links in the Desktop app, treat .term and .tcsh downloads as code by @danielhanchen in #17394
- Long-chat gate coverage: measure forced motion now that Reduce motion is on by default by @danielhanchen in #17395
- Studio: make keyword search find Chinese, Japanese and Korean words by @NilayYadav in #17261
- Studio video: a stored peak no longer widens a new process's first render; an out-of-memory render retries streamed (LTX-2.5 16 GiB returning home) by @danielhanchen in #17373
- Studio: harden diffusion adapters, quant scales, prompt LoRA tags, Hub clips, short audio and restyle uploads by @danielhanchen in #17396
- Settings sync: save the shared composer draft preference with the account by @danielhanchen in #17399
- Notebook GGUF export: keep the converter to the load's trust_remote_code decision by @danielhanchen in #17397
- Bump trufflesecurity/trufflehog in / by @dependabot[bot] in #17243
- Studio: centre dialogs on whole pixels so their text stays sharp by @wasimysaid in #17383
- Studio: fix embedding fine-tunes failing at the first step by @NilayYadav in #17311
- Studio: make MLX and safetensors models call a forced tool by @NilayYadav in #17241
- Studio: say when a file added while creating a project fails to index by @NilayYadav in #17313
- Studio: open the managed account folder browser on symlinked installs by @NilayYadav in #17321
- Studio: remove Liquid Glass stripes and greeting rings, and the black browser tab strip on Linux by @wasimysaid in #17380
- Studio: keep every frame when downloading a video as WebM by @NilayYadav in #17239
- Studio GGUF vision chat: reuse the image normalization for history images sent again by @danielhanchen in #17263
- Studio: ask before Python shells out through asyncio or pty by @NilayYadav in #17254
- Studio: send video to custom OpenAI-compatible connections by @NilayYadav in #17322
- Studio: restore real Glass on the Linux app (live blur, fills, strength and the Windows-style title bar) by @wasimysaid in #17387
- Studio: keep deferred MCP tools in place when a listed tool runs again by @oobabooga in #17326
- [CS146S Stanford] Studio web fetch: a bare & stays as written, and escaped code stays in its code block by @mrityu75 in #17200
- Studio: stop image loads exhausting Windows commit on Intel Arc iGPUs by @danielhanchen in #17378
- Opt-in growable KV cache for generic decode graphs by @danielhanchen in #17296
- GGUF export: keep remote_code_approved out of the save_pretrained kwargs by @danielhanchen in #17404
- docker(rocm): run gfx103X cards as gfx1030 when the image's torch lacks them by @hMelchisedek in #17150
- fix(studio): align cached GGUF picker size by @Aafimalek in #17125
- Remove unreferenced private helpers, constants and an if False block by @danielhanchen in #16569
- Add retry button to download panel for failed/cancelled downloads (CS 146S) by @vijkomal in #17225
- fix(studio): support explicitly selected virtual bridge LAN addresses by @alanhuang05 in #17165
- Studio diffusion: load Qwen-Image-2.1's hosted int8 text encoder on float16 cards (T4 Turbo INT8 82.7 -> 31.9 s/image) by @danielhanchen in #17379
- Studio LTX-2: stream the text connectors under streaming offload so the denoise keeps more transformer groups resident (A100 16 GiB -16% per clip) by @danielhanchen in #17386
- Studio: set scrollbar-color in rgb so Reduce motion stops restarting a transition on every element by @danielhanchen in #17413
- Studio: leave room for thinking in a Custom connection's chat title request (#17332) by @indrajeetapache in #17363
- Installers: require unsloth-zoo>=2026.11.4 to match the pyproject floor by @danielhanchen in #17414
- Installer: clear damaged uv cache entries before retrying an install by @danielhanchen in #17398
- Studio: mount the API monitor inside a host that stays mounted, so opening it in Glass stops restyling the app by @danielhanchen in #17418
- Studio FLUX.3: keep float16 on fp16-only GPUs behind a residual rescale (T4 INT8 -24% per image, GGUF Q8_0 -73%) by @danielhanchen in #17385
- Scan baseline: re-review the seven unsloth-zoo sites 2026.11.4 moved by @danielhanchen in #17421
- Studio: keep more of a streamed FLUX.3 klein int8 transformer resident at small budgets (L4 6 GiB -4.2% per image, H2D 56.9 -> 43.9 GiB) by @danielhanchen in #17419
- Studio MiniMax-H3: feed the SwiGLU halves straight into the down projection's int8 activation quant (L4 -0.85% s/step, bit-identical) by @danielhanchen in #17422
- Update idempotency: let the offline test survive a version bump that is not on PyPI yet by @danielhanchen in #17428
- Studio: ask before running Python fed to Terminal through a heredoc by @NilayYadav in #17256
- Studio tests: read video.py as UTF-8 in the H3 fused SwiGLU test by @danielhanchen in #17437
- Unsloth Studio: show which models have saved run settings and reset them from the model menu by @LeoBorcherding in #12608
- Studio Terminal: give the heredoc quote scanner its own substitution helper by @danielhanchen in #17442
- Studio sd.cpp: pin the prebuilt resynced with upstream master-1056 by @danielhanchen in #17459
- Studio: stop Reduce motion turning on a transition for every element by @danielhanchen in #17466
- Studio NVFP4: tune mm_fp4 once per M bucket and keep the tactics on disk by @danielhanchen in #17467
- Studio: neutral NVFP4 gate field names and refreshed checkpoint hashes by @danielhanchen in #17469
- Studio NVFP4: 4over6 block scales at load and in the prequant builder by @danielhanchen in #17468
- Tests: clear the cached tensor parallel layout before every test by @danielhanchen in #17472
- Studio: MiniMax-H3-Image text to image and reference edits by @danielhanchen in #17453
- Flex attention decode steps for Gemma 4 and Qwen3.5 / Qwen3.6 under decode CUDA graphs by @danielhanchen in #17329
- Studio tests: give the llama-server owner tests a wait cap a loaded runner can meet by @danielhanchen in #17488
- Studio: keep chat text out of the header with Glass or a background by @NilayYadav in #17429
- Studio: ask before Python runs a shell command passed by reference by @NilayYadav in #17456
- Studio: let MCP run_recipe set a row count by @NilayYadav in #17427
- Studio: stop web results crowding attached files out of Deep Research by @NilayYadav in #17434
- Studio: wrap long unbroken text in PDF chat exports by @NilayYadav in #17425
- Studio: make Gemma 4 call a forced tool by @NilayYadav in #17432
- Studio: keep the seeded admin password out of pages relayed by a proxy by @NilayYadav in #17454
- Studio: stop showing a stray after an OpenAI model calls a tool by @NilayYadav in #17455
- Studio: fit max_tokens to the window on vLLM and SGLang tool requests by @NilayYadav in #17426
- Studio: keep the LoRA on in Chat after a Base vs LoRA compare by @NilayYadav in #17433
- Studio: let managed accounts use gated models with their own HF token by @NilayYadav in #17172
- Studio: keep built-in tools on when an MLX chat has several images by @NilayYadav in #17423
- Studio: compact long chats on an Ollama connection to its loaded window by @NilayYadav in #17457
- Studio: reconnect a chat reply whose connection died silently by @NilayYadav in #17416
- Studio: always show loaded GGUF weight placement by @oobabooga in #17449
- Studio MiniMax-H3: opt-in 4-bit GGUF text encoder for hosts that cannot keep int8 resident by @danielhanchen in #17479
- Studio: edit images through an external connection's /images/edits endpoint by @oobabooga in #17448
- Gemma 3 generate test: find the non-flex scope by call, not by its exact text by @danielhanchen in #17497
- Studio sd.cpp: pin the prebuilt with the aarch64 K-quant GEMM and macOS Accelerate routing by @danielhanchen in #17489
- TP / FSDP2 saves: pass results between ranks as JSON, not pickle by @danielhanchen in #15510
- Studio: accept chat videos up to 256 MB by @danielhanchen in #17400
- Context parallel: eval loss is the sequence's token mean, not cp_size times it by @lonexreb in #17049
- Mask GRPO completions cut by the vLLM server's context limit by @danielhanchen in #16650
- Pipeline parallel on the CPU backend: weight the MoE router aux loss as TRL's SFTTrainer does by @debojyoti-dev in #17072
- Ulysses: dynamic and longrope RoPE see the whole sequence's positions by @lonexreb in #17051
- Studio desktop: serve the web UI behind an allowlisted reverse proxy (fixes #17420) by @debojyoti-dev in #17435
- RoPE: compile stock positions without full-context caches by @danielhanchen in #16182
- Studio: train jobs targeting embed_tokens or lm_head alone, not batched by @danielhanchen in #16653
- Multi-LoRA: keep the backward dH buffer in fp32 by @danielhanchen in #16647
- Studio: MLX chats with a picture keep going when the context fills by @NilayYadav in #17424
- Multi-LoRA: refuse 8-bit bitsandbytes base layers by @danielhanchen in #16648
- Studio: no RAM fallback mark in the model picker when there is no GPU by @shimmyshimmer in #17516
- Studio: pin MiniMax-H3-Image (Fast FP8) at the top of the image picker by @danielhanchen in #17502
New Contributors
- @MegaGimen made their first contribution in #15880
- @0xalkinun made their first contribution in #17291
- @hMelchisedek made their first contribution in #17150
- @vijkomal made their first contribution in #17225
- @alanhuang05 made their first contribution in #17165
Full Changelog: v0.1.916-beta...v0.1.917-beta