RELEASE_NOTES.md 3.2 KB

news-mcp release notes

v0.3.0 — concurrent polling, enrichment retry, all-topics default

Highlights

  • Async concurrent RSS fetching — all feeds fetched in parallel with asyncio.gather + httpx, bounded by semaphore (default 10 concurrent). Previously sequential: ~40 feeds × 2-5s each = minutes. Now ~10 at a time.
  • Concurrent Ollama embeddings — embedding vectors for all articles pre-computed in parallel before the clustering loop (bounded by semaphore, default 4). Previously one-by-one during clustering.
  • Concurrent LLM enrichment — entity extraction / topic classification / sentiment calls run concurrently across all clusters, bounded by per-provider semaphore:
    • openrouter: 2 free tier
    • openai: 5
    • groq: 8
    • Override via NEWS_LLM_CONCURRENCY_<PROVIDER> env var
  • Per-cluster retry with backoff — failed LLM calls retry up to 3 times (2s, 4s, 8s backoff) before marking the cluster as failed. Failed clusters are automatically retried on the next polling cycle.
  • Cross-cycle failure recoveryget_failed_enrichment_clusters() queries the DB for clusters with enrichment_failed_at set but below the retry threshold, so transient failures self-heal.
  • LLM provider retries_call_groq and _call_openai now have the same retry logic as _call_openrouter (2 retries, exponential backoff on 429/500/502/503, empty response handling).
  • get_latest_events() default changed — omitting topic now returns clusters from all topics instead of defaulting to "crypto". Pass topic="crypto" (or macro/regulation/ai/other) to filter.
  • Configuration — all concurrency limits configurable via env vars; see config.py for NEWS_RSS_MAX_CONCURRENCY, NEWS_OLLAMA_MAX_CONCURRENCY, NEWS_LLM_CONCURRENCY_<PROVIDER>.

Migration notes

  • No database schema changes.
  • If you relied on get_latest_events() without a topic argument returning only crypto clusters, pass topic="crypto" explicitly.
  • Concurrency defaults are conservative for free-rate-limit providers. Tune up via env vars if you have paid plans.

v0.2.0 — embedding-aware clustering and richer agent tools

Highlights

  • Optional Ollama embedding path for clustering (NEWS_EMBEDDINGS_ENABLED=true)
  • Configurable Ollama base URL and embedding model
  • Tunable embedding similarity threshold (NEWS_EMBEDDING_SIMILARITY_THRESHOLD)
  • New agent tool: get_related_entities(subject, timeframe, limit)
  • Optional article payloads for get_latest_events, get_events_for_entity, and get_event_summary
  • Improved emerging-topic scoring with co-occurrence and importance weighting
  • Blacklist enforcement back-clean script for stored clusters
  • Embedding backfill script for older clusters
  • Embedding similarity analysis script for threshold tuning
  • Embedding-based merge script with dry-run and wet modes
  • Article dedup cleanup for repeated article variants inside clusters

Notes

  • Ollama embeddings are tried first when enabled; heuristic clustering remains the fallback.
  • The merge script is intentionally destructive and should be preceded by a dry run.
  • The article dedup cleanup script is safe to run after ingestion or on the historical dataset.