{
  "path": "/3mabsropbo22q",
  "site": "at://did:plc:btxrwcaeyodrap5mnjw2fvmz/site.standard.publication/3lppk75kw7k26",
  "tags": [],
  "$type": "site.standard.document",
  "title": "Bluesky thread viewer",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "id": "019b329c-fcde-7992-9a0d-d73b1aa4e63e",
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "We added a Bluesky thread viewer in Leaflet! It works for both:"
            }
          },
          {
            "$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": [],
                    "plaintext": "quotes / mentions (open in side panel)"
                  },
                  "children": []
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "post embeds in a Leaflet doc (see below!)"
                  },
                  "children": []
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 61,
                    "byteStart": 51
                  },
                  "features": [
                    {
                      "did": "did:plc:ad5bwszsc5m5jpj2sfa6uzjk",
                      "$type": "pub.leaflet.richtext.facet#didMention"
                    }
                  ]
                }
              ],
              "plaintext": "We were inspired by this nice feedback thread from @erlend.sh:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.bskyPost",
              "postRef": {
                "cid": "bafyreifnx63bgrlw57d3exsktewllserjjsjhnjix2vzwakrwrvvg7g2ka",
                "uri": "at://did:plc:ad5bwszsc5m5jpj2sfa6uzjk/app.bsky.feed.post/3ma67o7szic2j"
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "…and you can now click above to read that thread right in Leaflet! You can even click thread replies to see branching conversation."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "⁂ ⁂ ⁂"
            },
            "alignment": "lex:pub.leaflet.pages.linearDocument#textAlignCenter"
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 121,
                    "byteStart": 117
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ]
                }
              ],
              "plaintext": "We like having our own comments section — as others have mentioned, it's nice to maintain separate context and not have to use Bluesky at all — but this makes social conversations on Bluesky a lot easier to view without bouncing between apps."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "We auto-create a linked Bluesky post when you publish (unless you \"publish quietly\"); this and any other Bluesky mentions / quotes show in the sidebar."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Now they indicate if they have replies, and same as with embedded posts (like above), clicking these posts also opens the full thread!"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Still room to improve; maybe we can also do things like:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "If you like, you can turn off Leaflet comments in publication settings (per-publication) and just use Bluesky."
            }
          },
          {
            "$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": [],
                    "plaintext": "show a count of mentions (or even aggregated likes etc)"
                  },
                  "children": []
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "make that section more prominent"
                  },
                  "children": []
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "extend this to show mentions in other apps, e.g. backlinks to Semble collections"
                  },
                  "children": []
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "⁂ ⁂ ⁂"
            },
            "alignment": "lex:pub.leaflet.pages.linearDocument#textAlignCenter"
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 60,
                    "byteStart": 45
                  },
                  "features": [
                    {
                      "did": "did:plc:6ayddqghxhciedbaofoxkcbs",
                      "$type": "pub.leaflet.richtext.facet#didMention"
                    }
                  ]
                }
              ],
              "plaintext": "Another fun example — this collection from @tynanpurdy.com of atproto ideas, using embedded Bluesky posts:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "src": "https://blog.tynanpurdy.com/3lwgzk2ovnk2c",
              "$type": "pub.leaflet.blocks.website",
              "title": "A running list of ATproto ideas  - Tynan's Leaflets",
              "description": "Updated when the brain has more",
              "previewImage": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreidybbhy64672nlmcl6hqh7jejmct5r4fuqmyixyjqyn4mevbgr3gi"
                },
                "mimeType": "image/png",
                "size": 16967
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Now you can browse all those threads right from the Leaflet post!"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "⁂ ⁂ ⁂"
            },
            "alignment": "lex:pub.leaflet.pages.linearDocument#textAlignCenter"
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "And some more useful context / threads to browse:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.bskyPost",
              "postRef": {
                "cid": "bafyreigywb4pb4gbjxavreompzsfsbym26ggnnwi36yqbtcbp6rv4ds5ku",
                "uri": "at://did:plc:2xau7wbgdq4phuou2ypwuen7/app.bsky.feed.post/3ma6jxqa43slh"
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.bskyPost",
              "postRef": {
                "cid": "bafyreidjbhygykd3ts63rilqf5o7vlwku7j2biuu5ohbypihrun574ojgy",
                "uri": "at://did:plc:btxrwcaeyodrap5mnjw2fvmz/app.bsky.feed.post/3ma734orolc2e"
              }
            }
          }
        ]
      }
    ]
  },
  "bskyPostRef": {
    "cid": "bafyreigbtjoyvk3q3mmf5vdektryjuc5wckf7wqqtljmuvuekcgltwhlt4",
    "uri": "at://did:plc:btxrwcaeyodrap5mnjw2fvmz/app.bsky.feed.post/3mabsruxkts2q",
    "commit": {
      "cid": "bafyreigdcwfog5obuoj6i7y4uvdyd2ouv3khxdiy7hovto57vedbma54cy",
      "rev": "3mabsrv2h6e2f"
    },
    "validationStatus": "valid"
  },
  "description": "Lab Notes 019: a new thread viewer for Bluesky posts, both as embeds within posts, and in the quotes / mentions section!",
  "publishedAt": "2025-12-18T18:32:35.600Z"
}