# Changelog

## Unreleased

### API cleanup

- moved vector-level operations to top-level exports: `compose_vectors(...)`, `cosine_similarity(...)`, `l2_distance(...)`, and `l2_normalize(...)`
- removed `IdentifierEncoder.compose_vectors(...)` and `IdentifierEncoder.cosine_similarity(...)` so `IdentifierEncoder` stays focused on text encoding and explanation
- made `compose_vectors(...)` infer vector dimension from the first input vector and require `dim=` only when composing an empty list
- added public utility exports `available_profiles()` and `normalize_text(...)`

### Docs and examples

- updated examples, tests, and README snippets to use the new free-function API
- aligned the design docs with the new public surface and the new `l2_distance(...)` helper
