Skip to content

v0.9.17

Choose a tag to compare

@Arthur-Ficial Arthur-Ficial released this 12 Apr 11:28

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 populated
  • message.refusal: null — OpenAI spec requires it in all assistant messages
  • message.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