com.suibari.nagi.appLinks

suibari.com

Schema Diff

+11 -12

From

CID
bafyreiek6bkssuj...
Indexed At
2026-07-23 00:54 UTC
View this version

To

CID
bafyreighvracja4...
Indexed At
2026-07-23 08:06 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

3 breaking changes, 4 non-breaking changes.

Breaking Changes (3)
  • RemovedVertex RemovedVertex { vertex_id: "com.suibari.nagi.appLinks#field.label" }
  • RemovedEdge RemovedEdge { src: "com.suibari.nagi.appLinks#field", tgt: "com.suibari.nagi.appLinks#field.label", kind: "prop", name: Some("label") }
  • ConstraintAdded ConstraintAdded { vertex_id: "com.suibari.nagi.appLinks#link.repeat", sort: "maxLength", value: "512" }
Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.appLinks#link.repeat" }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.appLinks#link", tgt: "com.suibari.nagi.appLinks#link.repeat", kind: "prop", name: Some("repeat") }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "com.suibari.nagi.appLinks#field.label", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "com.suibari.nagi.appLinks#field.label", sort: "maxGraphemes" }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "com.suibari.nagi.appLinks#field.label" }

Added Elements

  • AddedVertex { vertex_id: "com.suibari.nagi.appLinks#link.repeat" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "com.suibari.nagi.appLinks#link.repeat", sort: "maxLength", value: "512" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "com.suibari.nagi.appLinks#field.label", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "com.suibari.nagi.appLinks#field.label", sort: "maxGraphemes" }

Additional Notes

  • Breaking: RemovedEdge { src: "com.suibari.nagi.appLinks#field", tgt: "com.suibari.nagi.appLinks#field.label", kind: "prop", name: Some("label") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.appLinks#link", tgt: "com.suibari.nagi.appLinks#link.repeat", kind: "prop", name: Some("repeat") }
1 1
{
2 2
  "id": "com.suibari.nagi.appLinks",
3 3
  "defs": {
4 4
    "link": {
5 5
      "type": "object",
6 6
      "required": [
7 7
        "collection",
8 8
        "label",
9 9
        "selection",
10 10
        "fields"
11 11
      ],
12 12
      "properties": {
13 13
        "label": {
14 14
          "type": "string",
15 15
          "maxLength": 640,
16 16
          "description": "カード見出し(アプリ名相当)。",
17 17
          "maxGraphemes": 64
18 18
        },
19 19
        "appUri": {
20 20
          "type": "string",
21 21
          "format": "uri",
22 22
          "description": "アプリの Web サイト URL。favicon の取得元にもなる。"
23 23
        },
24 24
        "fields": {
25 25
          "type": "array",
26 26
          "items": {
27 27
            "ref": "#field",
28 28
            "type": "ref"
29 29
          },
30 30
          "maxLength": 10
31 31
        },
32 +
        "repeat": {
33 +
          "type": "string",
34 +
          "maxLength": 512,
35 +
          "description": "1レコード内で、このキーパスが指す配列の各要素を1行として展開する(例 \"cards\")。省略時は単一表示。指定時、fields の path は配列の各要素からの相対パスになる。"
36 +
        },
32 37
        "enabled": {
33 38
          "type": "boolean",
34 39
          "default": true,
35 40
          "description": "この連携をプロフィールに表示するか。"
36 41
        },
37 42
        "iconUrl": {
38 43
          "type": "string",
39 44
          "format": "uri",
40 45
          "description": "アプリのアイコン(favicon)URL。連携設定時に appUri から解決して保存する。"
41 46
        },
42 47
        "selection": {
43 48
          "type": "string",
44 49
          "default": "latest",
45 50
          "description": "表示するレコードの選び方。MVP は最新1件(latest)のみ。",
46 51
          "knownValues": [
47 52
            "latest"
48 53
          ]
49 54
        },
50 55
        "collection": {
51 56
          "type": "string",
52 57
          "format": "nsid",
53 58
          "description": "表示対象のレコード collection の NSID。"
54 59
        }
55 60
      }
56 61
    },
57 62
    "main": {
58 63
      "key": "literal:self",
59 64
      "type": "record",
60 65
      "record": {
61 66
        "type": "object",
62 67
        "required": [
63 68
          "links",
64 69
          "createdAt"
65 70
        ],
66 71
        "properties": {
67 72
          "links": {
68 73
            "type": "array",
69 74
            "items": {
70 75
              "ref": "#link",
71 76
              "type": "ref"
72 77
            },
73 78
            "maxLength": 20
74 79
          },
75 80
          "createdAt": {
76 81
            "type": "string",
77 82
            "format": "datetime"
78 83
          }
79 84
        }
80 85
      },
81 86
      "description": "プロフィールカードに並べる、任意の Atmosphere アプリへの連携宣言リスト。所有者本人が curate し、どの collection のどのフィールドを表示するかを定義する。公開レコード。"
82 87
    },
83 88
    "field": {
84 89
      "type": "object",
85 90
      "required": [
86 -
        "path",
87 -
        "role"
91 +
        "path"
88 92
      ],
89 93
      "properties": {
90 94
        "path": {
91 95
          "type": "string",
92 96
          "maxLength": 512,
93 97
          "description": "レコード本体を flatten したキーパス(例 \"trackName\" / \"embed.title\" / \"items[0].name\")。"
94 98
        },
95 99
        "role": {
96 100
          "type": "string",
97 -
          "description": "描画ヒント。title=見出し、value=本文、datetime=日時、url=リンク。",
101 +
          "description": "任意の描画ヒント。省略時は表示側が値から自動判別する。",
98 102
          "knownValues": [
99 -
            "title",
100 103
            "value",
101 104
            "datetime",
102 -
            "url"
105 +
            "url",
106 +
            "image"
103 107
          ]
104 -
        },
105 -
        "label": {
106 -
          "type": "string",
107 -
          "maxLength": 640,
108 -
          "description": "表示ラベル(省略時は path 末尾)。",
109 -
          "maxGraphemes": 64
110 108
        }
111 -
      }
109 +
      },
110 +
      "description": "プロフィールに表示するフィールド。表示するキーパスの宣言のみを持ち、描画の役割(値/日時/リンク/画像)は表示側が値から自動判別する。"
112 111
    }
113 112
  },
114 113
  "$type": "com.atproto.lexicon.schema",
115 114
  "lexicon": 1
116 115
}

Compare Other Versions

Lexicon Garden

@