{
  "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"
}