full diff

ai.syui.log.post

syui.bsky.social +93 −16
From
bafyreia355eeyh6wtmzrn4oomar3ljjh7s2jybxox3qwujhgwywb3qmb7q indexed 2026-02-18 17:35 UTC View this version
To
bafyreidmxvq4tc74hmyhduqlpz7z3xk4tivsspdi6tagcr2yuvxed45dxe indexed 2026-03-12 11:16 UTC View this version

Compatibility

breaking 9 breaking changes, 39 non-breaking changes.

Breaking changes (9)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "ai.syui.log.post:body", src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.publishedAt", kind: "prop", name: Some("publishedAt") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "ai.syui.log.post:body", src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.site", kind: "prop", name: Some("site") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "ai.syui.log.post#markdown", src: "ai.syui.log.post#markdown", tgt: "ai.syui.log.post#markdown.text", kind: "prop", name: Some("text") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "ai.syui.log.post:body", src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.createdAt", kind: "prop", name: Some("createdAt") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "ai.syui.log.post:body", src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.content", kind: "prop", name: Some("content") }
  • RemovedVertex RemovedVertex { vertex_id: "ai.syui.log.post:body.createdAt" }
  • RemovedVertex RemovedVertex { vertex_id: "ai.syui.log.post:body.lang" }
  • RemovedEdge RemovedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.lang", kind: "prop", name: Some("lang") }
  • KindChanged KindChanged { vertex_id: "ai.syui.log.post:body.content", old_kind: "string", new_kind: "union" }
Non-breaking changes (39)
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post#markdown" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post#markdown.text" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.bskyPostRef" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.content:variant0" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.coverImage" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.description" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.langs" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.langs:items" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.parent" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.path" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.publishedAt" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.root" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.site" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.tags" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.tags:items" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.textContent" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.post:body.updatedAt" }
  • AddedVertex AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.bskyPostRef", kind: "prop", name: Some("bskyPostRef") }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.coverImage", kind: "prop", name: Some("coverImage") }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.description", kind: "prop", name: Some("description") }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.langs", kind: "prop", name: Some("langs") }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.parent", kind: "prop", name: Some("parent") }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.path", kind: "prop", name: Some("path") }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.root", kind: "prop", name: Some("root") }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.tags", kind: "prop", name: Some("tags") }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.textContent", kind: "prop", name: Some("textContent") }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.updatedAt", kind: "prop", name: Some("updatedAt") }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body.bskyPostRef", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body.content", tgt: "ai.syui.log.post:body.content:variant0", kind: "variant", name: Some("#markdown") }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body.content:variant0", tgt: "ai.syui.log.post#markdown", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body.langs", tgt: "ai.syui.log.post:body.langs:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "ai.syui.log.post:body.tags", tgt: "ai.syui.log.post:body.tags:items", kind: "items", name: None }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.post:body.content", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.post:body.content", sort: "maxGraphemes" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.post#translation.title", sort: "maxGraphemes", old_value: "300", new_value: "500" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.post#translation.title", sort: "maxLength", old_value: "3000", new_value: "5000" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.post:body.title", sort: "maxGraphemes", old_value: "300", new_value: "500" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.post:body.title", sort: "maxLength", old_value: "3000", new_value: "5000" }

Migration guidance

Removed

  • RemovedVertex { vertex_id: "ai.syui.log.post:body.createdAt" }
  • RemovedVertex { vertex_id: "ai.syui.log.post:body.lang" }

Added

  • AddedVertex { vertex_id: "ai.syui.log.post#markdown" }
  • AddedVertex { vertex_id: "ai.syui.log.post#markdown.text" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.bskyPostRef" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.content:variant0" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.coverImage" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.description" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.langs" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.langs:items" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.parent" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.path" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.publishedAt" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.root" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.site" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.tags" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.tags:items" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.textContent" }
  • AddedVertex { vertex_id: "ai.syui.log.post:body.updatedAt" }
  • AddedVertex { vertex_id: "com.atproto.repo.strongRef" }

Constraint changes

  • ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.post:body.content", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.post:body.content", sort: "maxGraphemes" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.post:body.title", sort: "maxLength", old_value: "3000", new_value: "5000" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.post:body.title", sort: "maxGraphemes", old_value: "300", new_value: "500" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.post#translation.title", sort: "maxGraphemes", old_value: "300", new_value: "500" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.post#translation.title", sort: "maxLength", old_value: "3000", new_value: "5000" }

Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "ai.syui.log.post:body", src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.publishedAt", kind: "prop", name: Some("publishedAt") }
  • Breaking: RequiredEdgeAdded { vertex_id: "ai.syui.log.post:body", src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.site", kind: "prop", name: Some("site") }
  • Breaking: RequiredEdgeAdded { vertex_id: "ai.syui.log.post#markdown", src: "ai.syui.log.post#markdown", tgt: "ai.syui.log.post#markdown.text", kind: "prop", name: Some("text") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "ai.syui.log.post:body", src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.createdAt", kind: "prop", name: Some("createdAt") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "ai.syui.log.post:body", src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.content", kind: "prop", name: Some("content") }
  • Breaking: RemovedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.lang", kind: "prop", name: Some("lang") }
  • Breaking: KindChanged { vertex_id: "ai.syui.log.post:body.content", old_kind: "string", new_kind: "union" }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.bskyPostRef", kind: "prop", name: Some("bskyPostRef") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.coverImage", kind: "prop", name: Some("coverImage") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.description", kind: "prop", name: Some("description") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.langs", kind: "prop", name: Some("langs") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.parent", kind: "prop", name: Some("parent") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.path", kind: "prop", name: Some("path") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.root", kind: "prop", name: Some("root") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.tags", kind: "prop", name: Some("tags") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.textContent", kind: "prop", name: Some("textContent") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body", tgt: "ai.syui.log.post:body.updatedAt", kind: "prop", name: Some("updatedAt") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body.bskyPostRef", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body.content", tgt: "ai.syui.log.post:body.content:variant0", kind: "variant", name: Some("#markdown") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body.content:variant0", tgt: "ai.syui.log.post#markdown", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body.langs", tgt: "ai.syui.log.post:body.langs:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "ai.syui.log.post:body.tags", tgt: "ai.syui.log.post:body.tags:items", kind: "items", name: None }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
5 "description": "Record containing a blog post.",
5 "description": "Record containing a blog post. Compatible with site.standard.document.",
66 "key": "tid",
77 "record": {
88 "properties": {
9 "bskyPostRef": {
10 "description": "Strong reference to a Bluesky post.",
11 "ref": "com.atproto.repo.strongRef",
12 "type": "ref"
13 },
914 "content": {
10 "description": "The content of the post (markdown).",
11 "maxGraphemes": 100000,
12 "maxLength": 1000000,
15 "closed": false,
16 "description": "Open union for content. Supports markdown and other formats via $type.",
17 "refs": [
18 "#markdown"
19 ],
20 "type": "union"
21 },
22 "coverImage": {
23 "accept": [
24 "image/*"
25 ],
26 "description": "Cover image. Less than 1MB.",
27 "maxSize": 1000000,
28 "type": "blob"
29 },
30 "description": {
31 "description": "A brief description or excerpt from the post.",
32 "maxGraphemes": 3000,
33 "maxLength": 30000,
1334 "type": "string"
1435 },
15 "createdAt": {
16 "description": "Client-declared timestamp when this post was originally created.",
36 "langs": {
37 "description": "Indicates human language of post content.",
38 "items": {
39 "format": "language",
40 "type": "string"
41 },
42 "maxLength": 3,
43 "type": "array"
44 },
45 "parent": {
46 "description": "AT-URI of the parent message being replied to.",
47 "format": "at-uri",
48 "type": "string"
49 },
50 "path": {
51 "description": "Combine with site URL to construct a canonical URL to the post.",
52 "type": "string"
53 },
54 "publishedAt": {
55 "description": "Timestamp of the post's publish time.",
1756 "format": "datetime",
1857 "type": "string"
1958 },
20 "lang": {
21 "description": "Language code of the original content (e.g., 'ja', 'en').",
22 "maxLength": 10,
59 "root": {
60 "description": "AT-URI of the root message in a thread.",
61 "format": "at-uri",
62 "type": "string"
63 },
64 "site": {
65 "description": "Points to a publication record (at://) or a publication URL (https://).",
66 "format": "uri",
2367 "type": "string"
2468 },
69 "tags": {
70 "description": "Tags to categorize the post.",
71 "items": {
72 "maxGraphemes": 128,
73 "maxLength": 1280,
74 "type": "string"
75 },
76 "type": "array"
77 },
78 "textContent": {
79 "description": "Plaintext representation of the post content. Should not contain markdown or other formatting.",
80 "type": "string"
81 },
2582 "title": {
26 "description": "The title of the post.",
27 "maxGraphemes": 300,
28 "maxLength": 3000,
83 "description": "Title of the post.",
84 "maxGraphemes": 500,
85 "maxLength": 5000,
2986 "type": "string"
3087 },
3188 "translations": {
3289 "description": "Translations of the post in other languages.",
3390 "ref": "#translationMap",
3491 "type": "ref"
92 },
93 "updatedAt": {
94 "description": "Timestamp of the post's last edit.",
95 "format": "datetime",
96 "type": "string"
3597 }
3698 },
3799 "required": [
100 "site",
38101 "title",
39 "content",
40 "createdAt"
102 "publishedAt"
41103 ],
42104 "type": "object"
43105 },
44106 "type": "record"
45107 },
108 "markdown": {
109 "description": "Markdown content format.",
110 "properties": {
111 "text": {
112 "description": "Markdown text content.",
113 "maxGraphemes": 100000,
114 "maxLength": 1000000,
115 "type": "string"
116 }
117 },
118 "required": [
119 "text"
120 ],
121 "type": "object"
122 },
46123 "translation": {
47124 "description": "A translation of a post.",
48125 "properties": {
49126 "content": {
50127 "maxGraphemes": 100000,
51128 "maxLength": 1000000,
52129 "type": "string"
53130 },
54131 "title": {
55 "maxGraphemes": 300,
56 "maxLength": 3000,
132 "maxGraphemes": 500,
133 "maxLength": 5000,
57134 "type": "string"
58135 }
59136 },
60137 "type": "object"
61138 },
62139 "translationMap": {
63140 "description": "Map of language codes to translations.",
64141 "properties": {
65142 "en": {
66143 "ref": "#translation",
67144 "type": "ref"
68145 },
69146 "ja": {
70147 "ref": "#translation",
71148 "type": "ref"
72149 }
73150 },
74151 "type": "object"
75152 }
76153 },
77154 "id": "ai.syui.log.post",
78155 "lexicon": 1
79156}

Compare other versions