Skip to content

Add + Discover Sites feature for iOS#2079

Open
samuelclay wants to merge 9 commits intomainfrom
ios-add-discover-sites
Open

Add + Discover Sites feature for iOS#2079
samuelclay wants to merge 9 commits intomainfrom
ios-add-discover-sites

Conversation

@samuelclay
Copy link
Copy Markdown
Owner

Summary

  • Adds full-page "Add + Discover Sites" view with 8 tabs: Search, Web Feed, Popular, YouTube, Reddit, Newsletters, Podcasts, Google News
  • 17 new SwiftUI files with shared components (feed cards, category/subcategory pills with wrapping flow layout, search bar, tab bar, theme-aware colors)
  • Sidebar integration as new section between Dashboard and Infrequent, with backend endpoints for iOS web feed status polling and Google News categories

Test plan

  • Verify "Add + Discover Sites" appears in sidebar and navigates to discovery view
  • Test all 8 tabs render with correct icons and labels, scroll horizontally on iPhone
  • Search tab: type query → autocomplete results appear; empty state shows trending feeds
  • Popular tab: feeds load with category pills → select category → subcategories appear with counts
  • YouTube/Reddit/Newsletters/Podcasts: search + browse + category filter
  • Google News: topic grid → category → subcategory → subscribe
  • Web Feed: URL input → analyze → variant cards → configure → subscribe
  • Theme switching across Light/Sepia/Medium/Dark
  • Try/Add buttons work correctly (Try loads feed preview, Add opens add site sheet)

Generated with Claude Code

samuelclay and others added 9 commits March 5, 2026 13:11
Adds a full-page discovery experience with 8 tabs (Search, Web Feed,
Popular, YouTube, Reddit, Newsletters, Podcasts, Google News) as a new
sidebar section. Includes category/subcategory filtering with wrapping
flow layout pills, feed cards with Try/Add actions, trending feeds,
autocomplete search, web feed URL analysis with variant selection, and
Google News topic/category subscription.

Backend: Add webfeed status polling endpoint and Google News categories
API for iOS (which can't use WebSocket like web).

iOS: 17 new Swift files under DiscoverSites/ with shared components
(feed cards, category pills, search bar, tab bar, theme colors),
sidebar integration via new NewsBlurTopSectionDiscoverSites enum value,
and UIKit hosting via DiscoverSitesViewController.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…in Discover Sites

- Show trending header with spinner while feeds load on Search tab
- Clear feeds and show progress indicator when switching categories
- Fix URL encoding for categories with ampersands by using URLComponents
- Show globe placeholder for favicons during loading/failure instead of invisible Color.clear

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…icons

- Add segmented grid/list picker to search bar on all Discover tabs
- In list mode, request stories from API and show them under feed cards
- Auto-reload feeds when switching to list mode if stories not yet loaded
- Replace old g_icn_unread/g_icn_focus dots with indicator-unread/indicator-focus icons
- Vertically center new icons with count labels in feed list header

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ng as URL

The server returns favicon as base64-encoded image data, not a URL.
SearchTabView and DiscoverFeedCardView were passing this to AsyncImage
which silently failed, showing globe icons for every feed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use naturalWidth/naturalHeight instead of rendered dimensions and raise
the minimum width threshold to 300px for full-width image display.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a "Go to feed" row to the story settings menu (visible in river/social
views) that navigates directly to the story's feed. Adds a full-screen pan
gesture recognizer for swiping back when in vertical scroll orientation,
since the edge-only gesture conflicts with vertical story scrolling. Also
replaces emoji labels on the scroll orientation toggle with SF Symbol icons.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* main: (51 commits)
  Run isort and black formatting
  Require 2+ user-subscribed feeds for widely_covered classification
  More compare links
  Add bug fixing workflow: write failing test before fixing
  Expand testimonials to 108 cards across 4 rows with real Twitter avatars
  Add Feedbin comparison, Inoreader Alternative pages, and redesign welcome compare section
  Add compare cross-links section and welcome page comparison pills
  Add "People Love NewsBlur" testimonials section with 58 scrolling cards
  Add Plausible analytics, sitemap, SEO meta tags, and comparison/alternative pages
  Polish welcome page real-time stats section typography and spacing
  Redesign forgot password and reset password pages to match static pages
  Add /login, /signup, /forgot-password URL redirects
  Add mongodump timeout, failure email alerts, and backup drive mount script
  Rework welcome background shader with Gaussian wave ridges and additive blending
  Add features, pricing, and comparison static pages with top nav and footer
  Redesign welcome page features section with grouped mosaic layout and FAQ
  Skip LLM calls when API keys are blank or placeholder
  Gate Web Feed subscription to Premium Archive with upgrade banners
  Fix folder operations: case-insensitive dedup, exact name matching, iOS rename
  Add Premium from Trial and Non-Trial charts to Grafana dashboard
  ...
* main: (216 commits)
  Replace ZUNIONSTORE with pipelined ZREVRANGE merges for trending endpoints
  Bump iOS version to 14.2
  Fix recursive iPad sidebar refresh crash
  Eliminate cache TTL pattern from trending feeds Prometheus endpoint
  Fix off-site backups never running on schedule and make script resilient
  Speed up trending Prometheus endpoints by removing top feeds chart and eliminating cache TTL
  Avoid full collection scans in classifier Prometheus by using subtraction
  Replace 25 MongoDB count queries with 6 aggregation pipelines for classifier Prometheus endpoint
  Switch clustering usage tracking from SETs to HyperLogLog
  Add `make enable` to re-enable app servers after a canceled deploy
  Move Google News image prepend from read time to fetch time
  Fix iPad hardware keyboard story navigation
  Fix river pagination drift when stories marked as read between pages
  Add ES query instrumentation and caps to story clustering
  Fix iPad fullscreen overlay story behavior
  Broadcast mini player close to all browser instances via WebSocket
  Fix iPad split view story sidebar behavior
  Include folder/global classifiers in trainer opened from river views
  Prepend discovered story images to imageless stories
  Fix iPad keyboard navigation and sidebar collapse regressions
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant