v0.13.2-rc1
Pre-releaseWhat's new in v0.13.2-rc1
Rapid-MLX 0.13.2-rc1 makes long-running local assistants faster and more
dependable: Qwen3.8 Flash-Next gains opt-in native MTP and faster long-context
prefill, repeated prompts recover their prefix cache, offline speech pulls
include their runtime requirements, and Desktop tightens attachment, credential,
and web-browsing safety. This first release candidate is published for
validation and deliberately does not replace the stable updater feed.
Highlights
Qwen3.8 Flash-Next gains native MTP — The engine can opt into the
checkpoint's one-layer prediction head while the target model verifies every
proposal and all recurrent, QSA, and KV state rolls back atomically. The
measured fixed-K1 workload accepted 76.41% of proposals.
(#2572,
#2655)
| Context | Serial decode | Native MTP | Change |
|---|---|---|---|
| 128 | 25.17 tok/s | 34.85 tok/s | +38.5% |
| 2K | 23.64 tok/s | 33.53 tok/s | +41.8% |
| 8K | 22.82 tok/s | 32.20 tok/s | +41.1% |
| 32K | 21.16 tok/s | 28.82 tok/s | +36.2% |
Desktop's normal temperature, top-p, top-k, min-p, and penalty settings can use
the lane. Seeded requests and stateful grammar, tool, reasoning, or suppression
processors continue on ordinary decoding rather than silently weakening their
contract. The measured MTP path used up to 6.6 GB more active memory, and 192 GB
remains the recommended hardware tier for this experimental checkpoint.
Faster long-context prefill and reusable prompts — QSA index-cache work is
batched across eligible prefills, reducing measured time to first token by
28.9–32.5% while decode speed and cache precision remain unchanged. A completed
32K request can no longer poison the next request in the same process.
(#2574,
#2596)
| Prompt | Previous TTFT | Batched TTFT | Change |
|---|---|---|---|
| 2K | 3.346 s | 2.262 s | -32.4% |
| 8K | 13.689 s | 9.236 s | -32.5% |
| 32K | 62.851 s | 44.659 s | -28.9% |
Semantic prefix snapshots now follow the exact rendered prompt and preserve the
Flash-Next recurrent cache through batching and persistence. A measured
5,288-token warm request reused 5,273 tokens and completed in 0.539 seconds
instead of 6.497 seconds; native MTP continued proposing after the hit.
(#2588,
#2644)
Kokoro is ready before the machine goes offline — rapid-mlx pull now
fetches the voice assets and prepares the English G2P requirement as part of
the pull transaction. The clean-cache validation downloaded 54 voice files and
generated speech with networking disabled. If a runtime requirement is missing,
an inference request returns an actionable readiness error instead of trying to
download or install software on demand.
(#2648,
#2664)
A smaller, byte-identical-to-approved Desktop release path — LZMA packaging
and dependency-proven pruning reduced the signed and notarized comparison DMG
from 187,505,002 to 105,881,983 bytes, a 43.53% reduction. The tradeoff is a
slower one-time Finder copy on the measured host: 17.80 seconds instead of 5.94
seconds. Candidate builds now identify their source commit, and protected
publication promotes the exact approved DMG and updater payloads instead of
rebuilding different bytes after the tag. Tier 1 and Desktop now install the
same candidate wheel, with a shared contract matrix keeping text and
multimodal request behavior aligned.
(#2668,
#2450,
#2530,
#2726)
Desktop safety and workflow corrections
- After the first completed exchange, Desktop can derive one short local title
without replacing a user rename. Settled text answers can also offer three
optional follow-up prompts; malformed, duplicate, wrong-script, or incomplete
suggestions stay hidden. (#2698) - A chat message accepts up to four images and 6 MiB of aggregate encoded image
data, preserves selection order, and explains whether count or size rejected
the remainder. A repeatedly failing image gets one bounded follow-up retry
instead of contaminating every later text turn.
(#2541,
#2585) - Generated-image deletion uses an app-owned confirmation sheet: Keep remains
pressable in native GUI automation, Escape is safe, and Return cannot delete
an image. (#2387,
#2578) - Switching away from a busy model asks first; Cancel preserves the live model
and in-flight response. Recommendation, review, and engine admission use one
measured footprint for known models, and already-resident models remain
usable through the safe replacement path.
(#2430,
#2543,
#2619) - The installer recommends
lfm2.5-1b-4bitbelow 16 GB and
qwen3.5-4b-4biton larger Macs, while preferring an eligible cached model
from the same memory tier. (#2426) - Exited server leaders are reaped without blocking a shared worker, and stale
dual-stacktcp46listeners are recognized when Desktop clears a server
port. A stopped dictation model reloads when the user next presses the hotkey
instead of during foreground activation.
(#2562,
#2593,
#2663) - Tools settings resolve the selected search key's real Keychain state without
exposing it, dictation errors no longer guess at an unproven memory cause,
and photo guidance names the remedy for the engine's actual serving-lane
reason. (#2514,
#2523,
#2602,
#2607) - After 35 successful chats, dictations, or generated images, established
Desktop users may see a quiet, nonmodal invitation to visit the project on
GitHub. Dismissing it starts a three-day cooldown and a progressively larger
local usage threshold; Rapid performs no account or star-status lookup.
(#2675)
Engine, API, and CLI reliability
- Qwen3.8 27B required and named tool calls use the checkpoint-native format
and return OpenAI-compatible JSON arguments. Invalid required arguments fail
with a client error instead of appearing executable.
(#2660) - Explicit
--mllmselection wins over automatic architecture, cache, and
runtime fallback. The measured vision-memory floor remains mandatory, and
speculative decoding still uses its supported text lane.
(#2643,
#2669) - Explicit
timeout: 0means the server default, request-local
chat_template_kwargsreach the tokenizer, cancellations are distinct from
max-length completion, and orphaned streaming reservations cannot keep model
replacement busy until restart.
(#2583,
#2614,
#2625,
#2636) - Explicit
--bitsand--formatpulls remain eligible for the mirror.
Malformed or interrupted cache metadata no longer crashes cached-model
listing, pull admission, or chat model switching.
(#2610,
#2613) - Explicit variant pulls persist their selected subfolder, so a later
servecommand resolves the pulled checkpoint instead of the repository
root. Catalog aliases retain precedence over this pull marker, and
mirror-backed pulls now persist the same selection as fallback downloads.
(#2558,
#2750) - Oversized vision images are automatically reduced to the model's patch-aware
token budget before preprocessing. Multiple images share that budget, and a
measured retry handles processor rounding. If the minimum aligned image
remains over budget, the server warns and leaves the existing downstream
prefill-cap guard as the final rejection boundary.
(#2694) - Image edits derive their output canvas from the uploaded source instead of
silently falling back to the text-to-image 1024×1024 default. Square and
non-square FLUX.2 Klein edits now preserve the source dimensions.
(#2759) - Forced assistant prefixes become visible as soon as the scheduler admits the
request instead of waiting for the first decoded token. Empty, failed, and
cancelled streams retire their pending admission work cleanly.
(#2674) - Suffix decoding now checks the full verify-forward cache growth before
advancing a sliding-window cache. At a rollback-unsafe boundary it falls
back to ordinary decoding instead of aborting the request.
(#2682) - A terminal MTP response that has verified farther than its visible output no
longer publishes that advanced state as a reusable prefix cache. Ordinary
completed-response cache reuse is unchanged.
(#2751) - Parakeet v3 metadata and the Desktop picker now agree on all 25 supported ISO
languages and automatic language detection instead of describing the
checkpoint as English-only.
(#2729) - Passive version checks correctly order
rcNbelow the matching final and now
coverpull,ps,info,bench, anddoctor; automatic upgrade prompts
remain off for development, RC, and local builds.
(#2431)
Privacy and security
- Desktop activation milestones are created and sent only after explicit
telemetry consent. Request attribution uses an allowlisted client bucket;
raw user-agent text never enters the payload.
(#2428,
#2436) - Embedded API bearer credentials support per-launch, daily, and manual
rotation. The bearer stays in a code-identity-scoped Keychain item while
preferences contain only non-secret metadata.
(#2639) - Desktop web browsing validates every DNS answer, then pins the socket to the
selected address while preserving hostname-based TLS verification. Validated
IPv4 and IPv6 destinations are raced with a short stagger so one black-holed
route cannot consume the whole deadline. Redirect, body-size, and timeout
limits remain fail closed.
(#2645,
#2747)
All changes
- fix: compare MTP ratio at exported precision (#2773) (8c47630)
- fix: make MTP release probe exercise sustained decode (#2771) (15850d3)
- fix: prove MTP metrics before residency sequence (#2770) (f051a6c)
- fix(release): install vision runtime for top-10 gate (#2768) (dc93838)
- fix(release): bind agent sequence path before cwd changes (#2766) (52d4751)
- fix(release): accept Sparkle item version fields (3fa13f2)
- chore: bump version to 0.13.2-rc1 (b68587a)
- docs: finalize 0.13.2-rc1 release notes (#2734) (e0b6b5e)
- fix: preserve image edit canvas dimensions (#2759) (3e54e4a)
- test: restore Harmony terminal lifecycle fixture (#2756) (ace6b9b)
- test: stub serving lane decisions in stale tests (#2719) (a18a998)
- feat(chat): name conversations and suggest next questions (#2698) (36ef053)
- tests: checked-in top-10 residency load-order sequence spec (#2496) (#2509) (2c47013)
- test: enforce text and multimodal lane parity (#2726) (e5804f5)
- fix(cli): retain mirrored pulled variant (#2750) (3016243)
- fix(mtp): discard cache after terminal verify (#2751) (c0e16f3)
- fix(mac): race validated DNS fallbacks (#2747) (6f90347)
- fix(ci): bound cached Quickstart readiness (#2745) (aac1d98)
- fix(ci): recognize trusted merge candidates (#2730) (ef4f8b0)
- fix(audio): align Parakeet v3 language metadata (#2729) (b0d2a70)
- fix(engine): resolve pulled --bits variant at serve/load (#2340) (#2558) (dea9284)
- docs: stage 0.13.2 release notes (#2678) (ed87d72)
- fix(mac): keep Quickstart starter copy truthful (#2604) (607d12a)
- fix(cli): report Flash-Next native MTP capability (#2611) (fc9042c)
- fix(cli): resolve the unique complete snapshot offline (#2642) (24360a8)
- Fix Parakeet v3 language metadata (#2680) (0e0b927)
- Fix MTP request lifecycle isolation (#2717) (b456bd8)
- fix(guided): constrain Flash-Next structured output (#2620) (0346934)
- fix(mac): clear bearer when selecting every start (#2718) (7061c5c)
- test(gui): deliver real Settings smoke clicks (#2652) (13de792)
- Prevent request-target header injection (#2705) (e4317d8)
- Fix Host authority default-port handling (#2710) (4406382)
- Add validated DNS address fallback (#2709) (e953ff8)
- Bound chunked response parsing safely (#2704) (4efb97a)
- ci(release): gate publication on real FLUX generation (#2689) (5b69b1f)
- fix(mac): show per-request MTP availability (#2683) (cf54fe3)
- test(mac): make lifecycle suites async and preference-isolated (#2673) (2d7c326)
- fix(mac): gate residency flags by runtime support (#2688) (7448217)
- Fix Host header for IPv6-pinned DNS names (#2703) (623e8da)
- Fix IP-pinned transport cancellation resume (#2700) (c089775)
- Downscale oversized vision inputs to token budget (#2694) (9418e03)
- macOS: ask for a GitHub star after a value moment (#2675) (aae207b)
- Yield forced assistant prefix after admission (#2674) (1c86ad5)
- Preflight suffix decode cache growth (#2682) (7a6d40b)
- test: match centralized GUI host guard (#2684) (dc19e31)
- test(gui): await sidecar exit before persona cleanup (#2677) (740ce4e)
- fix: honor explicit MLLM lane selection (#2669) (e9719e6)
- fix(audio): make Kokoro pulls offline-ready (#2664) (6ad06cc)
- fix(mac): pin browse sockets to validated IPs (#2645) (927c02e)
- perf(mac): shrink the release DMG safely with LZMA (#2668) (7cc5334)
- fix(mac): sweep dual-stack tcp46 listeners (#2663) (5148dc2)
- fix: align Qwen3.8 tool-call wire format (#2660) (d730e18)
- fix(mac): localize photo-unavailable remedies (#2607) (472d0ba)
- fix(engine): apply vision memory gate to forced lane loads (#2643) (f9e49a1)
- fix(mtp): serve Desktop default sampling without silent fallback (#2655) (66a0be6)
- fix(cli): pull audio runtime assets for offline use (#2648) (57818d3)
- test(mllm): align stats with cancelled status (#2650) (7465228)
- fix(cache): restore Flash-Next prefix hits (#2644) (244849f)
- fix(mac): preserve empty GUI golden arguments (#2637) (f737940)
- feat(mac): persist embedded API bearer with safe lifetimes (#2639) (0b59a07)
- fix(engine): release orphaned streaming admission reservations (#2636) (6747050)
- test(mac): make active-switch journey fail closed (#2626) (1ae2d57)
- fix(engine): distinguish cancellations from max-length completions (#2625) (55fb1dc)
- test(mac): settle Launch registry before golden capture (#2630) (0857bfd)
- ops: harden shared macOS host lanes (#2549) (b0623da)
- ci(no-mlx): replace manual roster with requires_mlx discovery (#2534) (17d3044)
- feat(telemetry): wire emit.request into /v1/messages + /v1/completions (task C, 0.13.2) (#2436) (79e2eb1)
- fix(api): pass chat_template_kwargs through to apply_chat_template (#2474) (#2583) (f61a02b)
- fix(residency): serve residents through reject-mode replacement loads (#2550) (#2619) (b105983)
- fix(api): preserve zero request timeout as server default (#2614) (1f9db16)
- fix(cli): keep mirror fallback for selected pull variants (#2554) (#2613) (0f8a6ad)
- fix(cli): isolate malformed cache probe faults (#2552) (#2610) (edf5a45)
- fix(mac): resolve desktop papercut states (#2602) (144b8f9)
- fix(mac): defer dictation restart until the next hotkey (#2593) (38034a3)
- feat(version-check): parse rcN below final; widen staleness call sites (#0.13.2 version-convergence) (#2431) (a7af663)
- fix(qsa): materialize batched index keys before cache commit (#2596) (9ad8352)
- fix(engine): SSOT frozensets for serving_lane_reason + contract roster (#2515) (#2544) (1c86e19)
- fix(engine): preserve Flash-Next MTP cache on prefix hits (#2588) (5ddb26b)
- fix(mac): reap exited server leaders without blocking a shared worker (#2363) (#2562) (78d4ad2)
- fix(mac): quarantine an image after its second terminal retry failure (#2585) (a890f4c)
- test(mac): table-driven memory-projection invariants across tier/picks + lane transitions (#2497) (#2563) (4c94abf)
- feat(mac): report consented Desktop activation milestones (#2428) (5b17d77)
- perf(qsa): batch Flash-Next compressed-key prefill (#2574) (1b9e94b)
- test(gui): convert control-behaviour contract to symbol/behaviour checks (#2494) (#2548) (fa41d38)
- fix(memory): use one footprint per recommended model (#2543) (b740835)
- feat(engine): add native MTP for Qwen3.8 Flash-Next (#2572) (b205644)
- docs: add optional contributor X-handle field to the PR template (#2532) (7ee64f5)
- fix(mac): keep image deletion confirmation pressable (#2578) (49a634b)
- docs: clarify queued candidate handling (#2571) (88aad52)
- ci: enforce no-mac and mac queue lanes (#2575) (eee5668)
- ci: split merge queue by mac requirement (#2573) (376174f)
- fix(mac): bound image attachment count and aggregate bytes (#2456) (#2541) (04cee35)
- ci: batch merge-ready PRs behind one integration gate (#2569) (df00905)
- fix(mac): allow deleting generated images (#2387) (45c62e3)
- test: declare hermetic integration inputs (#2566) (44773b6)
- test(mac): bound dictation busy-waits by time, not yield count (#2537) (#2538) (ef0e752)
- fix(pr_validate): reject unedited PR-template bodies in cl_description_quality (#2539) (6e0bf2c)
- fix(mac): tie retained chat-lane provenance to authoritative catalog generation (#2364) (#2545) (b2216ce)
- fix(ci): make parser microbench a relative regression gate (#2409) (8631acc)
- ci(release): identify Desktop candidate artifacts (#2450) (8734423)
- ci(l1-smoke): relocate qwen3.5-9b-4bit off hosted L1 to the Studio tier-1 gate (#2419) (#2437) (c2a64b3)
- ci: reject duplicate pytest roster entries (#2531) (a8b33de)
- ci: reserve expensive mac lanes for promoted heads (#2556) (c09b0e2)
- test: make the hermetic HF fixture network-off by default (#2518) (#2525) (48ac10b)
- ci: recover full-ci gate from cancelled duplicate runs (#2560) (2c15fab)
- test(mac): prove the deferred telemetry consent boundary (#2424) (05b896e)
- perf(qwen4): vectorize long-context QSA mask construction (#2533) (4219178)
- feat: cached Wan checkpoints pinned by WAN_REVISIONS count as runnable (#2406 part B) (#2425) (71765d0)
- fix(mac): bound hung Desktop test suite to 2 min + upload sample artifact (#2488) (#2526) (08491fc)
- ci(release): promote exact pre-tag desktop artifacts (#2530) (d03cec8)
- fix(installer): recommend a fast first-chat model (#2426) (d595f23)
- ci(release): preflight pinned sidecar snapshots (#2529) (71693b7)
- fix(mac): make the server log drawer closable (#2435) (deb10ab)
- fix(mac): make serving-lane photo hints name the right remedy (#2514 follow-up) (#2523) (e2c7f6d)
- fix(mac): preserve active work across model switches (#2430) (fed94eb)
- docs(benchmarks): Qwen3.8-Flash-Next-4bit sampled evals vs 27B-4bit (identical harness) (#2528) (df24795)
- ci: keep unpromoted full gates pending (#2517) (d7f1c53)
- feat(ci): train_gates.sh reproduces the hosted gate matrix locally + drift test (#2487) (#2506) (2a9ed0f)
- fix(mac): map the serving-lane reasons the engine actually emits (#2514) (83aa8b8)
- docs: review cap back to 20 rounds; reviewers must not expand PR scope (#2516) (4181499)
- fix(mac): align onboarding admission with the curated-pick predicate so a recommended model is never a dead-end (#2505) (#2512) (e91b2da)
- ci(release): required bump-PR guard + dispatch-bound release preflight; fix #2491 (#2511) (436a7f6)
- tests: hermetic HF cache/env fixtures + declared lane dep extras; fix #2445/#2446 (#2508) (c8ee8ce)
- feat(pr): contract-field template, pr_validate exact merge-base, body-only precheck (#2507) (205ac98)
- fix: keep vision extra on the validated runtime (#2501) (3e6afa1)
- docs: publish Qwen3.8 Flash-Next M3 Ultra evidence (#2504) (c9fc2e6)
- test(mac): harden desktop tests for 0.13.2 (#2480 RAM-independent re-enable + #2481 flaky fix) (#2500) (9456f54)
- feat(cli): cheetah launch banner (interactive only) (#2485) (567e9dd)
- ci: add auto-release dry run (#2503) (5b6841c)
Community contributors
- @osdodo — fix(mac): allow deleting generated images
- @guo — fix(mac): make the server log drawer closable
- @Jevin-F — fix(mac): map the serving-lane reasons the engine actually emits
- @guo — Fix Parakeet v3 language metadata
Install: brew upgrade rapid-mlx or pip install -U rapid-mlx==0.13.2-rc1 (or just rapid-mlx upgrade).