{
"path": "/3m7t343lpjk2n",
"site": "at://did:plc:b2p6rujcgpenbtcjposmjuc3/site.standard.publication/3m3axfv5hms24",
"tags": [],
"$type": "site.standard.document",
"title": "Lab Notes #004: Semble Updates - Notifications, Provenance and Indie Integrations",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"id": "019b147d-9f81-755a-9c3d-e11d40df8874",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Hi everyone, "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Just a quick update on some new features and happenings from the past week."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "New feature: Notifications!"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "We added basic notifications, to help spread good attention sharing karma ✨"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "When someone collects a card via your card, you will now receive a notification:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"$type": "blob",
"ref": {
"$link": "bafkreiciyp6upyfcxec2s3mdncfw2ugtdpnul5ijriemgmolbp6iw7eprq"
},
"mimeType": "image/png",
"size": 558005
},
"aspectRatio": {
"width": 1298,
"height": 1053
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"facets": [],
"plaintext": "Provenance Field in Lexicons"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 146,
"byteStart": 143
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
},
{
"index": {
"byteEnd": 210,
"byteStart": 204
},
"features": [
{
"uri": "https://pdsls.dev/at://did:plc:6z5botgrc5vekq7j26xnvawq/network.cosmik.card/3m7r3yotqam2l#record",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Part of these notifications is tracking where someone saved a card from, so we've updating our lexicons to include a provenance section with a via field which is a strong ref to the original card record. Here's an example of what this looks like:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.code",
"language": "json",
"plaintext": "{\n \"type\": \"URL\",\n \"$type\": \"network.cosmik.card\",\n \"content\": {\n \"url\": \"<https://lab.leaflet.pub/3m7py65pswk2e>\",\n \"$type\": \"network.cosmik.card#urlContent\",\n \"metadata\": {\n \"type\": \"link\",\n \"$type\": \"network.cosmik.card#urlMetadata\",\n \"title\": \"Atmospheric @-mentions! - Leaflet Lab Notes\",\n \"imageUrl\": \"<https://leaflet.pub/lish/did%253Aplc%253Abtxrwcaeyodrap5mnjw2fvmz/3lppk75kw7k26/3m7py65pswk2e/opengraph-image?6815eb61f733905a>\",\n \"description\": \"Lab Notes 017: mention Bluesky accounts, Leaflet publications, specific posts and more to come — an interface for links across the atmosphere\",\n \"retrievedAt\": \"2025-12-12T03:02:17.305Z\"\n }\n },\n \"createdAt\": \"2025-12-12T03:02:17.305Z\",\n \"provenance\": {\n \"via\": {\n \"cid\": \"bafyreigyya3ofkpxtpqhqtqlcny3vyvcaqfpfnzn4pikk6elt2ckvx5qcq\",\n \"uri\": \"at://did:plc:rtf3bjc3w2yn4syxtm4r7jt2/network.cosmik.card/3m7q5sjs2gs2d\"\n },\n \"$type\": \"network.cosmik.defs#provenance\"\n }\n}\n",
"syntaxHighlightingTheme": "github-dark-high-contrast"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "If you include this field, the author of the referring card will get a notification that you saved their card. We’ll update the Semble PDS Client to include this field soon."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Recent Collections"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Some of you have asked for this - when you add a new card you will now see your recent collections in the “Add to collections” section:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"$type": "blob",
"ref": {
"$link": "bafkreihauufxjanj54ia7ebw7uzgtnpnmfpvgtordr4yhqjc7lg5uc22qa"
},
"mimeType": "image/png",
"size": 71625
},
"aspectRatio": {
"width": 784,
"height": 440
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Community highlights"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 18,
"byteStart": 0
},
"features": [
{
"did": "did:plc:mdjhvva6vlrswsj26cftjttd",
"$type": "pub.leaflet.richtext.facet#didMention"
}
]
},
{
"index": {
"byteEnd": 384,
"byteStart": 344
},
"features": [
{
"uri": "https://traverse.connectedplaces.online/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "@laurenshof.online created the latest ATmosphere Report with a curated collection of interesting atproto articles from November. What's cool about this is that the curated links are now on-protocol as a Semble collection, with a custom page that lets you view them alongside ATmosphere mentions, on Semble, Leaflet and Bluesky. Check it out at https://traverse.connectedplaces.online/!"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.bskyPost",
"postRef": {
"cid": "bafyreibbdijubqwkmwmi3fclcuw47kifsywnxc5lipuwaruqdi3auktnh4",
"uri": "at://did:plc:mdjhvva6vlrswsj26cftjttd/app.bsky.feed.post/3m73t3pxx3s2r"
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 11,
"byteStart": 0
},
"features": [
{
"did": "did:plc:rtf3bjc3w2yn4syxtm4r7jt2",
"$type": "pub.leaflet.richtext.facet#didMention"
}
]
}
],
"plaintext": "@ronentk.me vibe-coded a proof-of-concept Notion → Semble integration using our PDS client! We’re very excited by the idea of Semble as a protocolized social layer for personal knowledge tools, and AI code assistants make these bespoke indie integrations so much easier."
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.bskyPost",
"postRef": {
"cid": "bafyreihhudyazfllybmni27pqnlhvqkqqhj3ecabywqabd6hs4xiqvwpfq",
"uri": "at://did:plc:rtf3bjc3w2yn4syxtm4r7jt2/app.bsky.feed.post/3m7bdiafdfc2x"
}
}
}
]
}
]
},
"description": "Spreading good attention karma with new Semble notifications and provenance, and some cool indie Semble integrations",
"publishedAt": "2025-12-12T21:51:38.517Z"
}