v1.4.0
What's Changed
- 77f30e9 Merge feat/v1.4.0: implement 14 open issues (#167-#183) with full tests
- 3dde874 test+docs: align --retry 0 test with #177 throw behavior; document --top-p (#168)
- e1e4ae8 feat(cli): add 'apfel tag' subcommand backed by the contentTagging model (#170)
- 0c2d047 feat(server): prewarm model at startup and report "prewarmed" on /health (#169)
- e9128ee feat(server): native response_format json_schema via DynamicGenerationSchema (#167)
- 25f0a0c feat(sampling): honor top_p (nucleus) and make temperature:0 deterministic via .greedy (#168)
- b6f3dd2 fix(summarizer): bound summary tokens and verify assembled transcript fits budget (#175)
- 516dfc2 fix(server): count pre-refusal streamed content in completion_tokens (#179)
- 31ca6cb fix(stream): print streamed output once across retries (#182)
- 4ebbf03 fix(tools): string-aware brace scan + bounded CLI re-detection (#178)
- 06fff63 fix(server): fallback token counter counts tool definitions and tool-call args (#176)
- b1b1010 fix(core): unknown GenerationError case classifies to .unknown, not a locale keyword guess (#181)
- fde050a fix(core): SchemaParser throws on non-dictionary property schema instead of silently dropping it (#180)
- 0a58b08 fix(cli): env vars and --retry enforce the same validation as their flags (#177)
- 03c7eac fix(core): JSONFenceStripper.strip returns trimmed content when no fence present (#183)
- 8ff8e2d test(tdd): add RED tests for all 14 open tickets (no implementation)
- 7bd9f80 fix(nixpkgs): advance one bump PR instead of piling up duplicates
- 44d6bde docs(readme): document model knowledge-cutoff and current-date limits (#158)
Install: brew install apfel
Upgrade: brew upgrade apfel