.vbw-planning/milestones/polish-and-reliability/ROADMAP.md
Goal: Fix three independent backend issues: bot-blocked feeds due to User-Agent, health check not updating status, and overly aggressive scrape limiting.
Requirements:
Success Criteria:
Goal: Automatically fetch and store source favicons using Active Storage, displayed in the UI next to source names.
Requirements:
Success Criteria:
Goal: Replace uncapped toast notification stacking with a max-visible cap and "+N more" hover-to-expand pattern for cleaner UX during bulk operations.
Requirements:
Success Criteria:
Goal: Fix five independent UI/UX bugs: spurious OPML import warning, toast notifications covering nav, dashboard table column misalignment, source deletion 500 error, and published column always showing "Unpublished".
Requirements:
Success Criteria:
Goal: Add pagination and column filtering to sources index, per-source scraping rate limit with time-based throttling, and word count metrics for items and sources.
Requirements:
Success Criteria:
Goal: Fix three compounding bugs causing "overdue" jobs on dashboards with hundreds of sources: silent error swallowing in fetch status transitions, missing scheduling jitter/stagger creating thundering herd effects, and hardcoded constants that can't be tuned by host apps. Optimize all defaults for a 1-CPU/2GB server while exposing configuration hooks for scaling up.
Requirements:
update_source_state! -- only swallow broadcast errors, let DB update failures propagateensure block in FetchRunner#run to guarantee fetch_status resets from "fetching" on any exit pathFollowUpHandler#call so scrape enqueue failures don't block mark_complete!next_fetch_at across sources during OPML import instead of all-NULL (immediately due)DEFAULT_BATCH_SIZE configurable via FetchingSettings (lower default from 100 to 25 for small servers)STALE_QUEUE_TIMEOUT configurable (lower default from 10 to 5 minutes for faster recovery)JITTER_PERCENT configurable via FetchingSettings (keep default 0.1, allow host apps to increase)config.maintenance_queue_name setting following existing queue name patternSuccess Criteria:
config.maintenance_queue_name setting exists with sensible default| Phase | Status | Plans | Completed |
|---|---|---|---|
| 1. Backend Fixes | Complete | 3 | 3 |
| 2. Favicon Support | Complete | 3 | 3 |
| 3. Toast Stacking | Complete | 1 | 1 |
| 4. Bug Fixes & Polish | Complete | 3 | 3 |
| 5. Source Enhancements | Complete | 3 | 3 |
| 6. Fetch Throughput & Small Server Defaults | Complete | 4 | 4 |