What's Changed
- content(site): publish the v0.9.0 record and refresh the competitor prose by @magicnight in #118
- Move the controlled MLX fork to mlx-swift 0.32.3 (core v0.32.2) by @magicnight in #120
- docs(design): Foundation Models integration design by @magicnight in #121
- docs: make the README roadmap the single source of truth by @magicnight in #122
- fix(cache): tear the prompt-cache trie down iteratively by @magicnight in #126
- fix(server): structured output on thinking models by @magicnight in #125
- build(engine): adopt swift-jinja 2.4+ and retire the Seed-OSS and Command R7B template overrides by @magicnight in #123
- feat(server): honor stream_options.include_usage and report prompt-cache hits in usage by @magicnight in #124
- feat(constraint): nested objects, arrays, $ref and const in response_format schemas by @magicnight in #127
- fix(constraint): withhold whitespace once a constrained decode starts spinning on it by @magicnight in #128
- feat(rerank): run /v1/rerank on mlx-swift-lm's MLXRerankers by @magicnight in #129
- fix(detect): classify sequence-classification heads by what MLXRerankers can score, never as embedders by @magicnight in #132
- fix(server): release the resident reranker or embedder before loading its replacement, then drain MLX's cache by @magicnight in #133
- fix(audio): take the generation lock before loading, run on the model this request loaded by @magicnight in #134
- feat(constraint): any string as a key or enum value, any type at the schema root by @magicnight in #137
- chore(ci): run the CI pipeline locally with scripts/ci-local.sh by @magicnight in #138
- feat(constraint): minimum and maximum on numbers and integers in a response_format schema by @magicnight in #139
- fix(engine): hand a model's memory back when it is unloaded by @magicnight in #140
- fix(audio): keep audio downloads in the app's cache by @magicnight in #141
- feat(server): put the reranker and the embedder in the pool's budget by @magicnight in #144
- fix(engine): record a response that ended on EOS under a key that names the stop token by @magicnight in #145
- fix(engine): drain a cold auxiliary or speech load that fails after allocating by @magicnight in #146
- content(site): re-verify competitors and facts for the freshness guard by @magicnight in #147
- chore(audio): move the mlx-audio-swift fork pin onto upstream v0.1.5 by @magicnight in #148
- build(app): commit the workspace lockfile and hold every root to MacMLXCore's graph by @magicnight in #150
- chore(audio): read the whole repository listing on the fork, swift-huggingface to 0.13.0 by @magicnight in #151
- chore(deps): Hummingbird 2.28.0 and Sparkle 2.10.1 by @magicnight in #152
- fix(library): stop the Hugging Face search from freezing the app (#143) by @magicnight in #153
- fix(library): keep Hugging Face sizes across launches, and only when they are whole by @magicnight in #154
- perf(library): size Hugging Face results from the blobs listing by @magicnight in #155
- chore(release): v0.10.0, with three more MLX fixes and a corrected Gemma 2 by @magicnight in #156
Full Changelog: v0.9.0...v0.10.0