full diff

com.dryan.timeline.entry

dryan.com +30 −0
From
bafyreifggkkkhrtikhs6lw53jwnmjatt3gykod2xcrrox22q53incmkhvq indexed 2026-10-13 01:18 UTC View this version
To
bafyreicczoqe6ijg6llhuvqmkxcb75bkwbar2ds55mhn3ziwimzddgabqm indexed 2026-10-15 18:45 UTC View this version

Compatibility

breaking 1 breaking change, 13 non-breaking changes.

Breaking changes (1)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.dryan.timeline.entry#highlight", src: "com.dryan.timeline.entry#highlight", tgt: "com.dryan.timeline.entry#highlight.text", kind: "prop", name: Some("text") }
Non-breaking changes (13)
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#book.highlights" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#book.highlights:items" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#highlight" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#highlight.highlightedAt" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#highlight.location" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#highlight.note" }
  • AddedVertex AddedVertex { vertex_id: "com.dryan.timeline.entry#highlight.text" }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#book", tgt: "com.dryan.timeline.entry#book.highlights", kind: "prop", name: Some("highlights") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#book.highlights", tgt: "com.dryan.timeline.entry#book.highlights:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#book.highlights:items", tgt: "com.dryan.timeline.entry#highlight", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#highlight", tgt: "com.dryan.timeline.entry#highlight.highlightedAt", kind: "prop", name: Some("highlightedAt") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#highlight", tgt: "com.dryan.timeline.entry#highlight.location", kind: "prop", name: Some("location") }
  • AddedEdge AddedEdge { src: "com.dryan.timeline.entry#highlight", tgt: "com.dryan.timeline.entry#highlight.note", kind: "prop", name: Some("note") }

Migration guidance

Added

  • AddedVertex { vertex_id: "com.dryan.timeline.entry#book.highlights" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#book.highlights:items" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#highlight" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#highlight.highlightedAt" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#highlight.location" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#highlight.note" }
  • AddedVertex { vertex_id: "com.dryan.timeline.entry#highlight.text" }

Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "com.dryan.timeline.entry#highlight", src: "com.dryan.timeline.entry#highlight", tgt: "com.dryan.timeline.entry#highlight.text", kind: "prop", name: Some("text") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#book", tgt: "com.dryan.timeline.entry#book.highlights", kind: "prop", name: Some("highlights") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#book.highlights", tgt: "com.dryan.timeline.entry#book.highlights:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#book.highlights:items", tgt: "com.dryan.timeline.entry#highlight", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#highlight", tgt: "com.dryan.timeline.entry#highlight.highlightedAt", kind: "prop", name: Some("highlightedAt") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#highlight", tgt: "com.dryan.timeline.entry#highlight.location", kind: "prop", name: Some("location") }
  • Non-breaking: AddedEdge { src: "com.dryan.timeline.entry#highlight", tgt: "com.dryan.timeline.entry#highlight.note", kind: "prop", name: Some("note") }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "achievement": {
55 "properties": {
66 "achievementId": {
77 "type": "string"
88 },
99 "description": {
1010 "type": "string"
1111 },
1212 "game": {
1313 "type": "string"
1414 },
1515 "iconUrl": {
1616 "format": "uri",
1717 "type": "string"
1818 },
1919 "platform": {
2020 "knownValues": [
2121 "xbox"
2222 ],
2323 "type": "string"
2424 },
2525 "xboxTitleId": {
2626 "type": "integer"
2727 }
2828 },
2929 "required": [
3030 "game",
3131 "platform"
3232 ],
3333 "type": "object"
3434 },
3535 "activity": {
3636 "properties": {
3737 "averageHeartrate": {
3838 "description": "Beats per minute, decimal string.",
3939 "type": "string"
4040 },
4141 "averageSpeed": {
4242 "description": "Metres per second, decimal string.",
4343 "type": "string"
4444 },
4545 "bounds": {
4646 "ref": "#bounds",
4747 "type": "ref"
4848 },
4949 "distanceMeters": {
5050 "type": "integer"
5151 },
5252 "elapsedTimeSeconds": {
5353 "type": "integer"
5454 },
5555 "elevationGainMeters": {
5656 "type": "integer"
5757 },
5858 "elevationLossMeters": {
5959 "type": "integer"
6060 },
6161 "end": {
6262 "ref": "#point",
6363 "type": "ref"
6464 },
6565 "maxElevationMeters": {
6666 "type": "integer"
6767 },
6868 "maxHeartrate": {
6969 "description": "Beats per minute, decimal string.",
7070 "type": "string"
7171 },
7272 "maxSpeed": {
7373 "description": "Metres per second, decimal string.",
7474 "type": "string"
7575 },
7676 "minElevationMeters": {
7777 "type": "integer"
7878 },
7979 "movingTimeSeconds": {
8080 "type": "integer"
8181 },
8282 "polyline": {
8383 "description": "Google encoded polyline of the track.",
8484 "type": "string"
8585 },
8686 "source": {
8787 "description": "Where the track came from (Strava, AllTrails, onX...).",
8888 "type": "string"
8989 },
9090 "sourceId": {
9191 "description": "The activity's id at the source, e.g. the Strava activity id.",
9292 "type": "string"
9393 },
9494 "sourceUrl": {
9595 "format": "uri",
9696 "type": "string"
9797 },
9898 "sportType": {
9999 "type": "string"
100100 },
101101 "start": {
102102 "ref": "#point",
103103 "type": "ref"
104104 }
105105 },
106106 "type": "object"
107107 },
108108 "article": {
109109 "properties": {
110110 "crosspostedFrom": {
111111 "ref": "#crosspost",
112112 "type": "ref"
113113 },
114114 "description": {
115115 "type": "string"
116116 },
117117 "shareImage": {
118118 "description": "Filename of the article's share graphic on the site.",
119119 "type": "string"
120120 }
121121 },
122122 "type": "object"
123123 },
124124 "book": {
125125 "properties": {
126126 "amazonUrl": {
127127 "format": "uri",
128128 "type": "string"
129129 },
130130 "asin": {
131131 "type": "string"
132132 },
133133 "author": {
134134 "type": "string"
135135 },
136136 "bookshopOrgUrl": {
137137 "format": "uri",
138138 "type": "string"
139139 },
140140 "coverUrl": {
141141 "format": "uri",
142142 "type": "string"
143143 },
144144 "dateFinished": {
145145 "type": "string"
146146 },
147147 "dateStarted": {
148148 "type": "string"
149149 },
150150 "goodreadsId": {
151151 "type": "string"
152152 },
153153 "goodreadsUrl": {
154154 "format": "uri",
155155 "type": "string"
156156 },
157 "highlights": {
158 "description": "Kindle highlights and notes, oldest first.",
159 "items": {
160 "ref": "#highlight",
161 "type": "ref"
162 },
163 "type": "array"
164 },
157165 "isbn": {
158166 "type": "string"
159167 },
160168 "openLibraryUrl": {
161169 "format": "uri",
162170 "type": "string"
163171 },
164172 "reviewUrl": {
165173 "format": "uri",
166174 "type": "string"
167175 },
168176 "subtitle": {
169177 "type": "string"
170178 }
171179 },
172180 "type": "object"
173181 },
174182 "bounds": {
175183 "properties": {
176184 "maxLatitude": {
177185 "type": "string"
178186 },
179187 "maxLongitude": {
180188 "type": "string"
181189 },
182190 "minLatitude": {
183191 "type": "string"
184192 },
185193 "minLongitude": {
186194 "type": "string"
187195 }
188196 },
189197 "required": [
190198 "minLatitude",
191199 "maxLatitude",
192200 "minLongitude",
193201 "maxLongitude"
194202 ],
195203 "type": "object"
196204 },
197205 "code": {
198206 "properties": {
199207 "action": {
200208 "type": "string"
201209 },
202210 "commitCount": {
203211 "type": "integer"
204212 },
205213 "commits": {
206214 "items": {
207215 "ref": "#commit",
208216 "type": "ref"
209217 },
210218 "type": "array"
211219 },
212220 "event": {
213221 "description": "GitHub event type (push, pull_request, issue_comment...).",
214222 "type": "string"
215223 },
216224 "githubEventId": {
217225 "type": "string"
218226 },
219227 "repo": {
220228 "description": "owner/name on GitHub.",
221229 "type": "string"
222230 },
223231 "url": {
224232 "format": "uri",
225233 "type": "string"
226234 }
227235 },
228236 "required": [
229237 "repo",
230238 "event"
231239 ],
232240 "type": "object"
233241 },
234242 "commit": {
235243 "properties": {
236244 "message": {
237245 "type": "string"
238246 },
239247 "sha": {
240248 "type": "string"
241249 }
242250 },
243251 "required": [
244252 "sha"
245253 ],
246254 "type": "object"
247255 },
248256 "crosspost": {
249257 "properties": {
250258 "name": {
251259 "type": "string"
252260 },
253261 "url": {
254262 "format": "uri",
255263 "type": "string"
256264 }
257265 },
258266 "required": [
259267 "url"
260268 ],
261269 "type": "object"
262270 },
263271 "game": {
264272 "properties": {
265273 "date": {
266274 "description": "YYYY-MM-DD of the session.",
267275 "type": "string"
268276 },
269277 "leagueId": {
270278 "description": "Hearthstone ranked league.",
271279 "type": "integer"
272280 },
273281 "legendRank": {
274282 "type": "integer"
275283 },
276284 "platform": {
277285 "knownValues": [
278286 "xbox",
279287 "hearthstone"
280288 ],
281289 "type": "string"
282290 },
283291 "starLevel": {
284292 "type": "integer"
285293 },
286294 "stars": {
287295 "type": "integer"
288296 },
289297 "titles": {
290298 "items": {
291299 "ref": "#gameTitle",
292300 "type": "ref"
293301 },
294302 "type": "array"
295303 }
296304 },
297305 "required": [
298306 "platform"
299307 ],
300308 "type": "object"
301309 },
302310 "gameTitle": {
303311 "properties": {
304312 "logoUrl": {
305313 "format": "uri",
306314 "type": "string"
307315 },
308316 "name": {
309317 "type": "string"
310318 }
311319 },
312320 "required": [
313321 "name"
314322 ],
315323 "type": "object"
316324 },
325 "highlight": {
326 "properties": {
327 "highlightedAt": {
328 "format": "datetime",
329 "type": "string"
330 },
331 "location": {
332 "description": "Kindle location number.",
333 "type": "string"
334 },
335 "note": {
336 "type": "string"
337 },
338 "text": {
339 "type": "string"
340 }
341 },
342 "required": [
343 "text"
344 ],
345 "type": "object"
346 },
317347 "link": {
318348 "properties": {
319349 "note": {
320350 "type": "string"
321351 },
322352 "url": {
323353 "format": "uri",
324354 "type": "string"
325355 }
326356 },
327357 "required": [
328358 "url"
329359 ],
330360 "type": "object"
331361 },
332362 "main": {
333363 "properties": {
334364 "detail": {
335365 "refs": [
336366 "#article",
337367 "#photo",
338368 "#book",
339369 "#video",
340370 "#link",
341371 "#movie",
342372 "#activity",
343373 "#code",
344374 "#game",
345375 "#achievement"
346376 ],
347377 "type": "union"
348378 },
349379 "entryType": {
350380 "knownValues": [
351381 "article",
352382 "photo",
353383 "book",
354384 "video",
355385 "link",
356386 "movie",
357387 "activity.walk",
358388 "activity.hike",
359389 "activity.cycle",
360390 "activity.kayak",
361391 "activity.other",
362392 "code",
363393 "game",
364394 "game.achievement"
365395 ],
366396 "type": "string"
367397 },
368398 "localDate": {
369399 "description": "YYYY-MM-DD: the day the entry is filed under on the site.",
370400 "type": "string"
371401 },
372402 "timezone": {
373403 "description": "IANA zone the entry happened in; localDate is derived from publishedAt in this zone.",
374404 "type": "string"
375405 }
376406 },
377407 "required": [
378408 "entryType"
379409 ],
380410 "type": "object"
381411 },
382412 "movie": {
383413 "properties": {
384414 "letterboxdUrl": {
385415 "format": "uri",
386416 "type": "string"
387417 },
388418 "liked": {
389419 "type": "boolean"
390420 },
391421 "posterUrl": {
392422 "format": "uri",
393423 "type": "string"
394424 },
395425 "rating": {
396426 "description": "Star rating as a decimal string, absent when unrated.",
397427 "type": "string"
398428 },
399429 "rewatch": {
400430 "type": "boolean"
401431 },
402432 "tmdbId": {
403433 "description": "The Movie Database id.",
404434 "type": "string"
405435 },
406436 "year": {
407437 "type": "integer"
408438 }
409439 },
410440 "type": "object"
411441 },
412442 "photo": {
413443 "properties": {
414444 "altText": {
415445 "type": "string"
416446 },
417447 "contentHash": {
418448 "description": "sha256 fingerprint used for duplicate detection.",
419449 "type": "string"
420450 },
421451 "exif": {
422452 "description": "Camera and capture metadata as extracted at upload; non-integer numbers are decimal strings.",
423453 "type": "unknown"
424454 },
425455 "imageUrl": {
426456 "description": "Full-size delivery URL; coverImage on the document is the copy under atproto's blob cap.",
427457 "format": "uri",
428458 "type": "string"
429459 }
430460 },
431461 "type": "object"
432462 },
433463 "point": {
434464 "properties": {
435465 "latitude": {
436466 "description": "Decimal degrees as a string.",
437467 "type": "string"
438468 },
439469 "longitude": {
440470 "description": "Decimal degrees as a string.",
441471 "type": "string"
442472 }
443473 },
444474 "required": [
445475 "latitude",
446476 "longitude"
447477 ],
448478 "type": "object"
449479 },
450480 "video": {
451481 "properties": {
452482 "authorName": {
453483 "type": "string"
454484 },
455485 "authorUrl": {
456486 "format": "uri",
457487 "type": "string"
458488 },
459489 "durationSeconds": {
460490 "type": "integer"
461491 },
462492 "note": {
463493 "type": "string"
464494 },
465495 "provider": {
466496 "knownValues": [
467497 "youtube",
468498 "vimeo"
469499 ],
470500 "type": "string"
471501 },
472502 "thumbnailUrl": {
473503 "format": "uri",
474504 "type": "string"
475505 },
476506 "url": {
477507 "format": "uri",
478508 "type": "string"
479509 },
480510 "videoId": {
481511 "type": "string"
482512 }
483513 },
484514 "required": [
485515 "url"
486516 ],
487517 "type": "object"
488518 }
489519 },
490520 "description": "The dryan.com timeline's per-entry data, carried in the `content` open union of a site.standard.document record. The document holds what every entry shares (title, path, publishedAt, description, textContent, tags, coverImage); this holds the entry type, the day it belongs to, and the type-specific detail. atproto records cannot carry floats, so measurements that are not whole numbers (speeds, heart rates, coordinates) are decimal strings.",
491521 "id": "com.dryan.timeline.entry",
492522 "lexicon": 1
493523}

Compare other versions