# 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 - **Goal**: Enable rich auto-complete and search suggestion dropdown as the user types in the global search bar. - **Scope**: - Auto-suggest matches across article titles, feed names, author tags, and category labels. - Keyboard navigation within search dropdown (`ArrowDown`, `ArrowUp`, `Enter` to jump directly to article or feed). - Search history / recent queries quick access. --- ## 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 Scraping / Upload - **Goal**: Enhance visual recognition by displaying brand icons next to each feed. - **Scope**: - **Auto-Scraper**: Automatically fetch and cache `favicon.ico`, ``, or `` from the feed's website root during initial subscription. - **Manual Customization**: Allow uploading or specifying a custom icon URL in `Settings > Subscriptions > Edit Feed`. --- ## 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.