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