Changelog¶
All notable changes to strutex will be documented here.
v0.3.0 (December 23, 2025)¶
🚀 New Features¶
Plugin System v2
- Lazy Loading: Plugins are only imported when first used via
PluginRegistry.get(), improving startup time - Entry Points: Register plugins via
pyproject.tomlentry points (recommended over@registerdecorator) - API Versioning: All plugins have
strutex_plugin_version = "1.0"attribute for compatibility checks - Priority Ordering: Plugins declare
priority(0-100) for waterfall ordering; higher = preferred - Cost Hints: Plugins declare
costfor optimization; lower = cheaper - Health Checks: All base classes have
health_check()classmethod - Protocol Types:
ProviderProtocol,ValidatorProtocol, etc. for mypy-compatible type checking - Discovery Caching: Plugin discovery cached in
~/.cache/strutex/plugins.json, invalidated on pip changes - Sandboxed Probing:
sandbox.pyfor safely probing untrusted plugins in subprocess
CLI Tooling
strutex plugins list— Show all discovered plugins with health statusstrutex plugins list --type provider— Filter by plugin typestrutex plugins list --json— JSON output for scriptingstrutex plugins info <name> --type <type>— Detailed plugin infostrutex plugins refresh— Re-scan entry points and refresh cachestrutex plugins cache— Show/clear discovery cache
Pluggy Hooks
@hookimpldecorator for pipeline extensionstrutex_pre_process— Called before document processingstrutex_post_process— Called after processing, can transform resultsstrutex_on_error— Called on failure for error recovery
Documentation
- Versioned documentation with mike
- Version selector dropdown in docs
- Automated docs deployment via GitHub Actions
- New changelog page
📁 New Files¶
strutex/plugins/protocol.py— Protocol-typed interfacesstrutex/plugins/hooks.py— Pluggy hook specificationsstrutex/plugins/discovery.py— Cached plugin discoverystrutex/plugins/sandbox.py— Subprocess plugin probingstrutex/cli.py— CLI commandstests/test_plugin_contract.py— Contract tests for pluginstests/test_v030_features.py— v0.3.0 feature tests.github/workflows/docs.yml— Automated docs deploymentdocs/changelog.md— This changelogdocs/hooks.md— Hooks system documentationdocs/cli.md— CLI commands documentation
✏️ Updated Files¶
strutex/plugins/registry.py— Complete rewrite for lazy loadingstrutex/plugins/base.py— Added version, priority, cost, health_check to all base classesstrutex/plugins/__init__.py— Export new v2 modulesstrutex/providers/gemini.py— Added v2 attributes, removed deprecated decoratorpyproject.toml— Added pluggy, click, mike; added CLI entry pointmkdocs.yml— Added version selector configdocs/plugins.md— Rewritten for v0.3.0 featuresexamples/plugin_example.py— Updated to showcase v2 features
⚠️ Deprecations¶
@registerdecorator now emitsDeprecationWarning- Use entry points in
pyproject.tomlinstead:
📦 New Dependencies¶
pluggy ^1.5.0— Hook system (battle-tested, from pytest team)click ^8.1.0— CLI frameworkmike ^2.1.0— Documentation versioning (dev dependency)
v0.2.0¶
Features¶
- Plugin registry system with
@registerdecorator - Security plugins:
InputSanitizer,PromptInjectionDetector,OutputValidator - Composable
SecurityChain - Pydantic model support for schemas
- Base classes:
Provider,Extractor,Validator,Postprocessor,SecurityPlugin
v0.1.0¶
Initial Release¶
- Google Gemini provider
- Custom schema types (
Object,String,Number,Array,Boolean) - PDF text extraction with waterfall fallback (pypdf → pdfplumber → pdfminer → OCR)
- Excel/spreadsheet support
- MIME type detection
StructuredPromptfluent builder API