Skip to content

feat(storybook): plainer Explain cards with follow, block and topic boosts - #6937

Merged
idoshamun merged 8 commits into
mainfrom
claude/feed-explain-cards-44fd57
Oct 16, 2026
Merged

idoshamun merged 8 commits into
mainfrom
claude/feed-explain-cards-44fd57

Conversation

@idoshamun

@idoshamun idoshamun commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

Card content for Explain mode in the "Features/Feed Explain" Storybook exploration, on top of the personalization center from #6936.

Cards

  • No reason chips and no hover ring that pointed at other cards. A card keeps its source, title, a one-sentence reason, its topic and source rows, and the footer.
  • Plain copy: rows say "You follow it", "You've read 3 posts on it", "Not one of your topics" or "You don't follow it". Reasons and leave notices drop policy terms like side topic and fill-in.
  • Rows get more height and spacing.
  • Each row has an icon-only follow toggle (green when followed, label in the tooltip) and block, in place of less and more.
  • Every topic shows its boost in the Personalization format (×1.36, or Off). Tapping it opens the same slider as the Topics page, with "Back to automatic" and a link to All topics. Raising a topic that is not in your profile adds it: the profile now includes any topic with an exact boost, and the Topics page describes it as "You added this with a boost."

Dock

  • Always one line: "Follow, block, or tune any topic.", Control center, and Done or Refresh feed. Longer change messages truncate with the full text in the tooltip.
  • On phones Undo and Control center are icons, Refresh feed reads Refresh, and the text is footnote size.

Cleanup

  • Removed FactorChips.tsx (no users left), the signal counts in FeedScreenContext, and the unused hoverKey in PersonalizationContext.
  • formatBoost and maxTopicWeight are shared by the cards and the Topics page.

Stories

  • 3 is now "Topic boost" (opens the boost popover).
  • 9 swaps "A topic's turn", "Variety pushed it down", "Showing more" and "Muted a learned topic" for "Boosted a topic" and "Turned a topic off".

Checked

  • Storybook at 1440 (grid) and 375 (list): toggling Explain moves no card, and the overlay's avatar, source name, title and Video label sit on the real card's pixels.
  • No panel overflows its card, and the dock stays one line in every state.
  • Known, not new: the list examples in "9 · Card states" only fit at phone widths, because the list card picks its short desktop shape from the viewport.

Preview domain

https://claude-feed-explain-cards-44fd57.preview.app.daily.dev

Explain mode now runs a copy of the For You challenger/5.0 policy over the
real /history posts, so every reason, chip and score comes from the same
math the feed uses, and adds a Personalization panel for full control.

- Cards keep their exact layout: the explanation overlays the real grid or
  list card with the source and title at the card's own offsets, and the
  summary bar is gone.
- Reason chips show what moved each post (topic match, follow, reader
  response, freshness, seen before, rotation, variety) and open a popover
  with the math and the policy knob behind it.
- The Personalization panel shows the full inferred profile with every
  weight editable, sources and people, every ranking knob with its raw
  retriever_config key, what was left out and why, links to explicit
  settings, and resets, with a live preview of the next page.
- A spec story maps each control to what daily-feed supports today.
Drop the reason chips from the card, the hover ring that pointed at
other cards sharing a topic, and the signal counts behind both. Rows
now say what a topic or source means to the reader (You follow it,
You've read 3 posts on it, Not one of your topics, You don't follow it)
and get more height and spacing. Reason and leave copy loses the policy
terms (side topic, fill-ins).

Story 3 now shows pressing less on a topic, since the chip popover it
opened is gone, and the two card states only the chips explained are
removed.
Each topic and source row now has an icon-only follow toggle (green when
followed, label in the tooltip) and block, replacing less and more.
Every topic row shows how much it counts in the profile; tapping the
number opens the profile's 0 to 1.5 slider with a reset and a link to
the profile.

An exact value now puts a topic in the profile on its own, so a topic
you neither follow nor read about can be raised from 0. Its reason
reads "You set #tag to 0.81." Setting a card's main topic to 0 shows
the leave notice with Undo.

maxTopicWeight moves to profile.ts so the panel can share it. Story 3
opens the value popover, and the card states swap Showing more and
Muted for an exact value and a topic set to 0.
The dock keeps to one line: the hint is now "Follow, block, or tune any
topic.", longer change messages truncate with the full text in the
tooltip, and All controls becomes Personalize to match the
Personalization page. On phones Undo and Personalize are icons,
Refresh feed is Refresh and the text drops to footnote size, which fits
every card action's message. The fewer-like-this confirmation is
shortened to fit, and the value popover links to All topics instead of
Your profile.
Match the Personalization page: a topic's value reads as the boost it
gives a post (×1.36), or Off at 0, in the row tag and the popover. The
popover is titled "Boost for #tag", steps by 0.05 like the page, and
resets with "Back to automatic (×1.36)". Reasons and leave notices
follow ("You gave #nginx a ×1.81 boost.", "You turned #career off.").

formatBoost lives in describe.ts until the page's ParamFormat.Boost
lands on this branch.
…ards-44fd57

# Conflicts:
#	packages/storybook/stories/features/feed-explain/FeedExplain.stories.tsx
#	packages/storybook/stories/features/feed-explain/components/ChangesDock.tsx
#	packages/storybook/stories/features/feed-explain/components/ExplainPanel.tsx
#	packages/storybook/stories/features/feed-explain/components/FeedExplainPage.tsx
#	packages/storybook/stories/features/feed-explain/components/FeedScreenContext.ts
#	packages/storybook/stories/features/feed-explain/components/PersonalizationContext.tsx
#	packages/storybook/stories/features/feed-explain/components/PersonalizationPanel.tsx
#	packages/storybook/stories/features/feed-explain/components/controls.tsx
#	packages/storybook/stories/features/feed-explain/components/panel/InterestsSection.tsx
#	packages/storybook/stories/features/feed-explain/components/panel/Preview.tsx
#	packages/storybook/stories/features/feed-explain/components/panel/RankingSection.tsx
#	packages/storybook/stories/features/feed-explain/components/panel/Section.tsx
#	packages/storybook/stories/features/feed-explain/components/panel/SettingsSection.tsx
#	packages/storybook/stories/features/feed-explain/components/panel/SourcesSection.tsx
#	packages/storybook/stories/features/feed-explain/policy/describe.ts
#	packages/storybook/stories/features/feed-explain/policy/params.ts
#	packages/storybook/stories/features/feed-explain/policy/profile.ts
#	packages/storybook/stories/features/feed-explain/policy/rank.ts
@idoshamun
idoshamun enabled auto-merge (squash) October 16, 2026 20:08
@vercel

vercel Bot commented Oct 16, 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 16, 2026 8:11pm UTC
storybook Ready Ready Preview Oct 16, 2026 8:11pm UTC

Request Review

@idoshamun
idoshamun merged commit 60ce39e into main Oct 16, 2026
13 checks passed
@idoshamun
idoshamun deleted the claude/feed-explain-cards-44fd57 branch October 16, 2026 20:16

This branch was successfully deployed

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