October 4, 2026 at 12:00:00 AM UTC
Cobalt liked-by and reposted-by lists
cobaltatprotocwiiu
The post menu showed a post's counts as text but never who was behind them (issue #104). This adds "Liked by (N)" and "Reposted by (N)" entries to the post menu, opening the same avatar-row list screen the followers/following screens already use.
Changes
src/app/graph.{c,h}— two newcobalt_graph_kinds (LIKES,REPOSTED) wired into the existing list screen:list_for,begin_fetch, titles ("Liked by" / "Reposted by"), empty messages, andcobalt_graph_view_open_likes, which mirrors the follows open (rewind, record the post URI, fetch fresh).cobalt_graph_kind_is_followscovers them, so A opens a profile like every other row-list.begin_fetchnow takes the view rather than the kind, since likes/reposts page against the URI the view remembers.src/atproto/session.{c,h}—COBALT_JOB_LIKES/COBALT_JOB_REPOSTED_BY,cobalt_session_begin_likes/begin_reposted_by/likes_list. The two kinds share onecobalt_actor_list(s.likes): only one is on screen at a time and every open resets it, so there is no cross-talk.getRepostedByrides the existingrun_actor_listwith a fetch_fn;getLikesdoes not — Wolfram returnswf_agent_actor_like_list, whose rows carry the actor one level down, so it gets its ownrun_likeswith the same locking, reset and paging shape.src/app/app.c—COBALT_POPUP_LIKES/COBALT_POPUP_REPOSTSentries in the post menu (with the like/repost icons and the count in the label), aCOBALT_SCREEN_LIKES_LISTcase in update and draw, and alikes_returnso B goes back to the timeline or thread the menu was opened from.- Tests:
test_likes_listscovers the begin guards, the graph open (kind, actor, rewind), the wrong-kind refusal, and the is_follows classification. Host suite: 488 checks, 0 failures. Wii U cross-build clean.
Commit be33e37, pushed. Issue #104 closed.
all entries