Files
rsspipe/docs/003_backlog.md
T

7.1 KiB

RSSPipe Backlog Specification (003_backlog.md)

This document records planned features, UX enhancements, and architectural extensions identified during initial testing and validation.


1. Search Box Auto-Complete & Real-Time Suggestions

  • Status: Partially Implemented (Search History Table & Dropdown Active)
  • Implemented:
    • SQLite table search_history (keyword TEXT PRIMARY KEY, last_searched_at DATETIME, search_count INTEGER).
    • Backend endpoints GET /api/search/history, POST /api/search/history, DELETE /api/search/history.
    • Frontend auto-complete dropdown with keyboard navigation (ArrowDown, ArrowUp, Enter), single-item removal, and clear history.
  • Future Extensions:
    • Live fuzzy matching across live article titles, feeds, authors, and category labels alongside search history.

2. Password Management in User Settings

  • Goal: Allow the single-user administrator to update their login credentials directly from Settings > Account & System.
  • Scope:
    • Backend API: PUT /api/auth/password verifying old_password and updating bcrypt hash for new_password.
    • Frontend Modal/Card with confirmation field and clear validation indicators.

3. Comprehensive Keyboard Shortcuts Test Suite

  • Goal: Automated end-to-end and unit testing for all single-key power-user navigation bindings.
  • Scope:
    • j / k: Next / previous article navigation.
    • s: Toggle star.
    • m: Toggle read status.
    • e: Archive / mark read and advance.
    • v: Open original URL in new browser tab.
    • [: Toggle sidebar collapse/expand.
    • r: Trigger feed refresh.
    • a: Open Add Feed modal.
    • 1, 2, 3: Switch views (3-Split, Waterfall, Settings).
    • ?: Open keyboard shortcuts cheatsheet modal.
    • Shift + A: Mark all as read with confirmation.
    • Ensure shortcuts are strictly inhibited when focus is inside text inputs, textareas, or modal forms.

4. Header Brand & Sidebar Toggle Alignment Consistency

  • Goal: Standardize the top header layout across all view modes (3-Split, Waterfall, and Settings).
  • Scope:
    • In 3-Split view, ensure the RSSPipe logo and brand name occupy the consistent leftmost position matching Waterfall and Settings views.
    • Ensure the sidebar toggle icon [ integrates cleanly into the left group or toolbar without disrupting brand alignment.

5. Refresh Button Spinning Micro-Animation

  • Goal: Provide instant visual feedback when a background refresh or manual pull is in progress.
  • Scope:
    • Add smooth CSS keyframe spin animation (@keyframes spin { 100% { transform: rotate(360deg); } }) to the refresh icon when isRefreshing is active.

6. Feed Favicon & Website Icon Integration (Completed)

  • Goal: Enhance visual recognition by displaying colorful website brand icons next to each feed.
  • Scope:
    • Auto-Resolution: Automatically generates and stores high-resolution website favicons (https://www.google.com/s2/favicons?domain=...&sz=64) from the feed's website root during subscription and crawler discovery.
    • Fallback: Gracefully falls back to the clean RSS icon if image loading fails or host is unreachable.
    • Manual Customization: Added full manual customization in Settings > Feeds > Edit Feed with live preview and "Auto-Detect" one-click button.
    • DB Migration & Backfill: Automatically added icon_url column and backfilled all existing feeds.

7. Active Post Reading Persistence on Subscription Switch

  • Goal: Prevent reader disruption when exploring other subscriptions.
  • Scope:
    • When actively reading an article in the right canvas of 3-Split view, clicking a different subscription or category in the left sidebar should update the middle article list without abruptly closing or reloading the active article in the right canvas until a new article is explicitly selected.

8. Unified Feed & Category Tree Hierarchy ("Feeds" Root)

  • Goal: Simplify feed organization into a single clean hierarchy.
  • Scope:
    • Eliminate the artificial separation between "Categorized Feeds" and "Uncategorized Feeds".
    • Present a single unified "Feeds" section where uncategorized feeds reside at the root level alongside collapsible category folders.
    • Drag-and-drop or simple dropdown assignment to move feeds between root and folders.

9. Enhanced Xiaohongshu Masonry Waterfall Experience

  • Goal: Further elevate the card aesthetics and mobile interaction to closely match Xiaohongshu.
  • Scope:
    • Staggered dynamic aspect ratios with prominent media cards.
    • Smooth infinite scroll pagination.
    • Interactive gesture swipe to dismiss the full-screen reader.

10. Beautiful 404 Error Page

  • Goal: Provide a polished, modern, brand-consistent 404 Not Found experience.
  • Scope:
    • Frontend 404 route component with sleek modern aesthetics (glassmorphism/minimal illustration, clear error description, and a "Return to Gateway" action button).
    • Server-side fallback handler returning a clean, branded HTML response for unmatched routes.

11. Multi-Variant Pipeline Enrichments (AI Summary, TTS, Keywords, Audio)

  • Goal: Expand the event-driven rules engine and variant storage system with automated enrichment plugins.
  • Scope:
    • AI Summary Hook: Integrate LLM actions (e.g. OpenAI / Anthropic / Gemini / Ollama) to automatically generate and store concise summaries in entry_variants(key='ai_summary').
    • Keyword & Tag Extraction: Automated extractor storing structured YAML/JSON keyword lists in entry_variants(key='keywords') and entry_variants(key='tags') to enable rule-based chaining.
    • Text-to-Speech (TTS): Synthesize article text to voice audio blobs (.mp3 stored under ./data/blobs/{entry_id}/tts.mp3) with HTTP 206 partial streaming.
    • Podcast TTS & Summary TTS: Convert articles into dual-host conversational podcasts or audio-narrated summaries streamed directly within the reader.

12. Aggregated Shared Posts Dashboard (/shares)

  • Goal: Provide a dedicated gallery view aggregating all publicly shared articles.
  • Scope:
    • Centralized dashboard listing all articles with an active share_uuid.
    • Copy public link, preview shared HTML canvas, revoke share link, and view access stats.

13. Data Retention & Cleanup Policies (Auto-Deletion)

  • Goal: Provide configurable retention rules to prune older or noisy articles and keep SQLite storage compact.
  • Scope:
    • Retention triggers (e.g. delete unstarred articles older than 90 days, or limit feeds to latest 500 posts).
    • Background garbage collection cleaning associated entry_variants and on-disk audio blobs (./data/blobs/{entry_id}/).

14. Outbound Webhook Dispatcher (P4)

  • Goal: Allow rule-triggered notifications and payload delivery to external platforms.
  • Scope:
    • Outbound webhook action in rule engine supporting Telegram, Discord, Slack, and generic JSON HTTP POST.
    • Template engine with interpolation of article variables (title, feed_title, url, published_at, ai_summary, tags).
    • Retry mechanism with exponential backoff on delivery failure.