What's Changed
- README: What's new for 0.2.22 (flash-next:64gb on a 64 GB Mac) by @alisher-amantay in #729
- Qwen3.5: an MLX pack's own MTP head (language_model.mtp.*, Jundot's oQ -mtp packs) drafts instead of plain decoding: 27B oQ4e 16.1 -> 37.1 tok/s on an M5 Pro, the same greedy text by @fearampgreed in #728
- kapitsa claude|codex|opencode|pi --help: drop a stray "a" before "the model's own context" by @alisher-amantay in #737
- Splash backend 1/6: native engine protocol v11 client codec, checked against Splash's own bytes (CPU only) by @alisher-amantay in #738
- Splash backend 2/6: child-process runtime for splash serve-native, tested against a fake engine (CPU only) by @alisher-amantay in #739
- tools: the generator behind tools/splash_protocol_golden.h — Splash 1.4.0's own protocol.py writes those bytes, and --check says whether the header is still them by @alisher-amantay in #748
- Splash backend 3/6: kapitsa serve --engine splash, token-identical to plain Splash on 3 requests (16 GiB expert cache) by @alisher-amantay in #740
- Splash backend 4/6: find Splash's binary and model folder when the flags are not given (CPU only) by @alisher-amantay in #741
- Splash backend 5/6: docs and A/B, token-id tap and tokenizer tools against plain Splash (identical ids on 3 requests) by @alisher-amantay in #742
- bench: Flash-Next Q2_0 on M5 Pro 48 GB, Kapitsa+Splash vs Splash vs native vs llama.cpp (not verified on other Macs) by @alisher-amantay in #751
- Splash backend 6/6: client history as is, client cache_salt honoured, opt-in conversation salt and persistent cache, memory plan, CI (Not verified on a GPU: salt, cache, memory plan; turn 2 is Splash's cache, see #751) by @alisher-amantay in #743
- Splash engine: dead engine is 503 on all routes, Splash sampling defaults on messages/responses, Splash 1.4.0 seed rule. Not verified on a GPU. Fixes #754 by @alisher-amantay in #755
- serve --engine splash: --splash-model takes a model name, no flag runs the most recent model, remembers the last run, --check by @alisher-amantay in #746
- docs: Splash's engine behind Kapitsa's server (serve --engine splash, --check, memory plan) by @alisher-amantay in #750
- Expert-store auto-size: the avail guard reserves the conversations' KV caches (the plan's min(context, 32K) positions times its slots; NI_EXPERT_KV_POS overrides; Not verified on a GPU) by @alisher-amantay in #620
- Drain expert-cache workers before closing readers. Not verified on a GPU by @alisher-amantay in #704
- Don't detach the ANE compile: join it before the next compile or at teardown. Not verified on a GPU by @alisher-amantay in #706
- bench: correct Kapitsa prefill at 1K-32K in the Flash-Next SSD results by @alisher-amantay in #462
- execution_session_test: name each sub-test on stderr so a CI hang shows where (diagnostics only, no fix) by @alisher-amantay in #749
- splash --check: delete the unreachable 'e.g. kapitsa serve ... --splash-model' hint (-5 lines, no behaviour change) by @alisher-amantay in #763
- Splash engine: a seed that is not a 64-bit integer is Splash's 400, a test for the engine dying mid-request, AGENTS.md lists splash_discover_test and splash_plan_test (Not verified on a GPU) by @alisher-amantay in #759
- Not verified on a GPU: quote only the numbers a record holds (README; the Splash identity run names no commit) by @alisher-amantay in #762
- chat page: budget the reply by the model's context, not the API's 16384 default (thinking no longer eaten) by @nocmt in #703
- GPU lock: every tool reads NI_LOCK_HELD, as AGENTS.md says (one deadlock fixed) by @nocmt in #643
- CLI: bad numbers for doctor and import flags are usage errors, not aborts; pull/rm stop naming a --model flag by @alisher-amantay in #744
- bench/community: Qwen3.8-27B 4bit on Mac17,8 row from PR #760 with RESULTS.md by @alisher-amantay in #767
- bench/community: Qwen3.8-Flash-Next 180B-A7B 64gb on Mac17,8 row from PR #761 with RESULTS.md by @alisher-amantay in #769
- README: Flash-Next Q2_0 on the M5 Pro (32 of 38 pairs), What's new for Splash's engine and SSD offloading (docs only) by @alisher-amantay in #768
- Docs and nits: NI_PREFILL_GROUP comment, doctor expert_store JSON fields, BENCH_GPU_LOCK row, test_server section 10 guard (not verified on a GPU) by @alisher-amantay in #771
- tools/convert_clover.py: DiffuSpace's Clover-35B-A3B checkpoint into a 4-bit Kapitsa pack (the 35B's names and recipe; not used yet) by @fearampgreed in #774
- Clover kernels: the denoising pass's DeltaNet mixer, expert coreset, pick and bidirectional block attention, checked against the reference (not used yet) by @fearampgreed in #773
- Clover-35B-A3B: run DiffuSpace's block-diffusion MoE: 319 tok/s decode on the M5 Max with the 35B's drafter, self-speculative 214 without by @fearampgreed in #776
- Kapitsa 0.2.24: sets the version in CMakeLists.txt, the KAPITSA_VERSION fallbacks in src/, install.sh's example and packaging/homebrew/kapitsa.rb, as #732 did for 0.2.23. The tag v0.2.24 goes on the merge commit. by @fearampgreed in #778
Full Changelog: v0.2.23...v0.2.24