| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| apfel-0.9.17-arm64-macos.tar.gz | 2026-04-12 | 5.4 MB | |
| README.md | 2026-04-12 | 1.5 kB | |
| v0.9.17 source code.tar.gz | 2026-04-12 | 1.2 MB | |
| v0.9.17 source code.zip | 2026-04-12 | 1.3 MB | |
| Totals: 4 Items | 7.9 MB | 0 | |
What's new
OpenAPI conformance tests
8 new integration tests that validate apfel's HTTP responses against the official OpenAI API spec (vendored from openai/openai-openapi). Uses openapi-core for runtime schema validation — no manual schema maintenance. Covers: non-streaming completions, streaming chunks, models list, tool-call responses, error responses, and JSON mode.
Fixed: missing nullable fields in API responses
The conformance tests immediately caught 3 spec-required fields apfel was omitting:
choices[].logprobs: null— OpenAI spec requires it even when not populatedmessage.refusal: null— OpenAI spec requires it in all assistant messagesmessage.content: null— OpenAI spec requires it even in tool-call responses where content is absent
These fields are now always emitted as null via custom Swift encode(to:) implementations that call encodeNil explicitly (Swift's synthesized Encodable omits nil optionals by default).
README: "The free AI already on your Mac."
The HN-winning, landing-page-proven framing is now the canonical opener in the README, the GitHub repo description, and CLAUDE.md. Also restored the full Demos section, rich MCP walkthrough, and OpenAI API compatibility table that were lost in the previous slim pass. New "The apfel tree" section listing the full ecosystem. #agentswelcome badge with probot logo.
Stats
- 362 unit + 216 integration = 578 tests, all green
- 0 regressions