Changelog

Release notes and upgrade guidance for AbstractCore.

AbstractCore follows Keep a Changelog and Semantic Versioning. For the full history, see CHANGELOG.md.

2.11.2 (2026-02-04)

Added

  • Skim tool benchmarks: added examples/skim_tools_benchmark.py to measure output footprint and latency for skim_websearch/web_search and skim_url/fetch_url.
  • Import-safety test: added a test to ensure import abstractcore does not eagerly import optional deps (requests, bs4, sentence_transformers, pymupdf*, ...).

Changed

  • Skim outputs stay compact: skim_websearch now truncates long titles/snippets to keep tool outputs prompt-friendly by default.
  • Tool guidance for prompted models: tool prompts now render short when_to_use hints for small tool sets and a few high-impact tools (edit/write/execute + web triage tools).
  • Tool examples: globally-capped examples now include skim_websearch/skim_url earlier so models learn the token-efficient web triage workflow.
  • Native tool payload compatibility: native tool schemas no longer include non-standard metadata keys (tags, when_to_use, examples) to avoid strict provider schema validation failures.
  • Docs accuracy: clarified fetch_url behavior for PDFs/binaries and documented the recommended skim_*fetch_* workflow in the docs entry points.

2.11.1 (2026-02-04)

Added

  • Security policy: added SECURITY.md with responsible disclosure guidance.
  • API overview doc: added docs/api.md as a user-facing map of the public Python API.
  • FAQ: added docs/faq.md and linked it from the docs entry points.
  • Events + logging docs: added docs/events.md and docs/structured-logging.md.
  • Skim tools: added skim_url (fast URL triage) and skim_websearch (compact/filtered search) to keep prompts smaller when you only need “what is this about?”.

Changed

  • Install composition (default stays small): docs and packaging emphasize a lightweight core install, with heavy features enabled via explicit extras (tools, media, embeddings, server, provider SDKs).
  • Dependency compatibility: relaxed abstractcore[huggingface] transformers upper bound to <6 so it can co-install with abstractcore[mlx].
  • Documentation polish: refreshed wording and navigation; ensured internal links/anchors resolve across docs.
  • Skim output footprint: tuned skim_url defaults (smaller preview/headings) and made skim_websearch output more compact by default.
  • Web search URLs: web_search now unwraps DuckDuckGo redirect URLs for more readable links and smaller tool outputs.

Fixed

  • Docs accuracy: aligned event fields and examples with the current codebase (events, telemetry, and usage data).
  • Optional imports: made Telegram Bot API tools import-safe when requests is not installed (returns a clear abstractcore[tools] install hint when used).
  • HTML extraction edge cases: improved main-content selection/pruning so fetch_url/skim_url previews don’t get wiped by over-aggressive boilerplate removal on some pages.

2.11.0 (2026-01-28)

Added

  • MLX throughput benchmarking: added examples/mlx_concurrency_benchmark.py to sweep concurrency with continuous batching and generate summary CSVs + PNG plots.

Changed

  • MLX install extras: refreshed/clarified mlx + mlx-bench optional dependencies for Apple Silicon throughput benchmarking.

Fixed

  • Embedding model detection: treat model_type: "embedding" as the canonical signal; added nomic-embed-text-v1.5 and LMStudio alias text-embedding-nomic-embed-text-v1.5@q6_k to the capabilities database.
  • MLX model discovery: MLXProvider.list_available_models() scans LM Studio's local cache (~/.lmstudio/models) and loads from those local directories when present.
  • GPT-OSS (Harmony) on MLX: improved prompt formatting, extracts Harmony transcripts into clean content (stores reasoning in metadata.reasoning), and propagates correct finish_reason (stop/length).

Project docs