full diff

town.laugh.user.listitem

laugh.town +41 −1
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": 1
4686}

Compare other versions