Skip to content

feat(feed): reading list widget for the feed widget rail - #6996

Merged
rebelchris merged 4 commits into
mainfrom
feat/feed-widget-reading-list
Oct 22, 2026
Merged

rebelchris merged 4 commits into
mainfrom
feat/feed-widget-reading-list

Conversation

@rebelchris

@rebelchris rebelchris commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Adds the Reading list widget (readingList) to the feed widget rail: the reader's newest unread bookmarks, one row at Small, four at Tall, eight across two columns at Large. Each row links to the post, a footer links to the bookmarks page, and an empty state shows when nothing is left to read.
  • Reuses BOOKMARKS_FEED_QUERY through a new unreadBookmarksQueryOptions creator (graphql/bookmarks.ts), using the API's existing status: UNREAD filter from daily-api#4421. The query gains the $status variable and BookmarkStatus enum, the same lines feat(bookmarks): reader pane, status and grouped filters, read state, archive and notes #6916 adds, so the two will need a small merge.
  • One fetch of eight rows covers every size, so resizing never refetches. It goes through gqlBatchRequest and runs only for a logged-in reader once the widget is on screen. The registry already restricts the kind to logged-in readers.
  • Clicks log postLogEvent with Origin.FeedWidgets and the row index.
  • Behind the existing feed_widgets flag.

Test plan

  • jest src/features/feedWidgets: new ReadingListWidget.spec.tsx covers listing unread bookmarks with their links, the Small row limit, the empty state, and no request when logged out
  • eslint on changed files, typecheck-strict-changed, webapp tsc --noEmit
  • webapp __tests__/BookmarksPage.tsx still passes with the new query variable
  • Preview: add Reading list from the gallery at each size and check that the rows fit the Small cell

🤖 Generated with Claude Code

Preview domain

https://feat-feed-widget-reading-list.preview.app.daily.dev

The reader's newest unread bookmarks as a rail widget: one row at Small,
four at Tall, eight across two columns at Large, each linking to the post,
with a footer link to the bookmarks page and an empty state when nothing
is left to read.

It reuses BOOKMARKS_FEED_QUERY through a new unreadBookmarksQueryOptions
creator, passing the API's existing status: UNREAD filter (daily-api#4421),
so the query gains the $status variable. One fetch of eight serves every
size, so resizing never refetches; it batches with the rail's other
secondary queries and only runs for a logged-in reader once the widget is
on screen. Behind the existing feed_widgets flag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
daily-webapp Ready Ready Preview Oct 22, 2026 9:16am UTC
storybook Ready Ready Preview Oct 22, 2026 9:16am UTC

Request Review

…ing-list

# Conflicts:
#	packages/shared/src/features/feedWidgets/components.ts
rebelchris and others added 2 commits October 22, 2026 11:03
It now matches the Reading list widget in the storybook exploration
(apps#6943): the bookmark-colored label with "View all", rows with a bold
two-line title, the source and read time, and the post's thumbnail on the
right, a list that scrolls with its edges fading while there is more
(touch screens never scroll it, so a swipe moves the page), two columns at
Large, and the warm library wash behind it.

Bookmarks come oldest first, so nothing rots at the bottom of the list,
and the one fetch now covers twelve, since the list scrolls at every size.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch was successfully deployed

2 active deployments
Preview – storybook — f8e66cb5 Deployed Oct 22, 2026 by vercel[bot]
Preview – daily-webapp — f8e66cb5 Deployed Oct 22, 2026 by vercel[bot]
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