tech.tokimeki.forum.message

tokimeki.blue

Schema Diff

+25 -8

From

CID
bafyreifd7r5343n...
Indexed At
2026-08-25 12:27 UTC
View this version

To

CID
bafyreihsqusyseo...
Indexed At
2026-08-25 13:18 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

4 breaking changes, 15 non-breaking changes.

Breaking Changes (4)
  • KindChanged KindChanged { vertex_id: "tech.tokimeki.forum.message:body.replyTo", old_kind: "string", new_kind: "ref" }
  • KindChanged KindChanged { vertex_id: "tech.tokimeki.forum.message:body.thread", old_kind: "string", new_kind: "ref" }
  • ConstraintAdded ConstraintAdded { vertex_id: "tech.tokimeki.forum.message:body.replyTo", sort: "ref", value: "com.atproto.repo.strongRef" }
  • ConstraintAdded ConstraintAdded { vertex_id: "tech.tokimeki.forum.message:body.thread", sort: "ref", value: "com.atproto.repo.strongRef" }
Non-Breaking Changes (15)
  • AddedVertex AddedVertex { vertex_id: "com.atproto.label.defs#selfLabels" }
  • AddedVertex AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.labels" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.labels:variant0" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.langs" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.langs:items" }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body", tgt: "tech.tokimeki.forum.message:body.labels", kind: "prop", name: Some("labels") }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body", tgt: "tech.tokimeki.forum.message:body.langs", kind: "prop", name: Some("langs") }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body.labels", tgt: "tech.tokimeki.forum.message:body.labels:variant0", kind: "variant", name: Some("com.atproto.label.defs#selfLabels") }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body.labels:variant0", tgt: "com.atproto.label.defs#selfLabels", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body.langs", tgt: "tech.tokimeki.forum.message:body.langs:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body.replyTo", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body.thread", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "tech.tokimeki.forum.message:body.replyTo", sort: "format" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "tech.tokimeki.forum.message:body.thread", sort: "format" }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.atproto.label.defs#selfLabels" }
  • AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.labels" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.labels:variant0" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.langs" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.langs:items" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "tech.tokimeki.forum.message:body.thread", sort: "ref", value: "com.atproto.repo.strongRef" }
  • ConstraintAdded ConstraintAdded { vertex_id: "tech.tokimeki.forum.message:body.replyTo", sort: "ref", value: "com.atproto.repo.strongRef" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "tech.tokimeki.forum.message:body.thread", sort: "format" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "tech.tokimeki.forum.message:body.replyTo", sort: "format" }

Additional Notes

  • Breaking: KindChanged { vertex_id: "tech.tokimeki.forum.message:body.replyTo", old_kind: "string", new_kind: "ref" }
  • Breaking: KindChanged { vertex_id: "tech.tokimeki.forum.message:body.thread", old_kind: "string", new_kind: "ref" }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body", tgt: "tech.tokimeki.forum.message:body.labels", kind: "prop", name: Some("labels") }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body", tgt: "tech.tokimeki.forum.message:body.langs", kind: "prop", name: Some("langs") }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body.labels", tgt: "tech.tokimeki.forum.message:body.labels:variant0", kind: "variant", name: Some("com.atproto.label.defs#selfLabels") }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body.labels:variant0", tgt: "com.atproto.label.defs#selfLabels", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body.langs", tgt: "tech.tokimeki.forum.message:body.langs:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body.replyTo", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body.thread", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
1 1
{
2 2
  "id": "tech.tokimeki.forum.message",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "tid",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "channel",
11 11
          "text",
12 12
          "createdAt"
13 13
        ],
14 14
        "properties": {
15 15
          "text": {
16 16
            "type": "string",
17 17
            "maxLength": 20000,
18 18
            "maxGraphemes": 2000
19 19
          },
20 20
          "embed": {
21 21
            "refs": [
22 22
              "tech.tokimeki.forum.defs#images"
23 23
            ],
24 24
            "type": "union"
25 25
          },
26 +
          "langs": {
27 +
            "type": "array",
28 +
            "items": {
29 +
              "type": "string",
30 +
              "format": "language"
31 +
            },
32 +
            "maxLength": 3,
33 +
            "description": "Languages of the text (BCP-47)."
34 +
          },
26 35
          "facets": {
27 36
            "type": "array",
28 37
            "items": {
29 38
              "ref": "app.bsky.richtext.facet",
30 39
              "type": "ref"
31 40
            }
32 41
          },
42 +
          "labels": {
43 +
            "refs": [
44 +
              "com.atproto.label.defs#selfLabels"
45 +
            ],
46 +
            "type": "union",
47 +
            "description": "Self-applied labels, e.g. for adult content."
48 +
          },
33 49
          "thread": {
34 -
            "type": "string",
35 -
            "format": "at-uri",
36 -
            "description": "Space record URI of the tech.tokimeki.forum.thread (required when the channel kind is forum)."
50 +
            "ref": "com.atproto.repo.strongRef",
51 +
            "type": "ref",
52 +
            "description": "The tech.tokimeki.forum.thread this comment belongs to (required when the channel kind is forum). The cid pins the version of the thread the author saw."
37 53
          },
38 54
          "channel": {
39 55
            "type": "string",
40 56
            "format": "at-uri",
41 -
            "description": "Space record URI of the tech.tokimeki.forum.channel this message belongs to."
57 +
            "description": "Space record URI of the tech.tokimeki.forum.channel this message belongs to. A channel is a mutable container, so it is referenced by URI alone."
42 58
          },
43 59
          "replyTo": {
44 -
            "type": "string",
45 -
            "format": "at-uri",
46 -
            "description": "Space record URI of the message being replied to (inline reply in chat, parent comment in forum)."
60 +
            "ref": "com.atproto.repo.strongRef",
61 +
            "type": "ref",
62 +
            "description": "The tech.tokimeki.forum.message being replied to (inline reply in chat, parent comment in forum). The cid pins the version replied to; the message may be edited afterwards."
47 63
          },
48 64
          "editedAt": {
49 65
            "type": "string",
50 -
            "format": "datetime"
66 +
            "format": "datetime",
67 +
            "description": "Set when the message was edited in place (putRecord with the same rkey)."
51 68
          },
52 69
          "createdAt": {
53 70
            "type": "string",
54 71
            "format": "datetime"
55 72
          }
56 73
        }
57 74
      },
58 75
      "description": "A message posted into a chat channel, or a comment inside a forum thread. Always written into the author's own repo within the space."
59 76
    }
60 77
  },
61 78
  "$type": "com.atproto.lexicon.schema",
62 79
  "lexicon": 1
63 80
}

Compare Other Versions

Lexicon Garden

@