{
"path": "/3lxkscqchj22j",
"site": "at://did:plc:xgvzy7ni6ig6ievcbls5jaxe/site.standard.publication/3lxadclji222q",
"$type": "site.standard.document",
"title": "You've Got Mail",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [
{
"index": {
"byteEnd": 5,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#strikethrough"
}
]
}
],
"plaintext": "Don't Can't @ Me"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 19,
"byteStart": 6
},
"features": [
{
"uri": "https://augment.leaflet.pub/3lxcznn4bg22f",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "In my first midblog, a fun conversation started in the comments (and beyond!) around how Leaflet doesn't natively support @mentions or quoting. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "This led to a larger discussion about how the broader ATProto ecosystem could handle notifications that cross the boundaries of specific apps. A good example of that is @mentions for users who may not have a presence in a particular app or quotes originating from another platform."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 90,
"byteStart": 81
},
"features": [
{
"uri": "https://bsky.app/profile/bmann.ca",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 115,
"byteStart": 106
},
"features": [
{
"uri": "https://atproto.leaflet.pub/3lxecysdkfs22/l-quote/5_0-5_142#5_0",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 137,
"byteStart": 121
},
"features": [
{
"uri": "https://bsky.app/profile/bad-example.com",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 167,
"byteStart": 142
},
"features": [
{
"uri": "https://tangled.sh/@bad-example.com/spacedust-utils",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "The good news is that progress is already being made on the infrastructure side. @bmann.ca informed us in a Leaflet that @bad-example.com has built this into microcosm."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Hell yeah. Infra's ready to go, so now we build. Right? "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Wrong "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "The confusing part here is established above: when I @mention Boris and Phil, should the notifications arrive on Bsky or Leaflet? I've @mentioned their Bsky profiles, but I've also mentioned a post on Boris' Leaflet publication and Phil's spacedust repo on Tangled. They also both have a presence on Leaflet, and I @mentioned on Leaflet so...uh...?"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "This cross-app interaction is powerful, but also quickly overloads and overlaps the responsibilities expected of modern services."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Unified AT Inbox"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 59,
"byteStart": 40
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#highlight"
}
]
}
],
"plaintext": "Perhaps the ability for a user to set a notifications inbox is a path forward. By default, let the platform owner decide where things end up, because not every user will need a dedicated cross-app inbox. But there's space here for notification managers that span across the ecosystem for those of us embedding ourselves deeper into the ATProto ecosystem."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "With a dedicated inbox, users can:"
}
},
{
"$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": "Set common filters across apps"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Choose which kind of notifications open which apps"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Avoid duplicate pings from platforms that have overlapping notification systems"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Choose which apps should skip the inbox and show up on the originating platform"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "This is obviously heavily inspired by the Android notification system, but that's because I don't like to mess with perfection."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "Continued Brainstorming"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "This is just an early brainstorm, but I'm sure there are other folks who have already been thinking through it. I wanted to share this early so you can tell me if I'm over- or underthinking this."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "So, send me your thoughts, please!"
}
},
{
"$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": 114,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
},
{
"index": {
"byteEnd": 141,
"byteStart": 114
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
},
{
"uri": "https://fed.brid.gy/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 298,
"byteStart": 141
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
]
}
],
"plaintext": "Side note: I'm also kinda selfishly starting this conversation since a unified inbox can also be applied to users who bridge from ActivityPub. I want this as an ATProto user, but allowing ActivityPub users to set their account as a notifications inbox would help with further fragmentation as well."
}
},
{
"$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.text",
"facets": [],
"plaintext": ""
}
}
]
}
]
},
"bskyPostRef": {
"cid": "bafyreibcelf3p3zuyx4hotizm6h4o4rn3i6a4rwwkjshhy5mna3qpdwdwu",
"uri": "at://did:plc:xgvzy7ni6ig6ievcbls5jaxe/app.bsky.feed.post/3lxkscvl6wc2j",
"commit": {
"cid": "bafyreibft7lcpxgiyreiokjmm5p5gxd5a5xrjmwpw3w2s37tdpukvlvwnu",
"rev": "3lxkscvondl2t"
},
"validationStatus": "valid"
},
"description": "Brainstorming an ATProto Notifications Inbox",
"publishedAt": "2025-08-29T19:31:26.955Z"
}