v0.3.0 — generic-core refactor + named profiles
Why
The original library framed itself as a Norwegian-narrative tool, which limited adoption even though the engine was already generic. v0.3 keeps the engine neutral and moves opinionated configuration into a separate Profile registry, so callers can re-opt-in to the previous defaults with one named argument instead of having them forced.
Breaking (tiny)
Only two defaults flip:
Compressor(source_lang=...):\"no\"→\"en\"Compressor(schema=...):\"narrative\"→\"qa\"
Existing users have two clean migration paths:
```python
v0.2 implicit defaults — no longer the same in v0.3
Compressor()
v0.3 equivalent 1: name the profile
Compressor.from_profile("narrative-no")
v0.3 equivalent 2: pass the old kwargs explicitly
Compressor(source_lang="no", schema="narrative")
```
Highlights
- Named profiles: nine bundled (`rag-en`, `qa-en`, `narrative-en`, `interview-en`, `dialogue-en`, `news-en`, `long-en`, `narrative-no`, `rag-no`). `register_profile()` is public — define your own.
- **`Compressor.from_profile(name, overrides)` classmethod for one-line setup.
- 12-language stopword bundle: en, no, de, fr, es, it, pt, nl, sv, da, fi, pl.
- CLI: `narratoflow profiles` and `narratoflow schemas` list commands; `narratoflow compress --profile ` plus per-call overrides.
Tests
42 passing (was 32). New `tests/test_profiles.py` covers registry, overrides, custom registration, default genericity.
Install
```bash
pip install narratoflow==0.3.0
```
Full notes: see CHANGELOG.md.