···6161}
62626363// ---------------------------------------------------------------------------
6464-// Post content + richtext facet for the https://atmo.garden link
6464+// Post content + embed (atmo.garden communities list)
6565// ---------------------------------------------------------------------------
66666767// Text shown as the ONE AND ONLY entry in `following-hot` /
6868// `following-new` when the viewer follows zero atmo.garden
6969-// communities. Needs to carry the full explanation on its own
7070-// (no fallback feed content behind it anymore), so leads with
7171-// the problem, then the fix, then the link.
6969+// communities. Leads with the problem, then directs readers at
7070+// the embedded list (which bsky renders as a tappable card that
7171+// lets them follow individual communities from inside the client),
7272+// then links to the website as a secondary CTA.
7273const POST_TEXT =
7373- '👋 Your atmo.garden following feed is empty!\n\natmo.garden is a experimental community layer for surfacing bsky posts. Follow community accounts to see their posts in this feed.\n\nDiscover communities → https://atmo.garden';
7474+ '🌱 Your atmo.garden following feed is empty!\n\nFollow atmo.garden community accounts below to populate it — tap the list to see all communities and follow any from inside bsky.\n\nLearn more → https://atmo.garden';
7575+7676+// Embedded bsky list — the "atmo.garden communities" public list
7777+// published by the atmo.garden account. When bsky's appview
7878+// hydrates this post for a feed viewer, it renders the list as a
7979+// tappable card showing the list name, description, and member
8080+// preview. Tapping opens the list in the user's bsky client,
8181+// where they can follow any individual community in one tap.
8282+// If the list ever gets rewritten (rkey change, new CID after an
8383+// update), the at-uri + cid below need to be updated and the
8484+// script re-run.
8585+const LIST_URI =
8686+ 'at://did:plc:tl7hmwtzr2lriwkddcqly4wv/app.bsky.graph.list/3mj2xb5hpp74n';
8787+const LIST_CID = 'bafyreiafekmlk2dnghd3l7mir3wm4w4bucxxjvjvuipwwwn3jnwyqkgc4a';
74887589/** Find the UTF-8 byte range of `substring` inside `text`, or null. */
7690function byteRange(
···142156 $type: 'app.bsky.feed.post',
143157 text: POST_TEXT,
144158 facets,
159159+ embed: {
160160+ $type: 'app.bsky.embed.record',
161161+ record: {
162162+ uri: LIST_URI,
163163+ cid: LIST_CID
164164+ }
165165+ },
145166 createdAt: new Date().toISOString()
146167 }
147168 })