{
  "$type": "site.standard.document",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://standard.site"
                    }
                  ],
                  "index": {
                    "byteEnd": 159,
                    "byteStart": 146
                  }
                }
              ],
              "plaintext": "I've been following Leaflet's development since it was first announced, but this was my first time taking it for a spin once I decided it was the standard.site implementation that best fit my needs. So far I've only written two medium length and one long blog post, but I already have some positive things to say:"
            }
          },
          {
            "$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": "Setup was trivial."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://standard.site"
                          }
                        ],
                        "index": {
                          "byteEnd": 130,
                          "byteStart": 117
                        }
                      }
                    ],
                    "plaintext": "I really like how simple and effective the theme experience is, and how it propagates into the ATProto layer via the standard.site integration."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "The analytics are great. I'm happy with how many views I got on a first blog post, and a third of that traffic came from the Leaflet network rather than my Bsky followers."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "You can subscribe with Leaflet reader, with your email, or both - and either way you can see who those subscribers are."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "The Bluesky tagging and embed features are really nice."
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "There are some areas within the app that are a bit of a drag:"
            }
          },
          {
            "$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": "There are some FOUC issues that are distracting when you have a very different theme."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "It would be great to make \"view as theme\" work like a dark mode checkbox does. I love my red-and-black aesthetic but there are some times when it clashes with how the editor works (like block highlights)."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Human-readable URLs, ideally with some browser-side config to aid in default patterns but remaining customizable."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Static pages in a menu, as is common on platforms like Wordpress or Ghost. I want an \"About\" page!"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "There are some editor quirks, like drag-to-select just generally being a bit... odd."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#italic"
                          }
                        ],
                        "index": {
                          "byteEnd": 70,
                          "byteStart": 66
                        }
                      }
                    ],
                    "plaintext": "Image embeds should have both alt text (invisible but searchable) and captions (visible beneath the image, searchable). Ghost does this really well."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Code blocks! Ideally ones with Mermaid support too."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "I did hit a weird glitch on a publish where I was able to write an entire post, but got told I was \"logged out\" on trying to publish. After logging in, publishing appeared to hang indefinitely; the result is that the post successfully published on Leaflet (and therefore to my PDS) but was not syndicated as a Bluesky post (I had to do this manually). Seems like there's a bug here."
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "And then I have some thoughts on reading and writing interfaces:"
            }
          },
          {
            "$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": "I move between desktop and mobile a lot. It would be cool to have a mobile app, especially one with seamless interop with the Bluesky app. I'd love to be able to open Leaflet posts for a more focused reading experience."
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "I would love a fully featured \"publish-to-standard.site-via-Obsidian\" integration. I wouldn't use this for all writing, but perhaps certain interlinked articles or on certain publications. This isn't totally straightforward to implement, however; for example you'd want support for formatting and images."
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Overall, this still feels like a beta product, but also that it's good enough to be worth paying for! I'm happy with my choice."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          }
        ],
        "id": "019ead6e-c55c-7ffe-8840-6b5572cd1046"
      }
    ]
  },
  "description": "mostly good, some bad",
  "path": "/3mnur4w5glc25",
  "publishedAt": "2026-06-09T17:51:09.587Z",
  "site": "at://did:plc:nlzmjyfv6loqtxyzvdcznwgf/site.standard.publication/3mnpodkutsc26",
  "tags": [
    "meta",
    "blog",
    "leaflet"
  ],
  "title": "Leaflet: first impressions"
}