{
  "path": "/3mhwjg4ocrs2h",
  "site": "at://did:plc:xg2vq45muivyy3xwatcehspu/site.standard.publication/3m6bjy3xm5s2a",
  "tags": [
    "golang",
    "atproto",
    "tangled",
    "release notes"
  ],
  "$type": "site.standard.document",
  "title": "Twister v0.1.0",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "id": "019d27db-24b3-7eed-9da3-019daf110f14",
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 50,
                    "byteStart": 43
                  },
                  "features": [
                    {
                      "uri": "https://twister.stormlightlabs.org/docs",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 68,
                    "byteStart": 56
                  },
                  "features": [
                    {
                      "did": "did:plc:wshs7t2adsemcrrd4snkeqli",
                      "$type": "pub.leaflet.richtext.facet#didMention"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 93,
                    "byteStart": 86
                  },
                  "features": [
                    {
                      "uri": "https://tangled.org/desertthunder.dev/twisted",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 145,
                    "byteStart": 141
                  },
                  "features": [
                    {
                      "uri": "https://twister.stormlightlabs.org/docs",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "\nI'm excited to share the first release of Twister, the @tangled.org API to accompany Twisted. I'll keep them brief so you can check out the docs!"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.image",
              "image": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreicf7rfpmfvpanvmh2fum4fgdwvvjqrr5eedgydfo5fb4jnqoeu6oa"
                },
                "mimeType": "image/webp",
                "size": 27646
              },
              "aspectRatio": {
                "width": 1510,
                "height": 412
              }
            }
          },
          {
            "$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",
                    "plaintext": "REST API for search, profile summaries, upstream XRPC requests, and a doc site"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "index": {
                          "byteEnd": 30,
                          "byteStart": 27
                        },
                        "features": [
                          {
                            "uri": "https://github.com/bluesky-social/atproto/tree/main/packages/tap",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      }
                    ],
                    "plaintext": "Real-time indexing through Tap"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "index": {
                          "byteEnd": 13,
                          "byteStart": 0
                        },
                        "features": [
                          {
                            "uri": "https://constellation.microcosm.blue/",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      }
                    ],
                    "plaintext": "Constellation-backed follower and star counts"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Full-text, keyword search over indexed Tangled content"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Profile summaries and index-backed graph augmentation"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Read-through (if you request something, its indexed) indexing queue for API-fetched records"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Health and document lookup endpoints"
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 27,
                    "byteStart": 14
                  },
                  "features": [
                    {
                      "did": "did:plc:xbtmt2zjwlrfegqvch7fboei",
                      "$type": "pub.leaflet.richtext.facet#didMention"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 47,
                    "byteStart": 32
                  },
                  "features": [
                    {
                      "did": "did:plc:lulmyldiq4sb2ikags5sfb25",
                      "$type": "pub.leaflet.richtext.facet#didMention"
                    }
                  ]
                }
              ],
              "plaintext": "Big thanks to @zzstoatzz.io and @microcosm.blue."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.horizontalRule"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 38,
                    "byteStart": 20
                  },
                  "features": [
                    {
                      "did": "did:plc:xg2vq45muivyy3xwatcehspu",
                      "$type": "pub.leaflet.richtext.facet#didMention"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 57,
                    "byteStart": 44
                  },
                  "features": [
                    {
                      "uri": "https://tangled.org/desertthunder.dev/twisted/issues/new",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "Feel free to DM me, @desertthunder.dev,  or open an issue for requests/bug reports!"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          }
        ]
      }
    ]
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreicf7rfpmfvpanvmh2fum4fgdwvvjqrr5eedgydfo5fb4jnqoeu6oa"
    },
    "mimeType": "image/webp",
    "size": 27646
  },
  "bskyPostRef": {
    "cid": "bafyreiaaif5lssdwhg42v3kshatekrlcphd2222tu6jjr23wxf5niwem7q",
    "uri": "at://did:plc:xg2vq45muivyy3xwatcehspu/app.bsky.feed.post/3mhwjg7pfa22g",
    "commit": {
      "cid": "bafyreigrf5vsocpujb2xvy4ji34w3vzgitabqcbfnd3e6l5xgybvakru7u",
      "rev": "3mhwjg7rgud2r"
    },
    "validationStatus": "valid"
  },
  "description": "First release of the Twister API",
  "publishedAt": "2026-03-26T02:07:17.442Z"
}