Skip to content

v0.13.2-rc1

Pre-release
Pre-release

Choose a tag to compare

@raullenchai raullenchai released this 30 Aug 19:48
8c47630

What'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 offlinerapid-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-4bit below 16 GB and
    qwen3.5-4b-4bit on 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-stack tcp46 listeners 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 --mllm selection 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: 0 means the server default, request-local
    chat_template_kwargs reach 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 --bits and --format pulls 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
    serve command 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 rcN below the matching final and now
    cover pull, ps, info, bench, and doctor; 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

Install: brew upgrade rapid-mlx or pip install -U rapid-mlx==0.13.2-rc1 (or just rapid-mlx upgrade).