From
bafyreihg67mog7utpjuwu4poxa57yklo7jriy7citarbh5lncsfqym6kfa
indexed 2026-08-19 02:47 UTC
View this version
To
bafyreigytjwhb6xsfbq2xnuwfe5d2q6hhwvuefrvko3o6p4ezfzvwpoojq
indexed 2026-10-22 02:53 UTC
View this version
Compatibility
breaking 3 breaking changes, 11 non-breaking changes.
Breaking changes (3)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "town.laugh.user.listitem:body.filter", src: "town.laugh.user.listitem:body.filter", tgt: "town.laugh.user.listitem:body.filter.mode", kind: "prop", name: Some("mode") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "town.laugh.user.listitem:body.filter", src: "town.laugh.user.listitem:body.filter", tgt: "town.laugh.user.listitem:body.filter.series", kind: "prop", name: Some("series") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "town.laugh.user.listitem:body.filter", src: "town.laugh.user.listitem:body.filter", tgt: "town.laugh.user.listitem:body.filter.singles", kind: "prop", name: Some("singles") }
Non-breaking changes (11)
- AddedVertex AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter" }
- AddedVertex AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.excludeShows" }
- AddedVertex AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.excludeShows:items" }
- AddedVertex AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.mode" }
- AddedVertex AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.series" }
- AddedVertex AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.series:items" }
- AddedVertex AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.singles" }
- AddedEdge AddedEdge { src: "town.laugh.user.listitem:body", tgt: "town.laugh.user.listitem:body.filter", kind: "prop", name: Some("filter") }
- AddedEdge AddedEdge { src: "town.laugh.user.listitem:body.filter", tgt: "town.laugh.user.listitem:body.filter.excludeShows", kind: "prop", name: Some("excludeShows") }
- AddedEdge AddedEdge { src: "town.laugh.user.listitem:body.filter.excludeShows", tgt: "town.laugh.user.listitem:body.filter.excludeShows:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "town.laugh.user.listitem:body.filter.series", tgt: "town.laugh.user.listitem:body.filter.series:items", kind: "items", name: None }
Migration guidance
Added
AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter" }AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.excludeShows" }AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.excludeShows:items" }AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.mode" }AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.series" }AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.series:items" }AddedVertex { vertex_id: "town.laugh.user.listitem:body.filter.singles" }
Notes
- Breaking: RequiredEdgeAdded { vertex_id: "town.laugh.user.listitem:body.filter", src: "town.laugh.user.listitem:body.filter", tgt: "town.laugh.user.listitem:body.filter.mode", kind: "prop", name: Some("mode") }
- Breaking: RequiredEdgeAdded { vertex_id: "town.laugh.user.listitem:body.filter", src: "town.laugh.user.listitem:body.filter", tgt: "town.laugh.user.listitem:body.filter.series", kind: "prop", name: Some("series") }
- Breaking: RequiredEdgeAdded { vertex_id: "town.laugh.user.listitem:body.filter", src: "town.laugh.user.listitem:body.filter", tgt: "town.laugh.user.listitem:body.filter.singles", kind: "prop", name: Some("singles") }
- Non-breaking: AddedEdge { src: "town.laugh.user.listitem:body", tgt: "town.laugh.user.listitem:body.filter", kind: "prop", name: Some("filter") }
- Non-breaking: AddedEdge { src: "town.laugh.user.listitem:body.filter", tgt: "town.laugh.user.listitem:body.filter.excludeShows", kind: "prop", name: Some("excludeShows") }
- Non-breaking: AddedEdge { src: "town.laugh.user.listitem:body.filter.excludeShows", tgt: "town.laugh.user.listitem:body.filter.excludeShows:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "town.laugh.user.listitem:body.filter.series", tgt: "town.laugh.user.listitem:body.filter.series:items", kind: "items", name: None }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"main": {55
"description": "Membership of a subject in a town.laugh.user.list",66
"key": "tid",77
"record": {88
"properties": {99
"createdAt": {1010
"description": "Timestamp of when the item was added",1111
"format": "datetime",1212
"type": "string"1313
},14
"filter": {15
"properties": {16
"excludeShows": {17
"description": "AT-URIs of community.lexicon.calendar.event records: specific shows dropped even though their series/singles would admit them. There is deliberately no include-list of shows: to add a specific show, create a listitem whose subject is that event.",18
"items": {19
"format": "at-uri",20
"type": "string"21
},22
"maxLength": 200,23
"type": "array"24
},25
"mode": {26
"description": "include: only the checked series (plus individual shows when singles is true) flow in. exclude: everything except the checked series (and except individual shows when singles is false) flows in, so new series at the venue join automatically.",27
"knownValues": [28
"include",29
"exclude"30
],31
"type": "string"32
},33
"series": {34
"description": "AT-URIs of town.laugh.calendar.series records: the checked set, in either mode",35
"items": {36
"format": "at-uri",37
"type": "string"38
},39
"maxLength": 200,40
"type": "array"41
},42
"singles": {43
"description": "Whether \"Individual shows\" (shows in no series) are in the checked set",44
"type": "boolean"45
}46
},47
"required": [48
"mode",49
"series",50
"singles"51
],52
"type": "object"53
},1454
"list": {1555
"description": "AT-URI reference to the town.laugh.user.list record",1656
"format": "at-uri",1757
"type": "string"1858
},1959
"note": {2060
"description": "Optional per-item blurb",2161
"maxLength": 2048,2262
"type": "string"2363
},2464
"order": {2565
"description": "Fractional index for curated ordering; omit for TID/insertion order",2666
"type": "string"2767
},2868
"subject": {29
"description": "AT-URI reference to a community.lexicon.calendar.event, town.laugh.db.venue, or .comedian record (mixed lists allowed; legacy town.laugh.db.event uris remain valid)",69
"description": "AT-URI reference to a community.lexicon.calendar.event, town.laugh.db.venue, or .comedian record (mixed lists allowed; legacy town.laugh.db.event uris remain valid). town.laugh.calendar.series is NOT a valid subject: lists reference series only through a venue subject's filter",3070
"format": "at-uri",3171
"type": "string"3272
}3373
},3474
"required": [3575
"list",3676
"subject",3777
"createdAt"3878
],3979
"type": "object"4080
},4181
"type": "record"4282
}4383
},4484
"id": "town.laugh.user.listitem",4585
"lexicon": 14686
}