From 89b16d6363920129744665ceeda5218f6786aaaa Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Sat, 10 Oct 2026 08:04:59 -0700 Subject: Feed: your own posts are in Following. The follows feed read only the people you follow, so your own post was there just after you sent it (the optimistic row) and gone after a reload — Adam didn't see his latest. Like every other client, a follows feed now includes you. Someone who follows nobody still gets the "find people" invitation, with their own posts under it. feed-live-test's catch-up queue now goes only to an ask naming the post's author (the feed also asks for yours); tools/feed-repost-test.js checks your own post shows. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Vps2H27rhbG9ZqseGfMrc3 --- src/features/messages.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/features/messages.js b/src/features/messages.js index 99b5c48..b271bc9 100644 --- a/src/features/messages.js +++ b/src/features/messages.js @@ -5605,6 +5605,9 @@ export function messagesFeature(ctx) { const feedAuthors = (def = feedDef()) => { if (!def) return []; const set = new Set(def.follows ? followsNow().set : []); + // your own posts belong in the feed of the people you follow, as in + // every other client — not only for the moment after posting + if (def.follows && mePk()) set.add(mePk()); for (const pk of def.authors || []) if (pk) set.add(pk); for (const pk of def.priv || []) if (pk) set.add(pk); // a list's private members for (const pk of packAuthors(def)) set.add(pk); @@ -11772,6 +11775,8 @@ export function messagesFeature(ctx) { }); const authors = feedAuthors(def); const hasQuery = feedHasQuery(def); + // the follows feed of someone who follows nobody: only their own posts + const noFollows = !!def.follows && !followsNow().set.size && !(def.authors || []).length && !(def.priv || []).length && !feedTopics(def).length; prepareFeedAhead(c); // Never a bare spinner over posts we already hold: while the opening // page's faces and pictures are still being decoded, the cached rows @@ -11851,11 +11856,13 @@ export function messagesFeature(ctx) { h('span', { class: 'spinner sm' }), h('span', { class: 'small muted' }, t('feedOfLoading'))) : def.of && !hasQuery ? h('div', { class: 'small muted', style: 'text-align:center;padding:12px 0' }, t('feedNoFollowsOf')) - : !hasQuery + : !hasQuery || noFollows ? def.builtin ? h('div', { class: 'col', style: 'gap:8px' }, h('div', { class: 'small muted' }, t('feedNoFollows')), - h('button', { class: 'btn-sm', onClick: () => { stopFeedWatch(); hook('openUserSearch'); render(); } }, t('feedFindPeople'))) + h('button', { class: 'btn-sm', onClick: () => { stopFeedWatch(); hook('openUserSearch'); render(); } }, t('feedFindPeople')), + // your own posts, under the invitation + noFollows && visible.length && mediaMode === 'all' ? h('div', { class: 'card col notes-feed', style: 'gap:0' }, ...rows) : null) : h('div', { class: 'col', style: 'gap:8px' }, h('div', { class: 'small muted' }, t('feedNoQuery')), h('button', { class: 'btn-sm', onClick: () => openFeedEditor(def) }, t('feedEdit'))) -- cgit v1.2.3