full diff

dev.roe.ama

danielroe.dev +1 −1
From
bafyreicyonphvzvhnaaoajop2k2gspwasswgg7qte6jgclf5r5tsoa2vn4 indexed 2026-08-26 08:57 UTC View this version
To
bafyreifhzf4nanbpwwdfwalvh7krbmpa2krvoub6zsoq54daprpksl3fhm indexed 2026-08-26 13:09 UTC View this version

Compatibility

breaking 3 breaking changes, 2 non-breaking changes.

Breaking changes (3)
  • RemovedVertex RemovedVertex { vertex_id: "dev.roe.defs#aspectRatio" }
  • RemovedEdge RemovedEdge { src: "dev.roe.ama:body.imageDimensions", tgt: "dev.roe.defs#aspectRatio", kind: "ref", name: None }
  • ConstraintTightened ConstraintTightened { vertex_id: "dev.roe.ama:body.imageDimensions", sort: "ref", old_value: "dev.roe.defs#aspectRatio", new_value: "community.lexicon.app.defs#aspectRatio" }
Non-breaking changes (2)
  • AddedVertex AddedVertex { vertex_id: "community.lexicon.app.defs#aspectRatio" }
  • AddedEdge AddedEdge { src: "dev.roe.ama:body.imageDimensions", tgt: "community.lexicon.app.defs#aspectRatio", kind: "ref", name: None }

Migration guidance

Removed

  • RemovedVertex { vertex_id: "dev.roe.defs#aspectRatio" }

Added

  • AddedVertex { vertex_id: "community.lexicon.app.defs#aspectRatio" }

Constraint changes

  • ConstraintTightened ConstraintTightened { vertex_id: "dev.roe.ama:body.imageDimensions", sort: "ref", old_value: "dev.roe.defs#aspectRatio", new_value: "community.lexicon.app.defs#aspectRatio" }

Notes

  • Breaking: RemovedEdge { src: "dev.roe.ama:body.imageDimensions", tgt: "dev.roe.defs#aspectRatio", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "dev.roe.ama:body.imageDimensions", tgt: "community.lexicon.app.defs#aspectRatio", kind: "ref", name: None }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
55 "description": "An anonymous question, optionally with a published answer. While unanswered the question text is encrypted server-side (private to roe.dev). Once published, the question is rewritten in plaintext alongside the answer and per-platform URLs.",
66 "key": "tid",
77 "record": {
88 "properties": {
99 "answeredAt": {
1010 "format": "datetime",
1111 "type": "string"
1212 },
1313 "backgroundStyle": {
1414 "description": "ID of the background style used to render the image, either a preset name or a serialised custom emoji-and-gradient id. The set of styles is internal to roe.dev.",
1515 "maxLength": 128,
1616 "type": "string"
1717 },
1818 "createdAt": {
1919 "format": "datetime",
2020 "type": "string"
2121 },
2222 "encryptedQuestion": {
2323 "description": "AES-256-GCM envelope holding the raw question text. Present iff status=unanswered.",
2424 "maxLength": 500000,
2525 "type": "string"
2626 },
2727 "image": {
2828 "accept": [
2929 "image/*"
3030 ],
3131 "maxSize": 5000000,
3232 "type": "blob"
3333 },
3434 "imageDimensions": {
3535 "description": "Pixel dimensions of `image`. Stored alongside because PDS blobs don't carry intrinsic dimensions and Bluesky's image embed needs `aspectRatio`.",
36 "ref": "dev.roe.defs#aspectRatio",
36 "ref": "community.lexicon.app.defs#aspectRatio",
3737 "type": "ref"
3838 },
3939 "platforms": {
4040 "description": "Which platforms the editor enabled when publishing.",
4141 "ref": "#platforms",
4242 "type": "ref"
4343 },
4444 "posts": {
4545 "description": "Thread of response posts. Each post is the body of one Bluesky-thread item (and one Mastodon status, one LinkedIn comment chain entry, etc).",
4646 "items": {
4747 "ref": "#post",
4848 "type": "ref"
4949 },
5050 "maxLength": 16,
5151 "type": "array"
5252 },
5353 "publishedLinks": {
5454 "description": "Resolved per-platform URLs after publish.",
5555 "ref": "#publishedLinks",
5656 "type": "ref"
5757 },
5858 "question": {
5959 "description": "Plaintext question. Present iff status=answered; the editor decrypts encryptedQuestion at publish time and writes it here so the record is self-contained going forward.",
6060 "maxGraphemes": 50000,
6161 "maxLength": 500000,
6262 "type": "string"
6363 },
6464 "status": {
6565 "knownValues": [
6666 "unanswered",
6767 "answered"
6868 ],
6969 "type": "string"
7070 }
7171 },
7272 "required": [
7373 "status",
7474 "createdAt"
7575 ],
7676 "type": "object"
7777 },
7878 "type": "record"
7979 },
8080 "platforms": {
8181 "properties": {
8282 "bluesky": {
8383 "default": true,
8484 "type": "boolean"
8585 },
8686 "linkedin": {
8787 "default": true,
8888 "type": "boolean"
8989 },
9090 "mastodon": {
9191 "default": true,
9292 "type": "boolean"
9393 },
9494 "youtubeShorts": {
9595 "default": false,
9696 "type": "boolean"
9797 }
9898 },
9999 "type": "object"
100100 },
101101 "post": {
102102 "description": "One post in the response thread. Mentions reference dev.roe.entity records by AT URI so the publisher can rewrite per-platform handles at publish time.",
103103 "properties": {
104104 "mentions": {
105105 "description": "Strong-refs to dev.roe.entity records. The rkey of each referenced record is the placeholder token used in `text`.",
106106 "items": {
107107 "ref": "com.atproto.repo.strongRef",
108108 "type": "ref"
109109 },
110110 "maxLength": 32,
111111 "type": "array"
112112 },
113113 "text": {
114114 "description": "Body text. Plain text with `@<entity-rkey>` placeholders for entity mentions (e.g. `Thanks @abc123def456 for the help`). The placeholder syntax is internal; the publisher swaps them for the right per-platform handle.",
115115 "maxGraphemes": 50000,
116116 "maxLength": 500000,
117117 "type": "string"
118118 }
119119 },
120120 "required": [
121121 "text"
122122 ],
123123 "type": "object"
124124 },
125125 "publishedLinks": {
126126 "properties": {
127127 "bluesky": {
128128 "format": "uri",
129129 "type": "string"
130130 },
131131 "linkedin": {
132132 "format": "uri",
133133 "type": "string"
134134 },
135135 "mastodon": {
136136 "format": "uri",
137137 "type": "string"
138138 },
139139 "youtubeShorts": {
140140 "format": "uri",
141141 "type": "string"
142142 }
143143 },
144144 "type": "object"
145145 }
146146 },
147147 "id": "dev.roe.ama",
148148 "lexicon": 1
149149}

Compare other versions