Skip to content

Feed controls: hoist listserv-announced events, sort options, follow/hide orgs - #58

Merged
DIodide merged 12 commits into
stagingfrom
release/feed-controls
Sep 28, 2026
Merged

DIodide merged 12 commits into
stagingfrom
release/feed-controls

Conversation

@DIodide

@DIodide DIodide commented Sep 28, 2026 •

Copy link
Copy Markdown
Member
  • Ranking boosts events announced on campus listservs (incl. official events that were also emailed) and demotes unannounced MyPrincetonU listings; followed orgs rise strongly
  • Home sort: For you / Soonest / Recently posted (stable pagination per sort)
  • Follow or hide organizations from event cards, event pages and org pages; hidden orgs vanish from Home, map, search, similar events and friends' activity, and are managed under Orgs → Hidden
  • One ⋯ menu per card (Not interested / Follow / Hide org); greeting uses your real first name
  • Uses InboxEngine's new announcement signals (InboxEngine chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /backends/fastapi #1)

Report (with real-data screenshots): https://claude.ai/artifact/GPsuX6BNxsRyApw62oW37c

blockOrg / unblockOrg / getBlockedOrgs server actions (zod-validated,
rate-limited, idempotent). Hiding unfollows and following unhides, each in
one transaction. notFromHiddenOrg() filters hidden orgs from the map and org
suggestions; getOrg/getOrgs expose isHidden.
- For you: +2.5 x source quality (announced on a listserv: min(1, log2(1+n)/2);
  unannounced MyPrincetonU listing: -0.3; Forum-created: +0.2). Org affinity
  weight 1 -> 4 so followed orgs reach the first pages; diversity cap kept.
- Sorts: foryou | soonest | recent (coalesce(announced_at, created_at) desc),
  validated with zod; same candidate set for every sort.
- Hidden orgs excluded from candidates in every sort, similar events and
  friends' activity. Pinned asOf snapshots follows/hides/new events so
  pagination is stable; orgs hidden since asOf drop out without shifting.
- FeedPage returns nextOffset/remaining; event detail exposes follow/hidden.
- Unit tests for scoring/sorts; DB-backed test for hides, sorts, paging.
- docs/ranking.md updated.
A ⋯ menu (shadcn DropdownMenu) with Follow/Unfollow <Org> and Hide events
from <Org>, shown only for events with an org. Hiding shows a sonner toast
with Undo (restoring a follow the hide removed).
…hide from cards

Sort sits beside the Cards/List toggle, lives in ?sort= (zod-validated on the
server) and is remembered per browser. Pagination uses the server's
nextOffset/remaining with asOf, per sort. Hiding an org drops its cards at once
and re-reads the counts; following updates every card from that org.
Org page keeps Follow primary and adds a secondary menu (Hide from my feed /
Show in my feed) plus a slim notice with Undo while hidden. The Orgs page gets a
Hidden chip (shown once something is hidden, /orgs?view=hidden) listing hidden
orgs with Unhide; hidden orgs are marked in the main list.
The standalone per-event hide icon is gone from cards and list rows. The ⋯
menu is on every feed card: Not interested in this event (same stub + Unhide,
now with an Undo toast), then Follow/Unfollow and Hide events from the org
when there is one.
A display name equal to the NetID (new accounts) or empty counts as no name.
Home reads it from the database, since the session name is captured at
sign-in and stays the NetID after onboarding. Onboarding's completion line
follows the same rule.
@DIodide
DIodide merged commit 7dce74f into staging Sep 28, 2026
1 check passed
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