feat(feeds): add curated RSS feed review#25
Open
technowizard wants to merge 18 commits into
Open
Conversation
Add the throwaway RSS review prototype used to settle the source-grouped shelves direction before production implementation.
Add feed subscription and feed item tables, repositories, migrations, and repository tests for the first RSS support slice.
Add guarded feed fetching and RSS/Atom normalization so future ingestion can accept user-provided feed URLs without bypassing Loreo's public HTTP(S) URL safety posture.
Route manual article saves through a reusable link-save service so RSS ingestion can reuse saved links, enqueue extraction only for new links, and reconcile matching staged feed items without changing duplicate URL responses.
Add the service layer for subscribing to feeds and polling existing feeds, including initial staging, auto-save, conditional metadata updates, failure backoff, and feed item retention pruning.
Add the feed poll queue and worker for scheduled and manual feed refreshes, including due-subscription enqueueing, not-yet-due skips, ingestion delegation, and graceful server shutdown registration.
Expose protected feed subscription and item endpoints for adding feeds, refreshing subscriptions, reviewing staged items, and saving or dismissing feed items through the existing ingestion and link-save seams.
Add the typed web API layer, feed query keys, protected route skeleton, and localized copy for the Feeds review surface.
Replace the feeds skeleton with the production review surface: add-feed form, source-grouped shelves, responsive masonry layout, and feed item actions for save, dismiss, and refresh.
Add cursor pagination and per-subscription summaries for scalable feed review, including forward migrations for existing installations and pagination indexes.
Integrate feeds into navigation, add scalable mixed-source review collections, and provide responsive Manage Feeds and Add Feed workflows.
Describe feed review, polling, retention, and self-hosting behavior for the new subscription workflow.
Schedule due-feed scans autonomously, pin validated DNS addresses across redirects, and preserve exact cursor ordering. Keep migration and retention behavior safe for existing installations.
Add confirmed user-scoped feed deletion while preserving saved articles. Simplify management hierarchy, recovery states, image fallbacks, and focus-safe collection virtualization across desktop and mobile.
Rename unpublished migration and journal tag for readable deployment history. Preserve migration ordering and SQL behavior.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds user-curated RSS and Atom subscriptions to Loreo, with a calm review workflow that keeps discovered articles separate from the saved library until the reader acts.
Feeds are a recurring subscription domain rather than one-time imports. New entries stage in Review by default, while optional per-feed Auto-save applies only to entries first discovered after it is enabled. Saving creates or reuses the reader's existing Loreo article and queues extraction without duplicating links.
Architecture
What changed
Key decisions
NOT VALID, enforcing new writes while allowing operators to audit legacy inconsistencies before validation.Verification
Authenticated disposable-account QA covered valid and blocked additions, mixed-source review, 78-79 item pagination, keyboard focus under virtualization, save/dismiss/reconciliation, recurring scheduler execution, failure warnings, desktop/mobile manager history, pending-add locking, publisher images, toggles, and destructive deletion with saved-article preservation.
Operations
Database migrations run at server startup. Migrations 0004 and 0005 use standard index creation and should be applied during a low-traffic maintenance window for large installations.
docs/SELF_HOSTING.mdincludes backup, audit, monitoring, validation, and rollback guidance for migration 0005.