What's Changed
- Lower MOSS-Image peak memory during VAE decode by @felix-ab in #2615
- Fix LFM3 thinking leakage by initializing response parsers with the prompt by @Blaizzy in #2621
- Add Raon-1 Mini support by @Blaizzy in #2622
- Support text-only ASR with diarized_json by @Blaizzy in #2626
- Send SSE heartbeats during idle OpenAI streams by @Blaizzy in #2633
- Add native Mage-VL-Cowork support by @Blaizzy in #2636
- Support speculative thinking budgets and expose reasoning efforts by @Blaizzy in #2641
- Add Mistral Large 4 by @Blaizzy in #2629
- fix: accept top_k equal to vocab size in apply_top_k by @ShryukGrandhi in #2643
- Make the LFM3-VL processor follow the transformers processor contract by @abhijithneilabraham in #2640
- Expose the server's reasoning-effort control in the generate CLI by @selimfedakar in #2631
- Filter per-row M-RoPE deltas when the speculative batch drops finished rows by @selimfedakar in #2625
- Keep tool-call streaming alive on outputs the final parser tolerates by @selimfedakar in #2635
- convert: keep the source tokenizer.json after save_pretrained by @JarJarFran in #2624
- fix(flint): view flat uint8 quantized weights as packed uint32 by @martinstiago in #2616
- Fix Gemma 4 tool calls containing braces in strings by @victor-torres in #2593
- fix: reload native LFM2 ColBERT checkpoints by @kocean9-freedom in #2575
- fix(tool-parsers): keep the text "null" for string-typed qwen3_coder parameters by @parasew in #2588
- Preserve inference state when resuming interrupted responses by @Blaizzy in #2623
- Honor APC memory admission and keep warm requests decoding by @Blaizzy in #2645
- Reduce APC merge memory and preserve custom checkpoints by @Blaizzy in #2646
- Fix typical-p filtering with masked tokens by @HowieYin in #2563
- fix: honor base64 embedding response encoding by @kocean9-freedom in #2573
- Build the Qwen3 text reranker prompt without the chat template by @begcdn in #2561
- fix: antialias position embedding resizes with PyTorch's triangle filter by @rrrxxx0510 in #2553
- Honor configured activations in BERT and XLM-R encoders by @kocean9-freedom in #2572
- Expose continuation idle timeout to clients by @Blaizzy in #2652
- Reduce continuation idle timeout to two minutes by @Blaizzy in #2654
- Add native Idol image-to-3D generation by @Blaizzy in #2644
- fix(qwen3_vl): compute text-only rope deltas from unpadded length by @pujitha24 in #2587
- Keep resumed DFlash and MTP requests in shared speculative batches by @Blaizzy in #2648
- fix: compute text-only rope deltas from unpadded length in the other MRoPE models by @ahuzmeza in #2658
- qwen3_5: apply YaRN from rope_parameters on the VLM rotary by @xocialize in #2649
- fix: preserve the input value domain through video frame resizing by @rrrxxx0510 in #2551
- fix: interpolate position embeddings over the spatial dimensions by @rrrxxx0510 in #2549
- Support resumable diffusion generation at block boundaries by @Blaizzy in #2662
- Improve Mistral DSpark decode stability and speed by @Blaizzy in #2659
- fix(prompt_utils): keep audio after image for media-only LFM3 turns by @selimfedakar in #2655
- Bound prefill work and publish decoded tokens immediately by @Blaizzy in #1630
- Generalize trailing-logit projection and greedy selection by @Blaizzy in #2664
- docs: update MLX-VLM branding for Neywa Labs by @Blaizzy in #2666
- Document video= and fps= on apply_chat_template and warn on num_videos by @AkshayShah03 in #2479
- Honour max_completion_tokens on /v1/chat/completions by @AkshayShah03 in #2484
- Number phi3_v/phi4mm image tokens across the whole conversation by @AkshayShah03 in #2492
- Fix PaddleOCR-VL LoRA training: freeze visual encoder, accept packed patches by @AkshayShah03 in #2476
- Cut streamed /v1/messages text at stop_sequences by @AkshayShah03 in #2486
- Fix Eagle3DraftModel.bind for drafters without embed_tokens by @AkshayShah03 in #2473
- fix: update project references after Neywa Labs transfer by @Blaizzy in #2667
- feat: serve d1-2B and d1-omni-2B on /v1/decisions by @ykhrustalev in #2657
- Bump version to 0.7.12 by @lucasnewman in #2663
New Contributors
- @felix-ab made their first contribution in #2615
- @ShryukGrandhi made their first contribution in #2643
- @abhijithneilabraham made their first contribution in #2640
- @selimfedakar made their first contribution in #2631
- @JarJarFran made their first contribution in #2624
- @martinstiago made their first contribution in #2616
- @victor-torres made their first contribution in #2593
- @kocean9-freedom made their first contribution in #2575
- @parasew made their first contribution in #2588
- @HowieYin made their first contribution in #2563
- @begcdn made their first contribution in #2561
- @rrrxxx0510 made their first contribution in #2553
- @pujitha24 made their first contribution in #2587
- @ahuzmeza made their first contribution in #2658
- @AkshayShah03 made their first contribution in #2479
Full Changelog: v0.7.11...v0.7.12