Two optional LLM enhancements: link extraction from source pages and article
content extraction. Plan needs revision for Arc<dyn LlmProvider> threading
and <head> HTML preservation before implementation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two-phase pipeline: scrape personalized sources first, classify with LLM,
fall back to web search for gaps. Tasks 1-3 ready, Task 4 needs elaboration.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4 fixes: syntheses list contract alignment (frontend to backend),
admin rate-limits path fix (provider_name not id), SSRF redirect
per-hop validation with attempt.error(), shared test fixtures.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bug fix:
- Per-generation rate limiter was creating a new instance on every check,
making user rate limit overrides non-functional. Fixed by creating the
limiter once at pipeline start and reusing for both passes.
Simplifications:
- Extract spawn_task closure in scrape_articles (deduplicate spawn blocks)
- Use idiomatic if let Ok(...) instead of if let Some(..).ok() in scraper
- Replace manual loop with iterator chain in export_keys handler
- Simplify check_rate_limit to single boolean check
- Simplify handleImport settings merge (spread already provides defaults)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
8 changes covering: settings export/import, dual model selection,
user rate limit overrides, original title preservation, enhanced
broken link detection, deep-link URL enforcement, settings schema
expansion, and empty sections fallback message.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>