What's Changed
Features
- OpenAI-compatible embeddings — set
relevance.embedding_provider: "openai"to use any/v1/embeddingsendpoint alongside your existingllm.openai_base_url/llm.openai_api_key. Selectable from Admin → Digest without a restart. - OpenAI-compatible reranking — when
llm.providerisopenaiand no OpenRouter key is present, the LLM reranker now routes through your custom endpoint instead of falling back to Ollama. - Configurable digest output language — new
digest_languagesetting accepts any ISO 639-1 code (fr,de,es, …) or"source"to auto-detect and match each article's language. Defaultenpreserves existing behaviour. Configurable in Admin → Digest under Language preferences without a restart.
Fixes
schedule.timezonevalidation error —schedulewas typed asdict[str, list[str]], causing a Pydantic error whentimezone: "UTC"was set inconfig.yaml. Fixed by widening todict[str, Any]. The Admin → Schedule timezone dropdown is unaffected; this only hit users setting the key inconfig.yamlor a mounted Docker config file.- Saved-for-later engagement signals retained after queue removal — items removed from the read-later queue no longer lose their implicit positive signal in the preference engine.
Other
- Added
TZ=UTCtodocker-compose.ymlso container clock matches the default schedule timezone.
Commits Since 2.7.1
f213d52feat: add openai-compat embeddings/reranking and configurable digest language4a92e23fix(learning): retain saved-for-later engagement signals after queue removal