full diff

tech.tokimeki.forum.thread

tokimeki.blue +49 −0
From
bafyreieqxery4sjp7zpmu5bdd5dxzefg73i2mbexi2rqjhsd6mecytt22y indexed 2026-08-25 13:18 UTC View this version
To
bafyreigpaub35p7zgamtnumbajzq4gtnztypzluw2rutrvvai52ckcgzwq indexed 2026-08-28 16:52 UTC View this version

Compatibility

breaking 1 breaking change, 23 non-breaking changes.

Breaking changes (1)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "tech.tokimeki.forum.thread#richContent", src: "tech.tokimeki.forum.thread#richContent", tgt: "tech.tokimeki.forum.thread#richContent.type", kind: "prop", name: Some("type") }
Non-breaking changes (23)
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.defs#image" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.attrs" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.content" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.content:items" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.marks" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.marks:items" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.text" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.type" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.thread:body.blobs" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.thread:body.blobs:items" }
  • AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.thread:body.content" }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.thread#richContent", tgt: "tech.tokimeki.forum.thread#richContent.attrs", kind: "prop", name: Some("attrs") }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.thread#richContent", tgt: "tech.tokimeki.forum.thread#richContent.content", kind: "prop", name: Some("content") }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.thread#richContent", tgt: "tech.tokimeki.forum.thread#richContent.marks", kind: "prop", name: Some("marks") }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.thread#richContent", tgt: "tech.tokimeki.forum.thread#richContent.text", kind: "prop", name: Some("text") }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.thread#richContent.content", tgt: "tech.tokimeki.forum.thread#richContent.content:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.thread#richContent.marks", tgt: "tech.tokimeki.forum.thread#richContent.marks:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.thread:body", tgt: "tech.tokimeki.forum.thread:body.blobs", kind: "prop", name: Some("blobs") }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.thread:body", tgt: "tech.tokimeki.forum.thread:body.content", kind: "prop", name: Some("content") }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.thread:body.blobs", tgt: "tech.tokimeki.forum.thread:body.blobs:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.thread:body.blobs:items", tgt: "tech.tokimeki.forum.defs#image", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "tech.tokimeki.forum.thread:body.content", tgt: "tech.tokimeki.forum.thread#richContent", kind: "ref", name: None }

Migration guidance

Added

  • AddedVertex { vertex_id: "tech.tokimeki.forum.defs#image" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.attrs" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.content" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.content:items" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.marks" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.marks:items" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.text" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.thread#richContent.type" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.thread:body.blobs" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.thread:body.blobs:items" }
  • AddedVertex { vertex_id: "tech.tokimeki.forum.thread:body.content" }

Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "tech.tokimeki.forum.thread#richContent", src: "tech.tokimeki.forum.thread#richContent", tgt: "tech.tokimeki.forum.thread#richContent.type", kind: "prop", name: Some("type") }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.thread#richContent", tgt: "tech.tokimeki.forum.thread#richContent.attrs", kind: "prop", name: Some("attrs") }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.thread#richContent", tgt: "tech.tokimeki.forum.thread#richContent.content", kind: "prop", name: Some("content") }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.thread#richContent", tgt: "tech.tokimeki.forum.thread#richContent.marks", kind: "prop", name: Some("marks") }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.thread#richContent", tgt: "tech.tokimeki.forum.thread#richContent.text", kind: "prop", name: Some("text") }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.thread#richContent.content", tgt: "tech.tokimeki.forum.thread#richContent.content:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.thread#richContent.marks", tgt: "tech.tokimeki.forum.thread#richContent.marks:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.thread:body", tgt: "tech.tokimeki.forum.thread:body.blobs", kind: "prop", name: Some("blobs") }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.thread:body", tgt: "tech.tokimeki.forum.thread:body.content", kind: "prop", name: Some("content") }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.thread:body.blobs", tgt: "tech.tokimeki.forum.thread:body.blobs:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.thread:body.blobs:items", tgt: "tech.tokimeki.forum.defs#image", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "tech.tokimeki.forum.thread:body.content", tgt: "tech.tokimeki.forum.thread#richContent", kind: "ref", name: None }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
55 "description": "A thread (topic) opened in a forum-kind channel. Written into the opener's own repo within the space. The thread carries its own body; comments are tech.tokimeki.forum.message records referencing it.",
66 "key": "tid",
77 "record": {
88 "properties": {
9 "blobs": {
10 "description": "Images placed inline in `content`. Uploaded with com.atproto.repo.uploadBlob to the author's PDS; each `content` image node carries the cid of one of these blobs.",
11 "items": {
12 "ref": "tech.tokimeki.forum.defs#image",
13 "type": "ref"
14 },
15 "maxLength": 20,
16 "type": "array"
17 },
918 "channel": {
1019 "description": "Space record URI of the tech.tokimeki.forum.channel this thread belongs to. A channel is a mutable container, so it is referenced by URI alone (like app.bsky.graph.listitem).",
1120 "format": "at-uri",
1221 "type": "string"
1322 },
23 "content": {
24 "description": "Rich body as a ProseMirror/TipTap document tree: paragraphs, headings (2-4), lists, task lists, quotes, code blocks, tables, callouts, toggles, link cards, mentions and images. Image nodes reference an entry of `blobs` by cid. When present, `text` is the plain-text projection of this tree for search, previews and text-only clients.",
25 "ref": "#richContent",
26 "type": "ref"
27 },
1428 "createdAt": {
1529 "format": "datetime",
1630 "type": "string"
1731 },
1832 "editedAt": {
1933 "description": "Set when the thread was edited in place (putRecord with the same rkey).",
2034 "format": "datetime",
2135 "type": "string"
2236 },
2337 "embed": {
2438 "refs": [
2539 "tech.tokimeki.forum.defs#images"
2640 ],
2741 "type": "union"
2842 },
2943 "facets": {
3044 "items": {
3145 "ref": "app.bsky.richtext.facet",
3246 "type": "ref"
3347 },
3448 "type": "array"
3549 },
3650 "labels": {
3751 "description": "Self-applied labels, e.g. for adult content.",
3852 "refs": [
3953 "com.atproto.label.defs#selfLabels"
4054 ],
4155 "type": "union"
4256 },
4357 "langs": {
4458 "description": "Languages of the title and text (BCP-47).",
4559 "items": {
4660 "format": "language",
4761 "type": "string"
4862 },
4963 "maxLength": 3,
5064 "type": "array"
5165 },
5266 "tags": {
5367 "items": {
5468 "maxGraphemes": 32,
5569 "maxLength": 320,
5670 "type": "string"
5771 },
5872 "maxLength": 8,
5973 "type": "array"
6074 },
6175 "text": {
6276 "maxGraphemes": 5000,
6377 "maxLength": 40000,
6478 "type": "string"
6579 },
6680 "title": {
6781 "maxGraphemes": 128,
6882 "maxLength": 1280,
6983 "type": "string"
7084 }
7185 },
7286 "required": [
7387 "channel",
7488 "title",
7589 "createdAt"
7690 ],
7791 "type": "object"
7892 },
7993 "type": "record"
94 },
95 "richContent": {
96 "description": "A ProseMirror/TipTap document node (recursive). Consumers validate against the node whitelist in the app; unknown node types are ignored.",
97 "properties": {
98 "attrs": {
99 "description": "Node attributes (heading level, image cid/alt/size, link card url…).",
100 "type": "unknown"
101 },
102 "content": {
103 "description": "Child nodes.",
104 "items": {
105 "type": "unknown"
106 },
107 "type": "array"
108 },
109 "marks": {
110 "description": "Inline marks on a text node: bold, italic, strike, underline, code, link{href}.",
111 "items": {
112 "type": "unknown"
113 },
114 "type": "array"
115 },
116 "text": {
117 "description": "Text of a text node.",
118 "type": "string"
119 },
120 "type": {
121 "description": "Node type (doc, paragraph, heading, text, hardBreak, mention, bulletList, orderedList, listItem, taskList, taskItem, blockquote, codeBlock, horizontalRule, image, table, tableRow, tableCell, tableHeader, callout, details, linkCard).",
122 "type": "string"
123 }
124 },
125 "required": [
126 "type"
127 ],
128 "type": "object"
80129 }
81130 },
82131 "id": "tech.tokimeki.forum.thread",
83132 "lexicon": 1
84133}

Compare other versions