github Arthur-Ficial/apfel v1.7.0

latest releases: v1.9.1, v1.9.0, v1.8.4...
one month ago

What's Changed

  • 4d39f96 fix(release): sign+notarize before the release commit/tag; add missing #212 changelog entry
  • 6048860 style: replace em dashes with hyphens in this cycle's added content
  • 9f01a3b docs(release): resync test counts and release steps with reality (#270)
  • 63a288e docs(help): sync --help ENVIRONMENT with the man page and parser (#257)
  • cb18fb9 docs: fix broken relative link in tool-calling guide (#267)
  • 66111b6 build(release): Developer ID sign + notarize the tarball, ship a checksum asset (#226)
  • 97f29a0 docs(changelog): enforce non-empty [Unreleased] before stamping (#263)
  • be3ebc2 ci(release): delete stale workflow_dispatch release path (#225)
  • a1fd431 fix(release): select previous tag with grep -Fxv, not substring grep -v (#269)
  • 7fb683c test(integration): fail release qualification on skips instead of passing green (#227)
  • 14bfaba ci: exercise the HTTP server in per-PR CI with model-free server suites (#261)
  • a56108d docs(ci): correct "GitHub runners are Intel" to arm64 VMs without Apple Intelligence (#262)
  • 9a10e7d ci: select model-free tests by marker, not a brittle -k allowlist (#266)
  • d2aebf9 test(perf): de-flake speedup gates via median of repeated runs (#264)
  • 59bc65e test(integration): retire no-op test_175, fix stale RedTDD headers + empty assert (#265)
  • e0a578b test(scripts): delete stale orphan Tests/integration/run_tests.sh (#268)
  • 13a0e97 docs(cli-reference): move Shell Completions below Examples By Flag
  • bcbdaaa feat(cli): shell completions subcommand and generated scripts (#259)
  • d18e230 feat(chat): opt-in persistent history via APFEL_HISTFILE (#259)
  • ec28fbc feat(cli): trailing newline on JSON output (#259)
  • d8d8b0a fix(update): derive brew prefix from binary path, not hardcoded (#260)
  • 2c96483 fix(chat): setlocale(LC_CTYPE) so libedit edits non-ASCII by character (#256)
  • 28711aa fix(chat): restore terminal on Ctrl-C and document exit 130 (#251)
  • fcbdc10 fix(chat): context-rotation failure exits nonzero, not 0 (#252)
  • f42e85a fix(cli): usage on error paths goes to stderr, not stdout (#250)
  • fd9c481 fix(output): key stderr color off stderr's TTY, not stdout's (#249)
  • d8ec88d fix(output): NO_COLOR only disables color when non-empty (#258)
  • c02115c fix(cli): route the no-args pipe through parse() so env vars apply (#222)
  • 99c7597 fix(args): warn when a known flag is swallowed into the prompt tail (#255)
  • 51b501d fix(env): warn on invalid APFEL_* env values instead of silently ignoring (#254)
  • b2e89f7 fix(args): stop --retry from swallowing a numeric first prompt word (#253)
  • 2fb42cb fix(cli): show help for demos --help instead of writing files (#248)
  • 1adfd5c fix(security): validate the Host header to block DNS rebinding (#230)
  • 0301f85 fix(security): scrub the environment of local MCP subprocesses (#229)
  • 7da9bf4 feat(security): warn loudly on non-loopback bind without a token (#228)
  • 2f8582b fix(security): fire the loud origin-check warning whenever origin validation is off (#232)
  • 845ab14 fix(security): constant-time bearer token comparison (#231)
  • 5948dbd fix(server): bounded re-detection loop for MCP auto-execute path (#240)
  • 8916a3c fix(mcp): truncate tool results to the token budget before re-prompt (#221)
  • 05936c6 fix(mcp): feed isError tool results back to the model instead of HTTP 500 (#220)
  • 2306728 fix(mcp): warn and dedupe on tool-name collisions across --mcp servers (#239)
  • 32e4edf fix(toolcall): synthesize an id for tool calls missing "id" (#244)
  • c38223c ci(api): allow additive enum cases in the ApfelCore breakage gate; document enum evolution in STABILITY.md
  • 2ffe6eb fix(mcp): serialize the full send+receive exchange per local MCP connection (#218)
  • f7573be fix(mcp): correlate JSON-RPC responses by id - notifications no longer desync the connection (#217)
  • e19584c fix(mcp): parseToolCallResponse accepts empty/non-text/structuredContent results and keeps all text blocks (#242)
  • 4b2e343 fix(mcp): malformed tool-call arguments throw a typed error instead of silently becoming {} (#241)
  • 8d40ebc chore: untrack internal .superpowers working notes
  • b34571c fix(mcp): await MCP shutdown before process exit instead of fire-and-forget (#246)
  • df5c0d6 fix(mcp): deregister and reap a timed-out MCP connection (#216)
  • 00e4a5b fix(mcp): writing to a crashed MCP server's stdin no longer kills apfel (#215)
  • bbcee11 test(integration): update stale old-behavior assertions after #236/#224; de-flake #243 fractional check
  • 7bee8b9 perf(schema): make SchemaConversionCache an LRU that evicts one entry (#247)
  • 0c1de28 fix(schema): split IR integer/number so json_schema "number" allows fractions (#243)
  • 25aae7f fix(schema): parse nullable anyOf/oneOf/type-arrays; throw on other unions (#219)
  • 55aefb9 fix(server): stop streamed tool calls leaking as content; split finish chunk (#224)
  • 92156bb fix(server): fence-strip json_object output on the streaming SSE path (#223)
  • 2efc149 fix(sse): usage:null on non-final chunks with include_usage; reject invalid tool_choice (#238)
  • 02d322c fix(server): unknown x_context_strategy returns 400 not silent fallback (#237)
  • 3a11352 fix(server): error object always emits param/code; unknown model -> 404 (#236)
  • 2d48f39 fix(validator): reject out-of-range top_p and temperature > 2 with 400 (#235)
  • efba474 fix(server): oversized request body returns 413 with error object, CORS, log (#234)
  • 26428f2 fix(server): empty/null last message content returns 400 not 500 (#233)
  • 5310075 fix(server): release concurrency permit + active_requests on early-failing streaming requests (#213)
  • cc02d5f fix(concurrency): semaphore wait timeout no longer aborts the process with SIGABRT (#214)
  • 061a7e5 fix(server): validate negative seed to prevent remote DoS crash (#212) (#271)
  • e46a1f4 feat(-f): on-device PDF, image (OCR + understanding), and piped-file extraction via lesbar (#211)
  • de10a76 build(deps): bump actions/checkout from 6 to 7 (#208)
  • 7e56f5f docs(changelog): populate the 1.6.1 section
  • 5e66449 docs(claude): sync version to 1.6.1 and test counts to 687 unit + 301 integration

Install: brew install apfel
Upgrade: brew upgrade apfel

Don't miss a new apfel release

NewReleases is sending notifications on new releases.