Skip to main content
← Back to list
01Issue
FeatureOpenSwamp Club
AssigneesNone

Relationships

#1137 /feed: per-post unread indicators and mark-as-read to track reading progress

Opened by magistr · 7/14/2026

Problem

The /feed (https://swamp-club.com/feed) is a growing stream of judge-gated posts, but there's no way to tell which posts I've already seen. Every visit I have to re-scan from the top and guess where I stopped reading last time. As the feed grows this makes it easy to both miss genuinely new posts and re-read old ones — I can't reliably track my reading position in the stream.

Proposed solution

Track per-user read state for feed posts and surface it in the feed UI:

  • Unread by default, with a clear visual distinction between unread and read posts (e.g. an unread dot / bolder title / accent left-border for unread, dimmed for read).
  • Auto-mark read when a post is scrolled into view or opened, and/or an explicit per-post "mark as read" affordance.
  • A "mark all as read" action, mirroring the pattern that already exists on /inbox (see #344), plus optionally a "N new since your last visit" divider so I can jump straight to where I left off.
  • Persist read state server-side per account so my reading position follows me across devices/sessions rather than living in localStorage.

Alternatives considered

  • Manual memory / bookmarking — doesn't scale as the feed grows; this is the status quo.
  • A single "new since last visit" timestamp line, no per-post state — lighter to build, but loses granularity the moment I read some-but-not-all of the new posts.
  • #959 (Remove comments from /feed and redesign the page) — unread tracking would fit naturally into that redesign rather than being bolted on afterward.
  • #849 (Live Swamp Club event console on /feed).
  • #344/inbox already implements an unread-count + "mark all read" pattern this could reuse for consistency.
02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED

Open

7/14/2026, 10:30:43 AM

No activity in this phase yet.

03Sludge Pulse

Sign in to post a ripple.