me.linkna.linkinbio

linkna.me

Schema Diff

+1012 -4

From

CID
bafyreidirqkl766...
Indexed At
2026-02-18 19:34 UTC
View this version

To

CID
bafyreidwzodhqyu...
Indexed At
2026-04-21 15:34 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

76 breaking changes, 324 non-breaking changes.

Breaking Changes (76)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#redditPost", src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.subreddit", kind: "prop", name: Some("subreddit") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#redditPost", src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.title", kind: "prop", name: Some("title") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#redditPost", src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.numComments", kind: "prop", name: Some("numComments") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#redditPost", src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.score", kind: "prop", name: Some("score") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#redditPost", src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.url", kind: "prop", name: Some("url") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack", src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack", src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationUrl", kind: "prop", name: Some("publicationUrl") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack", src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack", src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationName", kind: "prop", name: Some("publicationName") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack", src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationId", kind: "prop", name: Some("publicationId") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetReddit", src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetReddit", src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.username", kind: "prop", name: Some("username") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetReddit", src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.profileUrl", kind: "prop", name: Some("profileUrl") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetReddit", src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMedium", src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMedium", src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMedium", src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.profileUrl", kind: "prop", name: Some("profileUrl") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMedium", src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.username", kind: "prop", name: Some("username") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord", src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord", src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord", src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.inviteUrl", kind: "prop", name: Some("inviteUrl") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord", src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.serverId", kind: "prop", name: Some("serverId") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord", src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.serverName", kind: "prop", name: Some("serverName") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube", src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelId", kind: "prop", name: Some("channelId") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube", src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube", src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube", src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelName", kind: "prop", name: Some("channelName") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube", src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelUrl", kind: "prop", name: Some("channelUrl") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#youtubeVideo", src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.title", kind: "prop", name: Some("title") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#youtubeVideo", src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.publishedAt", kind: "prop", name: Some("publishedAt") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#youtubeVideo", src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.videoId", kind: "prop", name: Some("videoId") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetClock", src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.mode", kind: "prop", name: Some("mode") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetClock", src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetClock", src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv", src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv", src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationUrl", kind: "prop", name: Some("publicationUrl") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv", src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationName", kind: "prop", name: Some("publicationName") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv", src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv", src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationId", kind: "prop", name: Some("publicationId") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon", src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.campaignUrl", kind: "prop", name: Some("campaignUrl") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon", src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.campaignId", kind: "prop", name: Some("campaignId") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon", src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon", src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.creatorName", kind: "prop", name: Some("creatorName") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon", src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#mediumArticle", src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.publishedAt", kind: "prop", name: Some("publishedAt") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#mediumArticle", src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.title", kind: "prop", name: Some("title") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#mediumArticle", src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.url", kind: "prop", name: Some("url") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#mediumArticle", src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.claps", kind: "prop", name: Some("claps") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetTwitch", src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetTwitch", src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetTwitch", src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.username", kind: "prop", name: Some("username") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetLastfm", src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.lastfmUsername", kind: "prop", name: Some("lastfmUsername") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetLastfm", src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.plays", kind: "prop", name: Some("plays") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetLastfm", src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetLastfm", src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#videoAspectRatio", src: "me.linkna.linkinbio#videoAspectRatio", tgt: "me.linkna.linkinbio#videoAspectRatio.height", kind: "prop", name: Some("height") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#videoAspectRatio", src: "me.linkna.linkinbio#videoAspectRatio", tgt: "me.linkna.linkinbio#videoAspectRatio.width", kind: "prop", name: Some("width") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMap", src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.locationName", kind: "prop", name: Some("locationName") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMap", src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMap", src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.longitude", kind: "prop", name: Some("longitude") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMap", src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMap", src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.latitude", kind: "prop", name: Some("latitude") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#headerCard", src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#headerCard", src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.text", kind: "prop", name: Some("text") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#headerCard", src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetVideo", src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.did", kind: "prop", name: Some("did") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetVideo", src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetVideo", src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.videoBlobRef", kind: "prop", name: Some("videoBlobRef") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetVideo", src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.type", kind: "prop", name: Some("type") }
  • RemovedEdge RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant1", kind: "variant", name: Some("#widgetGoodreads") }
  • RemovedEdge RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant2", kind: "variant", name: Some("#widgetGithub") }
  • RemovedEdge RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant3", kind: "variant", name: Some("#widgetTealfm") }
  • RemovedEdge RemovedEdge { src: "me.linkna.linkinbio:body.cards:items:variant1", tgt: "me.linkna.linkinbio#widgetGoodreads", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "me.linkna.linkinbio:body.cards:items:variant2", tgt: "me.linkna.linkinbio#widgetGithub", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "me.linkna.linkinbio:body.cards:items:variant3", tgt: "me.linkna.linkinbio#widgetTealfm", kind: "ref", name: None }
  • ConstraintTightened ConstraintTightened { vertex_id: "me.linkna.linkinbio#themeConfig.particles", sort: "knownValues", old_value: "[\"none\",\"white\",\"blue\"]", new_value: "[\"none\",\"white\",\"blue\",\"leaves\",\"grid-sm\",\"grid-lg\"]" }
Non-Breaking Changes (324)
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#connectedServices.lastfmUsername" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.alignment" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.text" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.claps" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.publishedAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.readingTime" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.subtitle" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.title" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.url" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.numComments" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.score" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.subreddit" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.title" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.url" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.backgroundImage" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.backgroundImageCredit" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.cursorSparkles" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.cursorStyle" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio.height" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio.width" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.description" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.imageUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.lastSyncedAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationId" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationName" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.label" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.mode" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.targetDate" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.timezone" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.bannerUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.description" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.iconUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.inviteUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.lastSyncedAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.memberCount" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.presenceCount" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.serverId" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.serverName" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.coverArtNotice" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.lastSyncedAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.lastfmUsername" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.plays" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.plays:items" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.latitude" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.locationName" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.longitude" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.mapImageRef" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.style" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.zoom" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.articles" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.articles:items" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.bio" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.displayName" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.followerCount" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.lastSyncedAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.profileUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.username" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.campaignId" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.campaignUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.creationName" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.creatorName" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.imageUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.lastSyncedAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.patronCount" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.postCount" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.avatarUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.commentKarma" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.karma" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.lastSyncedAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.linkKarma" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.profileUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.recentPosts" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.recentPosts:items" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.username" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.authorName" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.coverImageUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.description" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.imageUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.lastSyncedAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.postCount" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationId" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationName" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.subscriberCount" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTealfm.source" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.displayName" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.isLive" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.lastSyncedAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.profileImageUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.streamGame" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.streamTitle" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.username" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.viewerCount" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.alt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.aspectRatio" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.createdAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.did" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.loop" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.muted" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.showOverlay" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.title" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.videoBlobRef" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelId" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelName" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelUrl" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.enabled" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.id" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.lastSyncedAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.latestVideo" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.size" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.type" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.isShort" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.publishedAt" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.title" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.videoId" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant10" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant11" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant12" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant13" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant14" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant15" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant16" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant4" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant5" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant6" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant7" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant8" }
  • AddedVertex AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant9" }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#connectedServices", tgt: "me.linkna.linkinbio#connectedServices.lastfmUsername", kind: "prop", name: Some("lastfmUsername") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.alignment", kind: "prop", name: Some("alignment") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.readingTime", kind: "prop", name: Some("readingTime") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.subtitle", kind: "prop", name: Some("subtitle") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.backgroundImage", kind: "prop", name: Some("backgroundImage") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.backgroundImageCredit", kind: "prop", name: Some("backgroundImageCredit") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.cursorSparkles", kind: "prop", name: Some("cursorSparkles") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.cursorStyle", kind: "prop", name: Some("cursorStyle") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.description", kind: "prop", name: Some("description") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.imageUrl", kind: "prop", name: Some("imageUrl") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.label", kind: "prop", name: Some("label") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.targetDate", kind: "prop", name: Some("targetDate") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.timezone", kind: "prop", name: Some("timezone") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.bannerUrl", kind: "prop", name: Some("bannerUrl") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.description", kind: "prop", name: Some("description") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.iconUrl", kind: "prop", name: Some("iconUrl") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.memberCount", kind: "prop", name: Some("memberCount") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.presenceCount", kind: "prop", name: Some("presenceCount") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.coverArtNotice", kind: "prop", name: Some("coverArtNotice") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm.plays", tgt: "me.linkna.linkinbio#widgetLastfm.plays:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetLastfm.plays:items", tgt: "me.linkna.linkinbio#tealfmPlay", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.mapImageRef", kind: "prop", name: Some("mapImageRef") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.style", kind: "prop", name: Some("style") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.zoom", kind: "prop", name: Some("zoom") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.articles", kind: "prop", name: Some("articles") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.bio", kind: "prop", name: Some("bio") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.displayName", kind: "prop", name: Some("displayName") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.followerCount", kind: "prop", name: Some("followerCount") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium.articles", tgt: "me.linkna.linkinbio#widgetMedium.articles:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetMedium.articles:items", tgt: "me.linkna.linkinbio#mediumArticle", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.creationName", kind: "prop", name: Some("creationName") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.imageUrl", kind: "prop", name: Some("imageUrl") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.patronCount", kind: "prop", name: Some("patronCount") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.postCount", kind: "prop", name: Some("postCount") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.avatarUrl", kind: "prop", name: Some("avatarUrl") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.commentKarma", kind: "prop", name: Some("commentKarma") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.karma", kind: "prop", name: Some("karma") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.linkKarma", kind: "prop", name: Some("linkKarma") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.recentPosts", kind: "prop", name: Some("recentPosts") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit.recentPosts", tgt: "me.linkna.linkinbio#widgetReddit.recentPosts:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetReddit.recentPosts:items", tgt: "me.linkna.linkinbio#redditPost", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.authorName", kind: "prop", name: Some("authorName") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.coverImageUrl", kind: "prop", name: Some("coverImageUrl") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.description", kind: "prop", name: Some("description") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.imageUrl", kind: "prop", name: Some("imageUrl") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.postCount", kind: "prop", name: Some("postCount") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.subscriberCount", kind: "prop", name: Some("subscriberCount") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTealfm", tgt: "me.linkna.linkinbio#widgetTealfm.source", kind: "prop", name: Some("source") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.displayName", kind: "prop", name: Some("displayName") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.isLive", kind: "prop", name: Some("isLive") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.profileImageUrl", kind: "prop", name: Some("profileImageUrl") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.streamGame", kind: "prop", name: Some("streamGame") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.streamTitle", kind: "prop", name: Some("streamTitle") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.viewerCount", kind: "prop", name: Some("viewerCount") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.alt", kind: "prop", name: Some("alt") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.aspectRatio", kind: "prop", name: Some("aspectRatio") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.createdAt", kind: "prop", name: Some("createdAt") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.loop", kind: "prop", name: Some("loop") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.muted", kind: "prop", name: Some("muted") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.showOverlay", kind: "prop", name: Some("showOverlay") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.title", kind: "prop", name: Some("title") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetVideo.aspectRatio", tgt: "me.linkna.linkinbio#videoAspectRatio", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.enabled", kind: "prop", name: Some("enabled") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.latestVideo", kind: "prop", name: Some("latestVideo") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.size", kind: "prop", name: Some("size") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#widgetYoutube.latestVideo", tgt: "me.linkna.linkinbio#youtubeVideo", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.isShort", kind: "prop", name: Some("isShort") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant1", kind: "variant", name: Some("#headerCard") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant10", kind: "variant", name: Some("#widgetBeehiiv") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant11", kind: "variant", name: Some("#widgetVideo") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant12", kind: "variant", name: Some("#widgetTwitch") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant13", kind: "variant", name: Some("#widgetDiscord") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant14", kind: "variant", name: Some("#widgetReddit") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant15", kind: "variant", name: Some("#widgetMedium") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant16", kind: "variant", name: Some("#widgetMap") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant2", kind: "variant", name: Some("#widgetGoodreads") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant3", kind: "variant", name: Some("#widgetGithub") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant4", kind: "variant", name: Some("#widgetTealfm") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant5", kind: "variant", name: Some("#widgetLastfm") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant6", kind: "variant", name: Some("#widgetClock") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant7", kind: "variant", name: Some("#widgetYoutube") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant8", kind: "variant", name: Some("#widgetPatreon") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant9", kind: "variant", name: Some("#widgetSubstack") }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant1", tgt: "me.linkna.linkinbio#headerCard", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant10", tgt: "me.linkna.linkinbio#widgetBeehiiv", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant11", tgt: "me.linkna.linkinbio#widgetVideo", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant12", tgt: "me.linkna.linkinbio#widgetTwitch", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant13", tgt: "me.linkna.linkinbio#widgetDiscord", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant14", tgt: "me.linkna.linkinbio#widgetReddit", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant15", tgt: "me.linkna.linkinbio#widgetMedium", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant16", tgt: "me.linkna.linkinbio#widgetMap", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant2", tgt: "me.linkna.linkinbio#widgetGoodreads", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant3", tgt: "me.linkna.linkinbio#widgetGithub", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant4", tgt: "me.linkna.linkinbio#widgetTealfm", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant5", tgt: "me.linkna.linkinbio#widgetLastfm", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant6", tgt: "me.linkna.linkinbio#widgetClock", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant7", tgt: "me.linkna.linkinbio#widgetYoutube", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant8", tgt: "me.linkna.linkinbio#widgetPatreon", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant9", tgt: "me.linkna.linkinbio#widgetSubstack", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "me.linkna.linkinbio#connectedServices.lastfmUsername" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.alignment" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.text" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#headerCard.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.claps" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.publishedAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.readingTime" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.subtitle" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.title" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#mediumArticle.url" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.numComments" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.score" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.subreddit" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.title" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#redditPost.url" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.backgroundImage" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.backgroundImageCredit" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.cursorSparkles" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#themeConfig.cursorStyle" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio.height" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#videoAspectRatio.width" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.description" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.imageUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.lastSyncedAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationId" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationName" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.publicationUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetBeehiiv.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.label" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.mode" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.targetDate" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.timezone" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetClock.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.bannerUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.description" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.iconUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.inviteUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.lastSyncedAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.memberCount" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.presenceCount" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.serverId" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.serverName" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetDiscord.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.coverArtNotice" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.lastSyncedAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.lastfmUsername" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.plays" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.plays:items" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetLastfm.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.latitude" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.locationName" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.longitude" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.mapImageRef" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.style" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMap.zoom" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.articles" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.articles:items" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.bio" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.displayName" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.followerCount" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.lastSyncedAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.profileUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetMedium.username" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.campaignId" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.campaignUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.creationName" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.creatorName" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.imageUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.lastSyncedAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.patronCount" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.postCount" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetPatreon.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.avatarUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.commentKarma" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.karma" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.lastSyncedAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.linkKarma" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.profileUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.recentPosts" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.recentPosts:items" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetReddit.username" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.authorName" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.coverImageUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.description" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.imageUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.lastSyncedAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.postCount" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationId" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationName" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.publicationUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.subscriberCount" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetSubstack.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTealfm.source" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.displayName" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.isLive" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.lastSyncedAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.profileImageUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.streamGame" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.streamTitle" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.username" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetTwitch.viewerCount" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.alt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.aspectRatio" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.createdAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.did" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.loop" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.muted" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.showOverlay" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.title" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetVideo.videoBlobRef" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelId" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelName" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.channelUrl" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.enabled" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.id" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.lastSyncedAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.latestVideo" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.size" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#widgetYoutube.type" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.isShort" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.publishedAt" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.title" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio#youtubeVideo.videoId" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant10" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant11" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant12" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant13" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant14" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant15" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant16" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant4" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant5" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant6" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant7" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant8" }
  • AddedVertex { vertex_id: "me.linkna.linkinbio:body.cards:items:variant9" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "me.linkna.linkinbio#themeConfig.particles", sort: "knownValues", old_value: "[\"none\",\"white\",\"blue\"]", new_value: "[\"none\",\"white\",\"blue\",\"leaves\",\"grid-sm\",\"grid-lg\"]" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#redditPost", src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.subreddit", kind: "prop", name: Some("subreddit") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#redditPost", src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.title", kind: "prop", name: Some("title") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#redditPost", src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.numComments", kind: "prop", name: Some("numComments") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#redditPost", src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.score", kind: "prop", name: Some("score") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#redditPost", src: "me.linkna.linkinbio#redditPost", tgt: "me.linkna.linkinbio#redditPost.url", kind: "prop", name: Some("url") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMedium", src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMedium", src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMedium", src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.profileUrl", kind: "prop", name: Some("profileUrl") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMedium", src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.username", kind: "prop", name: Some("username") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#videoAspectRatio", src: "me.linkna.linkinbio#videoAspectRatio", tgt: "me.linkna.linkinbio#videoAspectRatio.height", kind: "prop", name: Some("height") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#videoAspectRatio", src: "me.linkna.linkinbio#videoAspectRatio", tgt: "me.linkna.linkinbio#videoAspectRatio.width", kind: "prop", name: Some("width") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube", src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelId", kind: "prop", name: Some("channelId") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube", src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube", src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube", src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelName", kind: "prop", name: Some("channelName") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetYoutube", src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.channelUrl", kind: "prop", name: Some("channelUrl") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#headerCard", src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#headerCard", src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.text", kind: "prop", name: Some("text") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#headerCard", src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetLastfm", src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.lastfmUsername", kind: "prop", name: Some("lastfmUsername") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetLastfm", src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.plays", kind: "prop", name: Some("plays") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetLastfm", src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetLastfm", src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetTwitch", src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetTwitch", src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetTwitch", src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.username", kind: "prop", name: Some("username") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon", src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.campaignUrl", kind: "prop", name: Some("campaignUrl") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon", src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.campaignId", kind: "prop", name: Some("campaignId") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon", src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon", src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.creatorName", kind: "prop", name: Some("creatorName") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetPatreon", src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord", src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord", src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord", src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.inviteUrl", kind: "prop", name: Some("inviteUrl") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord", src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.serverId", kind: "prop", name: Some("serverId") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetDiscord", src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.serverName", kind: "prop", name: Some("serverName") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetVideo", src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.did", kind: "prop", name: Some("did") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetVideo", src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetVideo", src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.videoBlobRef", kind: "prop", name: Some("videoBlobRef") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetVideo", src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#mediumArticle", src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.publishedAt", kind: "prop", name: Some("publishedAt") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#mediumArticle", src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.title", kind: "prop", name: Some("title") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#mediumArticle", src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.url", kind: "prop", name: Some("url") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#mediumArticle", src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.claps", kind: "prop", name: Some("claps") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv", src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv", src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationUrl", kind: "prop", name: Some("publicationUrl") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv", src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationName", kind: "prop", name: Some("publicationName") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv", src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetBeehiiv", src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.publicationId", kind: "prop", name: Some("publicationId") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#youtubeVideo", src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.title", kind: "prop", name: Some("title") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#youtubeVideo", src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.publishedAt", kind: "prop", name: Some("publishedAt") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#youtubeVideo", src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.videoId", kind: "prop", name: Some("videoId") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetReddit", src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetReddit", src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.username", kind: "prop", name: Some("username") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetReddit", src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.profileUrl", kind: "prop", name: Some("profileUrl") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetReddit", src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMap", src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.locationName", kind: "prop", name: Some("locationName") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMap", src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMap", src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.longitude", kind: "prop", name: Some("longitude") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMap", src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetMap", src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.latitude", kind: "prop", name: Some("latitude") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack", src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack", src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationUrl", kind: "prop", name: Some("publicationUrl") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack", src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack", src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationName", kind: "prop", name: Some("publicationName") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetSubstack", src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.publicationId", kind: "prop", name: Some("publicationId") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetClock", src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.mode", kind: "prop", name: Some("mode") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetClock", src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "me.linkna.linkinbio#widgetClock", src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.id", kind: "prop", name: Some("id") }
  • Breaking: RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant1", kind: "variant", name: Some("#widgetGoodreads") }
  • Breaking: RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant2", kind: "variant", name: Some("#widgetGithub") }
  • Breaking: RemovedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant3", kind: "variant", name: Some("#widgetTealfm") }
  • Breaking: RemovedEdge { src: "me.linkna.linkinbio:body.cards:items:variant1", tgt: "me.linkna.linkinbio#widgetGoodreads", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "me.linkna.linkinbio:body.cards:items:variant2", tgt: "me.linkna.linkinbio#widgetGithub", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "me.linkna.linkinbio:body.cards:items:variant3", tgt: "me.linkna.linkinbio#widgetTealfm", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#connectedServices", tgt: "me.linkna.linkinbio#connectedServices.lastfmUsername", kind: "prop", name: Some("lastfmUsername") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.alignment", kind: "prop", name: Some("alignment") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#headerCard", tgt: "me.linkna.linkinbio#headerCard.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.readingTime", kind: "prop", name: Some("readingTime") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#mediumArticle", tgt: "me.linkna.linkinbio#mediumArticle.subtitle", kind: "prop", name: Some("subtitle") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.backgroundImage", kind: "prop", name: Some("backgroundImage") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.backgroundImageCredit", kind: "prop", name: Some("backgroundImageCredit") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.cursorSparkles", kind: "prop", name: Some("cursorSparkles") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#themeConfig", tgt: "me.linkna.linkinbio#themeConfig.cursorStyle", kind: "prop", name: Some("cursorStyle") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.description", kind: "prop", name: Some("description") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.imageUrl", kind: "prop", name: Some("imageUrl") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetBeehiiv", tgt: "me.linkna.linkinbio#widgetBeehiiv.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.label", kind: "prop", name: Some("label") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.targetDate", kind: "prop", name: Some("targetDate") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetClock", tgt: "me.linkna.linkinbio#widgetClock.timezone", kind: "prop", name: Some("timezone") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.bannerUrl", kind: "prop", name: Some("bannerUrl") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.description", kind: "prop", name: Some("description") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.iconUrl", kind: "prop", name: Some("iconUrl") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.memberCount", kind: "prop", name: Some("memberCount") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.presenceCount", kind: "prop", name: Some("presenceCount") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetDiscord", tgt: "me.linkna.linkinbio#widgetDiscord.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.coverArtNotice", kind: "prop", name: Some("coverArtNotice") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm", tgt: "me.linkna.linkinbio#widgetLastfm.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm.plays", tgt: "me.linkna.linkinbio#widgetLastfm.plays:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetLastfm.plays:items", tgt: "me.linkna.linkinbio#tealfmPlay", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.mapImageRef", kind: "prop", name: Some("mapImageRef") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.style", kind: "prop", name: Some("style") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMap", tgt: "me.linkna.linkinbio#widgetMap.zoom", kind: "prop", name: Some("zoom") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.articles", kind: "prop", name: Some("articles") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.bio", kind: "prop", name: Some("bio") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.displayName", kind: "prop", name: Some("displayName") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.followerCount", kind: "prop", name: Some("followerCount") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium", tgt: "me.linkna.linkinbio#widgetMedium.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium.articles", tgt: "me.linkna.linkinbio#widgetMedium.articles:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetMedium.articles:items", tgt: "me.linkna.linkinbio#mediumArticle", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.creationName", kind: "prop", name: Some("creationName") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.imageUrl", kind: "prop", name: Some("imageUrl") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.patronCount", kind: "prop", name: Some("patronCount") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.postCount", kind: "prop", name: Some("postCount") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetPatreon", tgt: "me.linkna.linkinbio#widgetPatreon.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.avatarUrl", kind: "prop", name: Some("avatarUrl") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.commentKarma", kind: "prop", name: Some("commentKarma") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.karma", kind: "prop", name: Some("karma") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.linkKarma", kind: "prop", name: Some("linkKarma") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.recentPosts", kind: "prop", name: Some("recentPosts") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit", tgt: "me.linkna.linkinbio#widgetReddit.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit.recentPosts", tgt: "me.linkna.linkinbio#widgetReddit.recentPosts:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetReddit.recentPosts:items", tgt: "me.linkna.linkinbio#redditPost", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.authorName", kind: "prop", name: Some("authorName") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.coverImageUrl", kind: "prop", name: Some("coverImageUrl") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.description", kind: "prop", name: Some("description") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.imageUrl", kind: "prop", name: Some("imageUrl") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.postCount", kind: "prop", name: Some("postCount") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetSubstack", tgt: "me.linkna.linkinbio#widgetSubstack.subscriberCount", kind: "prop", name: Some("subscriberCount") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTealfm", tgt: "me.linkna.linkinbio#widgetTealfm.source", kind: "prop", name: Some("source") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.displayName", kind: "prop", name: Some("displayName") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.isLive", kind: "prop", name: Some("isLive") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.profileImageUrl", kind: "prop", name: Some("profileImageUrl") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.streamGame", kind: "prop", name: Some("streamGame") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.streamTitle", kind: "prop", name: Some("streamTitle") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetTwitch", tgt: "me.linkna.linkinbio#widgetTwitch.viewerCount", kind: "prop", name: Some("viewerCount") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.alt", kind: "prop", name: Some("alt") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.aspectRatio", kind: "prop", name: Some("aspectRatio") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.createdAt", kind: "prop", name: Some("createdAt") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.loop", kind: "prop", name: Some("loop") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.muted", kind: "prop", name: Some("muted") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.showOverlay", kind: "prop", name: Some("showOverlay") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo", tgt: "me.linkna.linkinbio#widgetVideo.title", kind: "prop", name: Some("title") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetVideo.aspectRatio", tgt: "me.linkna.linkinbio#videoAspectRatio", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.enabled", kind: "prop", name: Some("enabled") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.lastSyncedAt", kind: "prop", name: Some("lastSyncedAt") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.latestVideo", kind: "prop", name: Some("latestVideo") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube", tgt: "me.linkna.linkinbio#widgetYoutube.size", kind: "prop", name: Some("size") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#widgetYoutube.latestVideo", tgt: "me.linkna.linkinbio#youtubeVideo", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio#youtubeVideo", tgt: "me.linkna.linkinbio#youtubeVideo.isShort", kind: "prop", name: Some("isShort") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant1", kind: "variant", name: Some("#headerCard") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant10", kind: "variant", name: Some("#widgetBeehiiv") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant11", kind: "variant", name: Some("#widgetVideo") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant12", kind: "variant", name: Some("#widgetTwitch") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant13", kind: "variant", name: Some("#widgetDiscord") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant14", kind: "variant", name: Some("#widgetReddit") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant15", kind: "variant", name: Some("#widgetMedium") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant16", kind: "variant", name: Some("#widgetMap") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant2", kind: "variant", name: Some("#widgetGoodreads") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant3", kind: "variant", name: Some("#widgetGithub") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant4", kind: "variant", name: Some("#widgetTealfm") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant5", kind: "variant", name: Some("#widgetLastfm") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant6", kind: "variant", name: Some("#widgetClock") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant7", kind: "variant", name: Some("#widgetYoutube") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant8", kind: "variant", name: Some("#widgetPatreon") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items", tgt: "me.linkna.linkinbio:body.cards:items:variant9", kind: "variant", name: Some("#widgetSubstack") }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant1", tgt: "me.linkna.linkinbio#headerCard", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant10", tgt: "me.linkna.linkinbio#widgetBeehiiv", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant11", tgt: "me.linkna.linkinbio#widgetVideo", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant12", tgt: "me.linkna.linkinbio#widgetTwitch", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant13", tgt: "me.linkna.linkinbio#widgetDiscord", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant14", tgt: "me.linkna.linkinbio#widgetReddit", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant15", tgt: "me.linkna.linkinbio#widgetMedium", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant16", tgt: "me.linkna.linkinbio#widgetMap", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant2", tgt: "me.linkna.linkinbio#widgetGoodreads", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant3", tgt: "me.linkna.linkinbio#widgetGithub", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant4", tgt: "me.linkna.linkinbio#widgetTealfm", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant5", tgt: "me.linkna.linkinbio#widgetLastfm", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant6", tgt: "me.linkna.linkinbio#widgetClock", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant7", tgt: "me.linkna.linkinbio#widgetYoutube", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant8", tgt: "me.linkna.linkinbio#widgetPatreon", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "me.linkna.linkinbio:body.cards:items:variant9", tgt: "me.linkna.linkinbio#widgetSubstack", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "connectedServices": {
5 5
      "description": "Saved service credentials/identifiers for pre-filling widget forms.",
6 6
      "properties": {
7 7
        "githubUsername": {
8 8
          "description": "GitHub username.",
9 9
          "type": "string"
10 10
        },
11 11
        "goodreadsUserId": {
12 12
          "description": "Goodreads numeric user ID.",
13 13
          "type": "string"
14 +
        },
15 +
        "lastfmUsername": {
16 +
          "description": "Last.fm username.",
17 +
          "type": "string"
14 18
        }
15 19
      },
16 20
      "type": "object"
17 21
    },
18 22
    "githubContributionDay": {
19 23
      "description": "A single day's contribution data from GitHub.",
20 24
      "properties": {
21 25
        "count": {
22 26
          "description": "Number of contributions on this day.",
23 27
          "type": "integer"
24 28
        },
25 29
        "date": {
26 30
          "description": "Date in YYYY-MM-DD format.",
27 31
          "type": "string"
28 32
        },
29 33
        "level": {
30 34
          "description": "Contribution intensity level (0=none, 4=highest).",
31 35
          "maximum": 4,
32 36
          "minimum": 0,
33 37
          "type": "integer"
34 38
        }
35 39
      },
36 40
      "required": [
37 41
        "date",
38 42
        "count",
39 43
        "level"
40 44
      ],
41 45
      "type": "object"
42 46
    },
43 47
    "goodreadsBook": {
44 48
      "description": "A book from a Goodreads shelf.",
45 49
      "properties": {
46 50
        "author": {
47 51
          "description": "Book author.",
48 52
          "type": "string"
49 53
        },
50 54
        "coverUrl": {
51 55
          "description": "URL to the book cover image.",
52 56
          "type": "string"
53 57
        },
54 58
        "link": {
55 59
          "description": "URL to the book on Goodreads.",
56 60
          "type": "string"
57 61
        },
58 62
        "rating": {
59 63
          "description": "User's rating (1-5), or absent if unrated.",
60 64
          "maximum": 5,
61 65
          "minimum": 0,
62 66
          "type": "integer"
63 67
        },
64 68
        "title": {
65 69
          "description": "Book title.",
66 70
          "type": "string"
67 71
        }
68 72
      },
69 73
      "required": [
70 74
        "title",
71 75
        "author"
72 76
      ],
73 77
      "type": "object"
74 78
    },
79 +
    "headerCard": {
80 +
      "description": "A section header/divider card.",
81 +
      "properties": {
82 +
        "alignment": {
83 +
          "description": "Text alignment for the header. Defaults to the user's button alignment.",
84 +
          "enum": [
85 +
            "left",
86 +
            "center",
87 +
            "right"
88 +
          ],
89 +
          "type": "string"
90 +
        },
91 +
        "enabled": {
92 +
          "description": "Whether the header is visible on the public page. Defaults to true.",
93 +
          "type": "boolean"
94 +
        },
95 +
        "id": {
96 +
          "description": "Unique identifier for the card.",
97 +
          "type": "string"
98 +
        },
99 +
        "text": {
100 +
          "description": "Header text displayed as a section divider.",
101 +
          "maxLength": 100,
102 +
          "type": "string"
103 +
        },
104 +
        "type": {
105 +
          "const": "header",
106 +
          "description": "Card type discriminator.",
107 +
          "type": "string"
108 +
        }
109 +
      },
110 +
      "required": [
111 +
        "id",
112 +
        "type",
113 +
        "text"
114 +
      ],
115 +
      "type": "object"
116 +
    },
75 117
    "linkCard": {
76 118
      "description": "A standard link card.",
77 119
      "properties": {
78 120
        "enabled": {
79 121
          "description": "Whether the card is visible on the public page. Defaults to true.",
80 122
          "type": "boolean"
81 123
        },
82 124
        "highlighted": {
83 125
          "description": "Whether the card is visually highlighted.",
84 126
          "type": "boolean"
85 127
        },
86 128
        "id": {
87 129
          "description": "Unique identifier for the card.",
88 130
          "type": "string"
89 131
        },
90 132
        "text": {
91 133
          "description": "Display text for the card (falls back to URL domain if empty).",
92 134
          "maxLength": 100,
93 135
          "type": "string"
94 136
        },
95 137
        "type": {
96 138
          "description": "Card type discriminator. Value: 'link' or absent for link cards.",
97 139
          "type": "string"
98 140
        },
99 141
        "url": {
100 142
          "description": "URL the card links to.",
101 143
          "format": "uri",
102 144
          "type": "string"
103 145
        }
104 146
      },
105 147
      "type": "object"
106 148
    },
107 149
    "main": {
108 150
      "description": "A user's link-in-bio page containing cards, theme configuration, and social icons.",
109 151
      "key": "literal:self",
110 152
      "record": {
111 153
        "properties": {
112 154
          "cards": {
113 -
            "description": "Ordered list of cards on the page. Each card is a union of linkCard, widgetGoodreads, widgetGithub, or widgetTealfm.",
155 +
            "description": "Ordered list of cards on the page.",
114 156
            "items": {
115 157
              "refs": [
116 158
                "#linkCard",
159 +
                "#headerCard",
117 160
                "#widgetGoodreads",
118 161
                "#widgetGithub",
119 -
                "#widgetTealfm"
162 +
                "#widgetTealfm",
163 +
                "#widgetLastfm",
164 +
                "#widgetClock",
165 +
                "#widgetYoutube",
166 +
                "#widgetPatreon",
167 +
                "#widgetSubstack",
168 +
                "#widgetBeehiiv",
169 +
                "#widgetVideo",
170 +
                "#widgetTwitch",
171 +
                "#widgetDiscord",
172 +
                "#widgetReddit",
173 +
                "#widgetMedium",
174 +
                "#widgetMap"
120 175
              ],
121 176
              "type": "union"
122 177
            },
123 178
            "type": "array"
124 179
          },
125 180
          "connectedServices": {
126 181
            "ref": "#connectedServices",
127 182
            "type": "ref"
128 183
          },
129 184
          "socialIcons": {
130 185
            "description": "Social media icons displayed on the profile.",
131 186
            "items": {
132 187
              "ref": "#socialIcon",
133 188
              "type": "ref"
134 189
            },
135 190
            "type": "array"
136 191
          },
137 192
          "theme": {
138 193
            "description": "Deprecated: use themeConfig instead.",
139 194
            "type": "string"
140 195
          },
141 196
          "themeConfig": {
142 197
            "ref": "#themeConfig",
143 198
            "type": "ref"
144 199
          }
145 200
        },
146 201
        "required": [
147 202
          "cards"
148 203
        ],
149 204
        "type": "object"
150 205
      },
151 206
      "type": "record"
152 207
    },
208 +
    "mediumArticle": {
209 +
      "description": "A Medium article.",
210 +
      "properties": {
211 +
        "claps": {
212 +
          "description": "Number of claps.",
213 +
          "type": "integer"
214 +
        },
215 +
        "publishedAt": {
216 +
          "description": "When the article was published.",
217 +
          "type": "string"
218 +
        },
219 +
        "readingTime": {
220 +
          "description": "Estimated reading time in minutes.",
221 +
          "type": "integer"
222 +
        },
223 +
        "subtitle": {
224 +
          "description": "Article subtitle.",
225 +
          "type": "string"
226 +
        },
227 +
        "title": {
228 +
          "description": "Article title.",
229 +
          "type": "string"
230 +
        },
231 +
        "url": {
232 +
          "description": "Article URL.",
233 +
          "type": "string"
234 +
        }
235 +
      },
236 +
      "required": [
237 +
        "title",
238 +
        "url",
239 +
        "publishedAt",
240 +
        "claps"
241 +
      ],
242 +
      "type": "object"
243 +
    },
244 +
    "redditPost": {
245 +
      "description": "A Reddit post.",
246 +
      "properties": {
247 +
        "numComments": {
248 +
          "description": "Number of comments.",
249 +
          "type": "integer"
250 +
        },
251 +
        "score": {
252 +
          "description": "Post score.",
253 +
          "type": "integer"
254 +
        },
255 +
        "subreddit": {
256 +
          "description": "Subreddit name.",
257 +
          "type": "string"
258 +
        },
259 +
        "title": {
260 +
          "description": "Post title.",
261 +
          "type": "string"
262 +
        },
263 +
        "url": {
264 +
          "description": "Post URL.",
265 +
          "type": "string"
266 +
        }
267 +
      },
268 +
      "required": [
269 +
        "title",
270 +
        "subreddit",
271 +
        "url",
272 +
        "score",
273 +
        "numComments"
274 +
      ],
275 +
      "type": "object"
276 +
    },
153 277
    "socialIcon": {
154 278
      "description": "A social media icon link.",
155 279
      "properties": {
156 280
        "id": {
157 281
          "description": "Unique identifier for the icon.",
158 282
          "type": "string"
159 283
        },
160 284
        "platform": {
161 285
          "description": "Platform identifier (e.g., 'bluesky', 'twitter', 'instagram').",
162 286
          "type": "string"
163 287
        },
164 288
        "url": {
165 289
          "description": "URL to the user's profile on this platform.",
166 290
          "format": "uri",
167 291
          "type": "string"
168 292
        }
169 293
      },
170 294
      "required": [
171 295
        "id",
172 296
        "platform",
173 297
        "url"
174 298
      ],
175 299
      "type": "object"
176 300
    },
177 301
    "tealfmPlay": {
178 302
      "description": "A recently played track from teal.fm.",
179 303
      "properties": {
180 304
        "artistName": {
181 305
          "description": "Artist name(s).",
182 306
          "type": "string"
183 307
        },
184 308
        "coverUrl": {
185 309
          "description": "URL to the album cover image (from Cover Art Archive).",
186 310
          "type": "string"
187 311
        },
188 312
        "originUrl": {
189 313
          "description": "URL to the track on the original music service.",
190 314
          "type": "string"
191 315
        },
192 316
        "playedTime": {
193 317
          "description": "When the track was played.",
194 318
          "format": "datetime",
195 319
          "type": "string"
196 320
        },
197 321
        "releaseName": {
198 322
          "description": "Album/release name.",
199 323
          "type": "string"
200 324
        },
201 325
        "trackName": {
202 326
          "description": "Track/song name.",
203 327
          "type": "string"
204 328
        }
205 329
      },
206 330
      "required": [
207 331
        "trackName",
208 332
        "artistName"
209 333
      ],
210 334
      "type": "object"
211 335
    },
212 336
    "themeConfig": {
213 337
      "description": "Theme configuration for the page appearance.",
214 338
      "properties": {
215 339
        "backgroundColor": {
216 340
          "description": "Page background color.",
217 341
          "type": "string"
218 342
        },
219 343
        "backgroundGradient": {
220 344
          "description": "CSS gradient for the page background.",
221 345
          "type": "string"
222 346
        },
347 +
        "backgroundImage": {
348 +
          "accept": [
349 +
            "image/png",
350 +
            "image/jpeg",
351 +
            "image/webp"
352 +
          ],
353 +
          "description": "Background wallpaper image blob.",
354 +
          "maxSize": 10000000,
355 +
          "type": "blob"
356 +
        },
357 +
        "backgroundImageCredit": {
358 +
          "description": "Optional credit URL for the wallpaper image artist. Stored for attribution purposes only, not displayed on the public page.",
359 +
          "format": "uri",
360 +
          "type": "string"
361 +
        },
223 362
        "buttonAlignment": {
224 363
          "description": "Button content alignment. Default: left.",
225 364
          "knownValues": [
226 365
            "left",
227 366
            "right"
228 367
          ],
229 368
          "type": "string"
230 369
        },
231 370
        "buttonHoverGlow": {
232 371
          "description": "Whether buttons glow on hover. Default: false.",
233 372
          "type": "boolean"
234 373
        },
235 374
        "buttonHoverGlowColor": {
236 375
          "description": "Color for the button hover glow effect.",
237 376
          "type": "string"
238 377
        },
239 378
        "cardBackgroundColor": {
240 379
          "description": "Individual card/button background color.",
241 380
          "type": "string"
242 381
        },
243 382
        "cardBorderColor": {
244 383
          "description": "Card/button border color.",
245 384
          "type": "string"
246 385
        },
247 386
        "cardBorderRadius": {
248 387
          "description": "Card/button border radius.",
249 388
          "knownValues": [
250 389
            "none",
251 390
            "sm",
252 391
            "md",
253 392
            "lg",
254 393
            "full"
255 394
          ],
256 395
          "type": "string"
257 396
        },
258 397
        "cardHoverColor": {
259 398
          "description": "Card/button border color on hover.",
260 399
          "type": "string"
261 400
        },
262 401
        "cardShadow": {
263 402
          "description": "Card/button shadow intensity.",
264 403
          "knownValues": [
265 404
            "none",
266 405
            "sm",
267 406
            "md",
268 407
            "lg",
269 408
            "xl"
270 409
          ],
271 410
          "type": "string"
272 411
        },
273 412
        "cardTextColor": {
274 413
          "description": "Card/button text color.",
275 414
          "type": "string"
276 415
        },
277 416
        "contentCardColor": {
278 417
          "description": "Card container background color.",
279 418
          "type": "string"
280 419
        },
420 +
        "cursorSparkles": {
421 +
          "description": "Whether cursor has sparkle trail. Default: false.",
422 +
          "type": "boolean"
423 +
        },
424 +
        "cursorStyle": {
425 +
          "description": "Custom cursor style. Default: default.",
426 +
          "knownValues": [
427 +
            "default",
428 +
            "hello-kitty"
429 +
          ],
430 +
          "type": "string"
431 +
        },
281 432
        "fontFamily": {
282 433
          "description": "Font family for the page.",
283 434
          "type": "string"
284 435
        },
285 436
        "fontSize": {
286 437
          "description": "Font size. Default: md.",
287 438
          "knownValues": [
288 439
            "sm",
289 440
            "md",
290 441
            "lg"
291 442
          ],
292 443
          "type": "string"
293 444
        },
294 445
        "particles": {
295 446
          "description": "Background particle effect. Default: none.",
296 447
          "knownValues": [
297 448
            "none",
298 449
            "white",
299 -
            "blue"
450 +
            "blue",
451 +
            "leaves",
452 +
            "grid-sm",
453 +
            "grid-lg"
300 454
          ],
301 455
          "type": "string"
302 456
        },
303 457
        "preset": {
304 -
          "description": "Theme preset ID.",
458 +
          "description": "Theme preset ID (e.g., 'custom', 'agate', 'air', 'astrid', 'aura').",
305 459
          "type": "string"
306 460
        },
307 461
        "profileAlignment": {
308 462
          "description": "Profile section alignment. Default: center.",
309 463
          "knownValues": [
310 464
            "left",
311 465
            "center",
312 466
            "right"
313 467
          ],
314 468
          "type": "string"
315 469
        },
316 470
        "profilePictureShape": {
317 471
          "description": "Profile picture shape. Default: circle.",
318 472
          "knownValues": [
319 473
            "circle",
320 474
            "rounded",
321 475
            "square"
322 476
          ],
323 477
          "type": "string"
324 478
        },
325 479
        "profilePictureSize": {
326 480
          "description": "Profile picture size. Default: sm.",
327 481
          "knownValues": [
328 482
            "sm",
329 483
            "md",
330 484
            "lg"
331 485
          ],
332 486
          "type": "string"
333 487
        },
334 488
        "profileTextColor": {
335 489
          "description": "Profile section text color.",
336 490
          "type": "string"
337 491
        },
338 492
        "showBranding": {
339 493
          "description": "Whether Linkname branding is visible. Default: true.",
340 494
          "type": "boolean"
341 495
        },
342 496
        "socialIconsBorderColor": {
343 497
          "description": "Border color for social icons dock/sphere.",
344 498
          "type": "string"
345 499
        },
346 500
        "socialIconsColor": {
347 501
          "description": "Social icons color.",
348 502
          "type": "string"
349 503
        },
350 504
        "socialIconsShape": {
351 505
          "description": "Social icons container shape. Default: dock.",
352 506
          "knownValues": [
353 507
            "dock",
354 508
            "sphere"
355 509
          ],
356 510
          "type": "string"
357 511
        },
358 512
        "socialIconsShapeColor": {
359 513
          "description": "Background color for social icons dock/sphere.",
360 514
          "type": "string"
361 515
        }
362 516
      },
363 517
      "type": "object"
364 518
    },
519 +
    "videoAspectRatio": {
520 +
      "description": "Video aspect ratio dimensions.",
521 +
      "properties": {
522 +
        "height": {
523 +
          "description": "Video height.",
524 +
          "type": "integer"
525 +
        },
526 +
        "width": {
527 +
          "description": "Video width.",
528 +
          "type": "integer"
529 +
        }
530 +
      },
531 +
      "required": [
532 +
        "width",
533 +
        "height"
534 +
      ],
535 +
      "type": "object"
536 +
    },
537 +
    "widgetBeehiiv": {
538 +
      "description": "A Beehiiv publication widget card.",
539 +
      "properties": {
540 +
        "description": {
541 +
          "description": "Publication description.",
542 +
          "type": "string"
543 +
        },
544 +
        "enabled": {
545 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
546 +
          "type": "boolean"
547 +
        },
548 +
        "id": {
549 +
          "description": "Unique identifier for the card.",
550 +
          "type": "string"
551 +
        },
552 +
        "imageUrl": {
553 +
          "description": "Publication image URL.",
554 +
          "type": "string"
555 +
        },
556 +
        "lastSyncedAt": {
557 +
          "description": "When the publication data was last fetched.",
558 +
          "format": "datetime",
559 +
          "type": "string"
560 +
        },
561 +
        "publicationId": {
562 +
          "description": "Beehiiv publication ID.",
563 +
          "type": "string"
564 +
        },
565 +
        "publicationName": {
566 +
          "description": "Beehiiv publication name.",
567 +
          "type": "string"
568 +
        },
569 +
        "publicationUrl": {
570 +
          "description": "URL to the Beehiiv publication.",
571 +
          "type": "string"
572 +
        },
573 +
        "size": {
574 +
          "description": "Widget display size. Default: 1x1.",
575 +
          "knownValues": [
576 +
            "1x1",
577 +
            "1x2",
578 +
            "2x2",
579 +
            "2x1"
580 +
          ],
581 +
          "type": "string"
582 +
        },
583 +
        "type": {
584 +
          "const": "beehiiv",
585 +
          "description": "Card type discriminator.",
586 +
          "type": "string"
587 +
        }
588 +
      },
589 +
      "required": [
590 +
        "id",
591 +
        "type",
592 +
        "publicationId",
593 +
        "publicationName",
594 +
        "publicationUrl"
595 +
      ],
596 +
      "type": "object"
597 +
    },
598 +
    "widgetClock": {
599 +
      "description": "A clock, countdown, or stopwatch timer widget card.",
600 +
      "properties": {
601 +
        "enabled": {
602 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
603 +
          "type": "boolean"
604 +
        },
605 +
        "id": {
606 +
          "description": "Unique identifier for the card.",
607 +
          "type": "string"
608 +
        },
609 +
        "label": {
610 +
          "description": "Optional display label for the widget.",
611 +
          "maxLength": 100,
612 +
          "type": "string"
613 +
        },
614 +
        "mode": {
615 +
          "description": "Widget mode: clock (timezone display), countdown (to a target date), or timer (interactive stopwatch).",
616 +
          "knownValues": [
617 +
            "clock",
618 +
            "countdown",
619 +
            "timer"
620 +
          ],
621 +
          "type": "string"
622 +
        },
623 +
        "size": {
624 +
          "description": "Widget display size. Default: 1x1.",
625 +
          "knownValues": [
626 +
            "1x1",
627 +
            "1x2",
628 +
            "2x2",
629 +
            "2x1"
630 +
          ],
631 +
          "type": "string"
632 +
        },
633 +
        "targetDate": {
634 +
          "description": "ISO 8601 target date for countdown mode.",
635 +
          "format": "datetime",
636 +
          "type": "string"
637 +
        },
638 +
        "timezone": {
639 +
          "description": "IANA timezone identifier for clock mode (e.g. 'America/New_York').",
640 +
          "type": "string"
641 +
        },
642 +
        "type": {
643 +
          "const": "clock",
644 +
          "description": "Card type discriminator.",
645 +
          "type": "string"
646 +
        }
647 +
      },
648 +
      "required": [
649 +
        "id",
650 +
        "type",
651 +
        "mode"
652 +
      ],
653 +
      "type": "object"
654 +
    },
655 +
    "widgetDiscord": {
656 +
      "description": "A Discord server widget card.",
657 +
      "properties": {
658 +
        "bannerUrl": {
659 +
          "description": "Server banner URL.",
660 +
          "type": "string"
661 +
        },
662 +
        "description": {
663 +
          "description": "Server description.",
664 +
          "type": "string"
665 +
        },
666 +
        "enabled": {
667 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
668 +
          "type": "boolean"
669 +
        },
670 +
        "iconUrl": {
671 +
          "description": "Server icon URL.",
672 +
          "type": "string"
673 +
        },
674 +
        "id": {
675 +
          "description": "Unique identifier for the card.",
676 +
          "type": "string"
677 +
        },
678 +
        "inviteUrl": {
679 +
          "description": "Discord invite URL.",
680 +
          "type": "string"
681 +
        },
682 +
        "lastSyncedAt": {
683 +
          "description": "When the server data was last fetched.",
684 +
          "format": "datetime",
685 +
          "type": "string"
686 +
        },
687 +
        "memberCount": {
688 +
          "description": "Total member count.",
689 +
          "type": "integer"
690 +
        },
691 +
        "presenceCount": {
692 +
          "description": "Online member count.",
693 +
          "type": "integer"
694 +
        },
695 +
        "serverId": {
696 +
          "description": "Discord server ID.",
697 +
          "type": "string"
698 +
        },
699 +
        "serverName": {
700 +
          "description": "Discord server name.",
701 +
          "type": "string"
702 +
        },
703 +
        "size": {
704 +
          "description": "Widget display size. Default: 1x1.",
705 +
          "knownValues": [
706 +
            "1x1",
707 +
            "1x2",
708 +
            "2x2",
709 +
            "2x1"
710 +
          ],
711 +
          "type": "string"
712 +
        },
713 +
        "type": {
714 +
          "const": "discord",
715 +
          "description": "Card type discriminator.",
716 +
          "type": "string"
717 +
        }
718 +
      },
719 +
      "required": [
720 +
        "id",
721 +
        "type",
722 +
        "serverId",
723 +
        "serverName",
724 +
        "inviteUrl"
725 +
      ],
726 +
      "type": "object"
727 +
    },
365 728
    "widgetGithub": {
366 729
      "description": "A GitHub contributions graph widget card.",
367 730
      "properties": {
368 731
        "contributions": {
369 732
          "description": "Contribution data for the last year.",
370 733
          "items": {
371 734
            "ref": "#githubContributionDay",
372 735
            "type": "ref"
373 736
          },
374 737
          "type": "array"
375 738
        },
376 739
        "enabled": {
377 740
          "description": "Whether the widget is visible on the public page. Defaults to true.",
378 741
          "type": "boolean"
379 742
        },
380 743
        "githubUsername": {
381 744
          "description": "GitHub username.",
382 745
          "type": "string"
383 746
        },
384 747
        "id": {
385 748
          "description": "Unique identifier for the card.",
386 749
          "type": "string"
387 750
        },
388 751
        "lastSyncedAt": {
389 752
          "description": "When the contribution data was last fetched from GitHub.",
390 753
          "format": "datetime",
391 754
          "type": "string"
392 755
        },
393 756
        "size": {
394 757
          "description": "Widget display size. Default: 1x1.",
395 758
          "knownValues": [
396 759
            "1x1",
397 760
            "1x2",
398 761
            "2x2"
399 762
          ],
400 763
          "type": "string"
401 764
        },
402 765
        "totalContributions": {
403 766
          "description": "Total number of contributions in the last year.",
404 767
          "type": "integer"
405 768
        },
406 769
        "type": {
407 770
          "const": "github",
408 771
          "description": "Card type discriminator.",
409 772
          "type": "string"
410 773
        }
411 774
      },
412 775
      "required": [
413 776
        "id",
414 777
        "type",
415 778
        "githubUsername",
416 779
        "contributions"
417 780
      ],
418 781
      "type": "object"
419 782
    },
420 783
    "widgetGoodreads": {
421 784
      "description": "A Goodreads bookshelf widget card.",
422 785
      "properties": {
423 786
        "books": {
424 787
          "description": "Books on the currently-reading shelf.",
425 788
          "items": {
426 789
            "ref": "#goodreadsBook",
427 790
            "type": "ref"
428 791
          },
429 792
          "type": "array"
430 793
        },
431 794
        "enabled": {
432 795
          "description": "Whether the widget is visible on the public page. Defaults to true.",
433 796
          "type": "boolean"
434 797
        },
435 798
        "goodreadsUserId": {
436 799
          "description": "Goodreads numeric user ID.",
437 800
          "type": "string"
438 801
        },
439 802
        "id": {
440 803
          "description": "Unique identifier for the card.",
441 804
          "type": "string"
442 805
        },
443 806
        "lastSyncedAt": {
444 807
          "description": "When the book data was last fetched from Goodreads.",
445 808
          "format": "datetime",
446 809
          "type": "string"
447 810
        },
448 811
        "readBooks": {
449 812
          "description": "Books on the read shelf (used by 1x2 size).",
450 813
          "items": {
451 814
            "ref": "#goodreadsBook",
452 815
            "type": "ref"
453 816
          },
454 817
          "type": "array"
455 818
        },
456 819
        "shelf": {
457 820
          "description": "Shelf name (currently-reading, read, or to-read).",
458 821
          "type": "string"
459 822
        },
460 823
        "size": {
461 824
          "description": "Widget display size. Default: 1x1.",
462 825
          "knownValues": [
463 826
            "1x1",
464 827
            "1x2",
465 828
            "2x2"
466 829
          ],
467 830
          "type": "string"
468 831
        },
469 832
        "type": {
470 833
          "const": "goodreads",
471 834
          "description": "Card type discriminator.",
472 835
          "type": "string"
473 836
        }
474 837
      },
475 838
      "required": [
476 839
        "id",
477 840
        "type",
478 841
        "goodreadsUserId",
479 842
        "shelf",
480 843
        "books"
481 844
      ],
482 845
      "type": "object"
483 846
    },
847 +
    "widgetLastfm": {
848 +
      "description": "A Last.fm recently played tracks widget card.",
849 +
      "properties": {
850 +
        "coverArtNotice": {
851 +
          "description": "Copyright notice for cover art images.",
852 +
          "type": "string"
853 +
        },
854 +
        "enabled": {
855 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
856 +
          "type": "boolean"
857 +
        },
858 +
        "id": {
859 +
          "description": "Unique identifier for the card.",
860 +
          "type": "string"
861 +
        },
862 +
        "lastSyncedAt": {
863 +
          "description": "When the play data was last fetched from Last.fm.",
864 +
          "format": "datetime",
865 +
          "type": "string"
866 +
        },
867 +
        "lastfmUsername": {
868 +
          "description": "Last.fm username for fetching scrobbles.",
869 +
          "type": "string"
870 +
        },
871 +
        "plays": {
872 +
          "description": "Recently played tracks from Last.fm.",
873 +
          "items": {
874 +
            "ref": "#tealfmPlay",
875 +
            "type": "ref"
876 +
          },
877 +
          "type": "array"
878 +
        },
879 +
        "size": {
880 +
          "description": "Widget display size. Default: 1x1.",
881 +
          "knownValues": [
882 +
            "1x1",
883 +
            "1x2",
884 +
            "2x2"
885 +
          ],
886 +
          "type": "string"
887 +
        },
888 +
        "type": {
889 +
          "const": "lastfm",
890 +
          "description": "Card type discriminator.",
891 +
          "type": "string"
892 +
        }
893 +
      },
894 +
      "required": [
895 +
        "id",
896 +
        "type",
897 +
        "lastfmUsername",
898 +
        "plays"
899 +
      ],
900 +
      "type": "object"
901 +
    },
902 +
    "widgetMap": {
903 +
      "description": "A map location widget card.",
904 +
      "properties": {
905 +
        "enabled": {
906 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
907 +
          "type": "boolean"
908 +
        },
909 +
        "id": {
910 +
          "description": "Unique identifier for the card.",
911 +
          "type": "string"
912 +
        },
913 +
        "latitude": {
914 +
          "description": "Latitude coordinate as string (AT Protocol does not support floats).",
915 +
          "type": "string"
916 +
        },
917 +
        "locationName": {
918 +
          "description": "Display name for the location.",
919 +
          "type": "string"
920 +
        },
921 +
        "longitude": {
922 +
          "description": "Longitude coordinate as string (AT Protocol does not support floats).",
923 +
          "type": "string"
924 +
        },
925 +
        "mapImageRef": {
926 +
          "accept": [
927 +
            "image/png",
928 +
            "image/jpeg"
929 +
          ],
930 +
          "description": "Cached static map image blob to avoid repeated Stadia Maps API calls.",
931 +
          "maxSize": 5000000,
932 +
          "type": "blob"
933 +
        },
934 +
        "size": {
935 +
          "description": "Widget display size. Default: 1x1.",
936 +
          "knownValues": [
937 +
            "1x1",
938 +
            "1x2",
939 +
            "2x2",
940 +
            "2x1"
941 +
          ],
942 +
          "type": "string"
943 +
        },
944 +
        "style": {
945 +
          "description": "Map style. Default: light.",
946 +
          "knownValues": [
947 +
            "light",
948 +
            "dark"
949 +
          ],
950 +
          "type": "string"
951 +
        },
952 +
        "type": {
953 +
          "const": "map",
954 +
          "description": "Card type discriminator.",
955 +
          "type": "string"
956 +
        },
957 +
        "zoom": {
958 +
          "description": "Map zoom level (1-18). Default: 12.",
959 +
          "type": "integer"
960 +
        }
961 +
      },
962 +
      "required": [
963 +
        "id",
964 +
        "type",
965 +
        "locationName",
966 +
        "latitude",
967 +
        "longitude"
968 +
      ],
969 +
      "type": "object"
970 +
    },
971 +
    "widgetMedium": {
972 +
      "description": "A Medium profile widget card.",
973 +
      "properties": {
974 +
        "articles": {
975 +
          "description": "Recent articles.",
976 +
          "items": {
977 +
            "ref": "#mediumArticle",
978 +
            "type": "ref"
979 +
          },
980 +
          "type": "array"
981 +
        },
982 +
        "bio": {
983 +
          "description": "Medium bio.",
984 +
          "type": "string"
985 +
        },
986 +
        "displayName": {
987 +
          "description": "Medium display name.",
988 +
          "type": "string"
989 +
        },
990 +
        "enabled": {
991 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
992 +
          "type": "boolean"
993 +
        },
994 +
        "followerCount": {
995 +
          "description": "Number of followers.",
996 +
          "type": "integer"
997 +
        },
998 +
        "id": {
999 +
          "description": "Unique identifier for the card.",
1000 +
          "type": "string"
1001 +
        },
1002 +
        "lastSyncedAt": {
1003 +
          "description": "When the Medium data was last fetched.",
1004 +
          "format": "datetime",
1005 +
          "type": "string"
1006 +
        },
1007 +
        "profileUrl": {
1008 +
          "description": "Medium profile URL.",
1009 +
          "type": "string"
1010 +
        },
1011 +
        "size": {
1012 +
          "description": "Widget display size. Default: 1x1.",
1013 +
          "knownValues": [
1014 +
            "1x1",
1015 +
            "1x2",
1016 +
            "2x2",
1017 +
            "2x1"
1018 +
          ],
1019 +
          "type": "string"
1020 +
        },
1021 +
        "type": {
1022 +
          "const": "medium",
1023 +
          "description": "Card type discriminator.",
1024 +
          "type": "string"
1025 +
        },
1026 +
        "username": {
1027 +
          "description": "Medium username.",
1028 +
          "type": "string"
1029 +
        }
1030 +
      },
1031 +
      "required": [
1032 +
        "id",
1033 +
        "type",
1034 +
        "username",
1035 +
        "profileUrl"
1036 +
      ],
1037 +
      "type": "object"
1038 +
    },
1039 +
    "widgetPatreon": {
1040 +
      "description": "A Patreon campaign widget card.",
1041 +
      "properties": {
1042 +
        "campaignId": {
1043 +
          "description": "Patreon campaign ID.",
1044 +
          "type": "string"
1045 +
        },
1046 +
        "campaignUrl": {
1047 +
          "description": "URL to the Patreon campaign.",
1048 +
          "type": "string"
1049 +
        },
1050 +
        "creationName": {
1051 +
          "description": "Name of the creation/project.",
1052 +
          "type": "string"
1053 +
        },
1054 +
        "creatorName": {
1055 +
          "description": "Patreon creator name.",
1056 +
          "type": "string"
1057 +
        },
1058 +
        "enabled": {
1059 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
1060 +
          "type": "boolean"
1061 +
        },
1062 +
        "id": {
1063 +
          "description": "Unique identifier for the card.",
1064 +
          "type": "string"
1065 +
        },
1066 +
        "imageUrl": {
1067 +
          "description": "Campaign image URL.",
1068 +
          "type": "string"
1069 +
        },
1070 +
        "lastSyncedAt": {
1071 +
          "description": "When the campaign data was last fetched.",
1072 +
          "format": "datetime",
1073 +
          "type": "string"
1074 +
        },
1075 +
        "patronCount": {
1076 +
          "description": "Number of patrons.",
1077 +
          "type": "integer"
1078 +
        },
1079 +
        "postCount": {
1080 +
          "description": "Number of posts.",
1081 +
          "type": "integer"
1082 +
        },
1083 +
        "size": {
1084 +
          "description": "Widget display size. Default: 1x1.",
1085 +
          "knownValues": [
1086 +
            "1x1",
1087 +
            "1x2",
1088 +
            "2x2",
1089 +
            "2x1"
1090 +
          ],
1091 +
          "type": "string"
1092 +
        },
1093 +
        "type": {
1094 +
          "const": "patreon",
1095 +
          "description": "Card type discriminator.",
1096 +
          "type": "string"
1097 +
        }
1098 +
      },
1099 +
      "required": [
1100 +
        "id",
1101 +
        "type",
1102 +
        "campaignId",
1103 +
        "creatorName",
1104 +
        "campaignUrl"
1105 +
      ],
1106 +
      "type": "object"
1107 +
    },
1108 +
    "widgetReddit": {
1109 +
      "description": "A Reddit profile widget card.",
1110 +
      "properties": {
1111 +
        "avatarUrl": {
1112 +
          "description": "Reddit avatar URL.",
1113 +
          "type": "string"
1114 +
        },
1115 +
        "commentKarma": {
1116 +
          "description": "Comment karma.",
1117 +
          "type": "integer"
1118 +
        },
1119 +
        "enabled": {
1120 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
1121 +
          "type": "boolean"
1122 +
        },
1123 +
        "id": {
1124 +
          "description": "Unique identifier for the card.",
1125 +
          "type": "string"
1126 +
        },
1127 +
        "karma": {
1128 +
          "description": "Total karma.",
1129 +
          "type": "integer"
1130 +
        },
1131 +
        "lastSyncedAt": {
1132 +
          "description": "When the Reddit data was last fetched.",
1133 +
          "format": "datetime",
1134 +
          "type": "string"
1135 +
        },
1136 +
        "linkKarma": {
1137 +
          "description": "Link karma.",
1138 +
          "type": "integer"
1139 +
        },
1140 +
        "profileUrl": {
1141 +
          "description": "Reddit profile URL.",
1142 +
          "type": "string"
1143 +
        },
1144 +
        "recentPosts": {
1145 +
          "description": "Recent posts.",
1146 +
          "items": {
1147 +
            "ref": "#redditPost",
1148 +
            "type": "ref"
1149 +
          },
1150 +
          "type": "array"
1151 +
        },
1152 +
        "size": {
1153 +
          "description": "Widget display size. Default: 1x1.",
1154 +
          "knownValues": [
1155 +
            "1x1",
1156 +
            "1x2",
1157 +
            "2x2",
1158 +
            "2x1"
1159 +
          ],
1160 +
          "type": "string"
1161 +
        },
1162 +
        "type": {
1163 +
          "const": "reddit",
1164 +
          "description": "Card type discriminator.",
1165 +
          "type": "string"
1166 +
        },
1167 +
        "username": {
1168 +
          "description": "Reddit username.",
1169 +
          "type": "string"
1170 +
        }
1171 +
      },
1172 +
      "required": [
1173 +
        "id",
1174 +
        "type",
1175 +
        "username",
1176 +
        "profileUrl"
1177 +
      ],
1178 +
      "type": "object"
1179 +
    },
1180 +
    "widgetSubstack": {
1181 +
      "description": "A Substack publication widget card.",
1182 +
      "properties": {
1183 +
        "authorName": {
1184 +
          "description": "Author name.",
1185 +
          "type": "string"
1186 +
        },
1187 +
        "coverImageUrl": {
1188 +
          "description": "Publication cover image URL.",
1189 +
          "type": "string"
1190 +
        },
1191 +
        "description": {
1192 +
          "description": "Publication description.",
1193 +
          "type": "string"
1194 +
        },
1195 +
        "enabled": {
1196 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
1197 +
          "type": "boolean"
1198 +
        },
1199 +
        "id": {
1200 +
          "description": "Unique identifier for the card.",
1201 +
          "type": "string"
1202 +
        },
1203 +
        "imageUrl": {
1204 +
          "description": "Publication image URL.",
1205 +
          "type": "string"
1206 +
        },
1207 +
        "lastSyncedAt": {
1208 +
          "description": "When the publication data was last fetched.",
1209 +
          "format": "datetime",
1210 +
          "type": "string"
1211 +
        },
1212 +
        "postCount": {
1213 +
          "description": "Number of posts.",
1214 +
          "type": "integer"
1215 +
        },
1216 +
        "publicationId": {
1217 +
          "description": "Substack publication ID.",
1218 +
          "type": "string"
1219 +
        },
1220 +
        "publicationName": {
1221 +
          "description": "Substack publication name.",
1222 +
          "type": "string"
1223 +
        },
1224 +
        "publicationUrl": {
1225 +
          "description": "URL to the Substack publication.",
1226 +
          "type": "string"
1227 +
        },
1228 +
        "size": {
1229 +
          "description": "Widget display size. Default: 1x1.",
1230 +
          "knownValues": [
1231 +
            "1x1",
1232 +
            "1x2",
1233 +
            "2x2",
1234 +
            "2x1"
1235 +
          ],
1236 +
          "type": "string"
1237 +
        },
1238 +
        "subscriberCount": {
1239 +
          "description": "Number of subscribers.",
1240 +
          "type": "integer"
1241 +
        },
1242 +
        "type": {
1243 +
          "const": "substack",
1244 +
          "description": "Card type discriminator.",
1245 +
          "type": "string"
1246 +
        }
1247 +
      },
1248 +
      "required": [
1249 +
        "id",
1250 +
        "type",
1251 +
        "publicationId",
1252 +
        "publicationName",
1253 +
        "publicationUrl"
1254 +
      ],
1255 +
      "type": "object"
1256 +
    },
484 1257
    "widgetTealfm": {
485 1258
      "description": "A teal.fm recently played tracks widget card.",
486 1259
      "properties": {
487 1260
        "coverArtNotice": {
488 1261
          "description": "Copyright notice for cover art images.",
489 1262
          "type": "string"
490 1263
        },
491 1264
        "enabled": {
492 1265
          "description": "Whether the widget is visible on the public page. Defaults to true.",
493 1266
          "type": "boolean"
494 1267
        },
495 1268
        "id": {
496 1269
          "description": "Unique identifier for the card.",
497 1270
          "type": "string"
498 1271
        },
499 1272
        "lastSyncedAt": {
500 1273
          "description": "When the play data was last fetched from the PDS.",
501 1274
          "format": "datetime",
502 1275
          "type": "string"
503 1276
        },
504 1277
        "plays": {
505 1278
          "description": "Recently played tracks.",
506 1279
          "items": {
507 1280
            "ref": "#tealfmPlay",
508 1281
            "type": "ref"
509 1282
          },
510 1283
          "type": "array"
511 1284
        },
512 1285
        "size": {
513 1286
          "description": "Widget display size. Default: 1x1.",
514 1287
          "knownValues": [
515 1288
            "1x1",
516 1289
            "1x2",
517 1290
            "2x2"
518 1291
          ],
519 1292
          "type": "string"
520 1293
        },
1294 +
        "source": {
1295 +
          "description": "Data source for the widget. 'lastfm' for imported Last.fm scrobbles, 'tealfm' (default) for native AT Protocol plays.",
1296 +
          "knownValues": [
1297 +
            "tealfm",
1298 +
            "lastfm"
1299 +
          ],
1300 +
          "type": "string"
1301 +
        },
521 1302
        "type": {
522 1303
          "const": "tealfm",
523 1304
          "description": "Card type discriminator.",
524 1305
          "type": "string"
525 1306
        }
526 1307
      },
527 1308
      "required": [
528 1309
        "id",
529 1310
        "type",
530 1311
        "plays"
531 1312
      ],
532 1313
      "type": "object"
1314 +
    },
1315 +
    "widgetTwitch": {
1316 +
      "description": "A Twitch channel widget card.",
1317 +
      "properties": {
1318 +
        "displayName": {
1319 +
          "description": "Twitch display name.",
1320 +
          "type": "string"
1321 +
        },
1322 +
        "enabled": {
1323 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
1324 +
          "type": "boolean"
1325 +
        },
1326 +
        "id": {
1327 +
          "description": "Unique identifier for the card.",
1328 +
          "type": "string"
1329 +
        },
1330 +
        "isLive": {
1331 +
          "description": "Whether the channel is currently live.",
1332 +
          "type": "boolean"
1333 +
        },
1334 +
        "lastSyncedAt": {
1335 +
          "description": "When the channel data was last fetched.",
1336 +
          "format": "datetime",
1337 +
          "type": "string"
1338 +
        },
1339 +
        "profileImageUrl": {
1340 +
          "description": "Twitch profile image URL.",
1341 +
          "type": "string"
1342 +
        },
1343 +
        "size": {
1344 +
          "description": "Widget display size. Default: 1x1.",
1345 +
          "knownValues": [
1346 +
            "1x1",
1347 +
            "1x2",
1348 +
            "2x2",
1349 +
            "2x1"
1350 +
          ],
1351 +
          "type": "string"
1352 +
        },
1353 +
        "streamGame": {
1354 +
          "description": "Current stream game/category.",
1355 +
          "type": "string"
1356 +
        },
1357 +
        "streamTitle": {
1358 +
          "description": "Current stream title.",
1359 +
          "type": "string"
1360 +
        },
1361 +
        "type": {
1362 +
          "const": "twitch",
1363 +
          "description": "Card type discriminator.",
1364 +
          "type": "string"
1365 +
        },
1366 +
        "username": {
1367 +
          "description": "Twitch username.",
1368 +
          "type": "string"
1369 +
        },
1370 +
        "viewerCount": {
1371 +
          "description": "Current viewer count.",
1372 +
          "type": "integer"
1373 +
        }
1374 +
      },
1375 +
      "required": [
1376 +
        "id",
1377 +
        "type",
1378 +
        "username"
1379 +
      ],
1380 +
      "type": "object"
1381 +
    },
1382 +
    "widgetVideo": {
1383 +
      "description": "A video widget card.",
1384 +
      "properties": {
1385 +
        "alt": {
1386 +
          "description": "Alt text for accessibility.",
1387 +
          "maxLength": 1000,
1388 +
          "type": "string"
1389 +
        },
1390 +
        "aspectRatio": {
1391 +
          "description": "Video aspect ratio.",
1392 +
          "ref": "#videoAspectRatio",
1393 +
          "type": "ref"
1394 +
        },
1395 +
        "createdAt": {
1396 +
          "description": "When the video was uploaded.",
1397 +
          "format": "datetime",
1398 +
          "type": "string"
1399 +
        },
1400 +
        "did": {
1401 +
          "description": "Author DID for constructing PDS blob URLs.",
1402 +
          "type": "string"
1403 +
        },
1404 +
        "enabled": {
1405 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
1406 +
          "type": "boolean"
1407 +
        },
1408 +
        "id": {
1409 +
          "description": "Unique identifier for the card.",
1410 +
          "type": "string"
1411 +
        },
1412 +
        "loop": {
1413 +
          "description": "Whether the video loops. Defaults to true.",
1414 +
          "type": "boolean"
1415 +
        },
1416 +
        "muted": {
1417 +
          "description": "Whether the video is muted. Defaults to true.",
1418 +
          "type": "boolean"
1419 +
        },
1420 +
        "showOverlay": {
1421 +
          "description": "Whether to show the title overlay. Defaults to false.",
1422 +
          "type": "boolean"
1423 +
        },
1424 +
        "size": {
1425 +
          "description": "Widget display size. Default: 1x1.",
1426 +
          "knownValues": [
1427 +
            "1x1",
1428 +
            "1x2",
1429 +
            "2x2",
1430 +
            "2x1"
1431 +
          ],
1432 +
          "type": "string"
1433 +
        },
1434 +
        "title": {
1435 +
          "description": "Video title overlay.",
1436 +
          "maxLength": 100,
1437 +
          "type": "string"
1438 +
        },
1439 +
        "type": {
1440 +
          "const": "video",
1441 +
          "description": "Card type discriminator.",
1442 +
          "type": "string"
1443 +
        },
1444 +
        "videoBlobRef": {
1445 +
          "description": "Reference to the uploaded video blob.",
1446 +
          "type": "blob"
1447 +
        }
1448 +
      },
1449 +
      "required": [
1450 +
        "id",
1451 +
        "type",
1452 +
        "videoBlobRef",
1453 +
        "did"
1454 +
      ],
1455 +
      "type": "object"
1456 +
    },
1457 +
    "widgetYoutube": {
1458 +
      "description": "A YouTube channel widget card.",
1459 +
      "properties": {
1460 +
        "channelId": {
1461 +
          "description": "YouTube channel ID.",
1462 +
          "type": "string"
1463 +
        },
1464 +
        "channelName": {
1465 +
          "description": "YouTube channel name.",
1466 +
          "type": "string"
1467 +
        },
1468 +
        "channelUrl": {
1469 +
          "description": "URL to the YouTube channel.",
1470 +
          "type": "string"
1471 +
        },
1472 +
        "enabled": {
1473 +
          "description": "Whether the widget is visible on the public page. Defaults to true.",
1474 +
          "type": "boolean"
1475 +
        },
1476 +
        "id": {
1477 +
          "description": "Unique identifier for the card.",
1478 +
          "type": "string"
1479 +
        },
1480 +
        "lastSyncedAt": {
1481 +
          "description": "When the video data was last fetched.",
1482 +
          "format": "datetime",
1483 +
          "type": "string"
1484 +
        },
1485 +
        "latestVideo": {
1486 +
          "description": "The latest video from the channel.",
1487 +
          "ref": "#youtubeVideo",
1488 +
          "type": "ref"
1489 +
        },
1490 +
        "size": {
1491 +
          "description": "Widget display size. Default: 1x1.",
1492 +
          "knownValues": [
1493 +
            "1x1",
1494 +
            "1x2",
1495 +
            "2x2",
1496 +
            "2x1"
1497 +
          ],
1498 +
          "type": "string"
1499 +
        },
1500 +
        "type": {
1501 +
          "const": "youtube",
1502 +
          "description": "Card type discriminator.",
1503 +
          "type": "string"
1504 +
        }
1505 +
      },
1506 +
      "required": [
1507 +
        "id",
1508 +
        "type",
1509 +
        "channelId",
1510 +
        "channelName",
1511 +
        "channelUrl"
1512 +
      ],
1513 +
      "type": "object"
1514 +
    },
1515 +
    "youtubeVideo": {
1516 +
      "description": "A YouTube video.",
1517 +
      "properties": {
1518 +
        "isShort": {
1519 +
          "description": "Whether this is a YouTube Short.",
1520 +
          "type": "boolean"
1521 +
        },
1522 +
        "publishedAt": {
1523 +
          "description": "When the video was published.",
1524 +
          "type": "string"
1525 +
        },
1526 +
        "title": {
1527 +
          "description": "Video title.",
1528 +
          "type": "string"
1529 +
        },
1530 +
        "videoId": {
1531 +
          "description": "YouTube video ID.",
1532 +
          "type": "string"
1533 +
        }
1534 +
      },
1535 +
      "required": [
1536 +
        "videoId",
1537 +
        "title",
1538 +
        "publishedAt"
1539 +
      ],
1540 +
      "type": "object"
533 1541
    }
534 1542
  },
535 1543
  "id": "me.linkna.linkinbio",
536 1544
  "lexicon": 1
537 1545
}

Compare Other Versions

Lexicon Garden

@