Skip to content

v2.1.0

Choose a tag to compare

@lfnovo lfnovo released this 06 Sep 14:56
· 8 commits to main since this release
e573f3c

Content Core adds local HTML ingestion and makes engine and configuration failures explicit across the library, CLI and MCP.

New capabilities

  • Extract local HTML as Markdown, preserving the document title and handling BOMs and legacy encodings (#59, #66).
  • Import the exception taxonomy directly from content_core (#52). ContentCoreError catches typed failures; some paths still raise untyped exceptions pending #60.

Behavior changes and fixes

  • Explicit Docling selection now fails clearly when the extra is unavailable. Install with pip install "content-core[docling]", or select simple; auto retains fallback (#50).
  • Engine names are validated at every configuration entry point. Invalid boolean tokens are rejected before the config file is written (#51).
  • Importing the library preserves the host application's logging. Library users can opt in with logger.enable("content_core"); CLI/MCP continue to configure stderr logging (#47).
  • MCP reports the Content Core version during initialization (#56).
  • PyPI uploads use the exact artifacts validated by the publishing workflow's Package job (#57).
  • Publishing a GitHub Release now starts the PyPI upload. Tags and draft releases can be prepared first; make release publishes the reviewed draft. The packaging gate verifies the release tag against the package version (#93).
  • Removed unused asciidoc, the internal Processor Protocol and three unused internal exception classes (#58, #53, #52). Direct imports of the removed internal names must be updated.
  • Documented Firecrawl-compatible backends through FIRECRAWL_API_URL (#86).

Validation

409 unit and integration tests passed on the final commit. CI passed on Python 3.10, 3.11 and 3.12. The built wheel passed isolated library, CLI and real MCP initialization smokes; runtime assets and versions were checked, and the docling, crawl4ai and langchain extras installed successfully.

Live checks were completed before the final workflow/documentation change; the final runtime source, tests and dependency files are byte-identical. Live URL extraction passed with simple, Firecrawl, Jina and Crawl4AI engines, along with YouTube transcript extraction and remote PDF retrieval. Explicit Docling PDF inference passed. An official MCP SDK client successfully initialized the installed wheel, listed its tools and extracted a local HTML document. OpenAI Whisper transcription passed for real MP3 and MP4 fixtures. A real gpt-4o-mini summary passed through the installed-wheel MCP server, with assertions that key source facts were preserved. Initial missing-browser and account-credit failures were resolved before the targeted reruns passed. Dependabot alerts are unavailable because they are disabled for this repository. The release workflow builds its own artifacts; published files will be checked separately against the recorded hashes and tested from PyPI.

Thanks

Thank you to everyone who reported issues and tested the changes.

Install: pip install --upgrade content-core==2.1.0

Run without installation: uvx --from content-core==2.1.0 content-core --help

With Docling: pip install --upgrade "content-core[docling]==2.1.0"

Full changelog.