Keep ascii.textfiles.com, annahope.me, and tratt.net active so they'll
be retried each run. Errors are logged but don't block the build.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace feeds.txt, featured_feeds.txt, and quarantine.txt with a single
feeds.toml configuration file that supports:
- Required url field for each feed
- Optional name, home_url overrides
- Optional featured boolean for 50% score boost
- Optional status field (active/quarantine)
- Optional notes field
Add schema validation:
- feeds.schema.json for JSON Schema definition
- .taplo.toml for taplo integration
- .vscode/settings.json for VSCode integration
- CI job to validate feeds.toml with taplo
Update utilities.rs with FeedConfig struct and read_feeds() function
that parses TOML, filters quarantined feeds, and applies featured boost.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add regex patterns to remove problematic HTML elements that were
rendering as raw text in descriptions:
- iframe tags (tracking pixels, embeds)
- noscript tags
- XML namespace divs (Atom spec violation warnings)
- Final pass to catch any remaining HTML tags
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace unwrap() calls with proper error handling using expect(), ?, and graceful fallbacks
- Add shared HTTP client with 30s timeout and User-Agent header
- Move IndexNow API key to CI/CD variable for security
- Cache regex patterns using LazyLock for better performance
- Change function signatures to accept references instead of clones
- Replace println! with proper log:: macros for consistency
- Fix is_valid_url() to use URL parsing instead of HTTP requests
- Remove invalid clippy dev-dependency
- Update dependencies
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>