@omniharmonic/openspace-cli 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/README.md +14 -9
  2. package/dist/{agents-md-3W4PIY4N.js → agents-md-Q2TI3NHB.js} +3 -2
  3. package/dist/bin.js +4 -2
  4. package/dist/bin.js.map +1 -1
  5. package/dist/chunk-26AZCID5.js +44 -0
  6. package/dist/chunk-26AZCID5.js.map +1 -0
  7. package/dist/{chunk-6NIIOHOX.js → chunk-7SWL46LQ.js} +9653 -18568
  8. package/dist/chunk-7SWL46LQ.js.map +1 -0
  9. package/dist/{chunk-7I6IJI6Z.js → chunk-BW42R6WD.js} +502 -96
  10. package/dist/chunk-BW42R6WD.js.map +1 -0
  11. package/dist/chunk-WE4QCL3R.js +12836 -0
  12. package/dist/chunk-WE4QCL3R.js.map +1 -0
  13. package/dist/crawl-5ZZ5W7B6.js +9 -0
  14. package/dist/crawl-5ZZ5W7B6.js.map +1 -0
  15. package/dist/index.js +4 -2
  16. package/dist/index.js.map +1 -1
  17. package/dist/starter/site/AGENTS.md +2 -2
  18. package/dist/templates/atelier/content/pages/about.json +1 -1
  19. package/dist/templates/atelier/content/pages/commissions.json +1 -1
  20. package/dist/templates/atelier/content/pages/contact.json +1 -1
  21. package/dist/templates/atelier/content/pages/home.json +12 -12
  22. package/dist/templates/atelier/content/pages/work.json +1 -1
  23. package/dist/templates/atelier/content/site.json +1 -1
  24. package/dist/templates/atelier/content/styles.json +1 -1
  25. package/dist/templates/atelier/openspace.json +2 -2
  26. package/dist/templates/atelier/template.json +1 -1
  27. package/dist/templates/beacon/content/collections/news/2026-09-12-heat-map-2026.mdoc +2 -2
  28. package/dist/templates/beacon/content/collections/news/2026-09-30-school-gardens-harvest.mdoc +2 -2
  29. package/dist/templates/beacon/content/collections/news/2026-10-14-planting-season-begins.mdoc +2 -2
  30. package/dist/templates/beacon/content/pages/about.json +1 -1
  31. package/dist/templates/beacon/content/pages/contact.json +1 -1
  32. package/dist/templates/beacon/content/pages/donate.json +1 -1
  33. package/dist/templates/beacon/content/pages/get-involved.json +1 -1
  34. package/dist/templates/beacon/content/pages/home.json +2 -2
  35. package/dist/templates/beacon/content/pages/our-work.json +1 -1
  36. package/dist/templates/beacon/content/site.json +1 -1
  37. package/dist/templates/beacon/content/styles.json +1 -1
  38. package/dist/templates/beacon/media/LICENSES.json +33 -0
  39. package/dist/templates/beacon/openspace.json +2 -2
  40. package/dist/templates/beacon/template.json +1 -1
  41. package/dist/templates/commons/content/pages/about.json +1 -1
  42. package/dist/templates/commons/content/pages/directory.json +1 -1
  43. package/dist/templates/commons/content/pages/home.json +5 -5
  44. package/dist/templates/commons/content/pages/join.json +1 -1
  45. package/dist/templates/commons/content/site.json +2 -2
  46. package/dist/templates/commons/content/styles.json +1 -1
  47. package/dist/templates/commons/media/LICENSES.json +11 -11
  48. package/dist/templates/commons/openspace.json +2 -2
  49. package/dist/templates/commons/template.json +1 -1
  50. package/dist/templates/darkroom/content/collections/work/after-hours.mdoc +7 -4
  51. package/dist/templates/darkroom/content/collections/work/faces-of-the-guild.mdoc +10 -7
  52. package/dist/templates/darkroom/content/collections/work/first-light.mdoc +34 -0
  53. package/dist/templates/darkroom/content/pages/about.json +1 -1
  54. package/dist/templates/darkroom/content/pages/contact.json +1 -1
  55. package/dist/templates/darkroom/content/pages/home.json +28 -16
  56. package/dist/templates/darkroom/content/pages/services.json +1 -1
  57. package/dist/templates/darkroom/content/site.json +1 -1
  58. package/dist/templates/darkroom/content/styles.json +1 -1
  59. package/dist/templates/darkroom/media/LICENSES.json +82 -49
  60. package/dist/templates/darkroom/openspace.json +2 -2
  61. package/dist/templates/darkroom/template.json +1 -1
  62. package/dist/templates/encore/content/pages/about.json +1 -1
  63. package/dist/templates/encore/content/pages/contact.json +1 -1
  64. package/dist/templates/encore/content/pages/home.json +9 -5
  65. package/dist/templates/encore/content/pages/music.json +1 -1
  66. package/dist/templates/encore/content/site.json +1 -1
  67. package/dist/templates/encore/content/styles.json +1 -1
  68. package/dist/templates/encore/media/LICENSES.json +11 -0
  69. package/dist/templates/encore/openspace.json +2 -2
  70. package/dist/templates/encore/template.json +1 -1
  71. package/dist/templates/field-notes/content/collections/essays/a-year-of-apples.mdoc +2 -2
  72. package/dist/templates/field-notes/content/collections/essays/in-praise-of-dirt-roads.mdoc +27 -0
  73. package/dist/templates/field-notes/content/collections/essays/learning-a-field.mdoc +2 -2
  74. package/dist/templates/field-notes/content/collections/essays/the-barn-that-leans.mdoc +29 -0
  75. package/dist/templates/field-notes/content/collections/essays/the-wall-builders.mdoc +2 -2
  76. package/dist/templates/field-notes/content/pages/about.json +1 -1
  77. package/dist/templates/field-notes/content/pages/contact.json +1 -1
  78. package/dist/templates/field-notes/content/pages/home.json +4 -4
  79. package/dist/templates/field-notes/content/pages/subscribe.json +1 -1
  80. package/dist/templates/field-notes/content/site.json +1 -1
  81. package/dist/templates/field-notes/content/styles.json +1 -1
  82. package/dist/templates/field-notes/media/LICENSES.json +55 -33
  83. package/dist/templates/field-notes/openspace.json +2 -2
  84. package/dist/templates/field-notes/template.json +1 -1
  85. package/dist/templates/fixwell/content/pages/about.json +1 -1
  86. package/dist/templates/fixwell/content/pages/contact.json +1 -1
  87. package/dist/templates/fixwell/content/pages/home.json +1 -1
  88. package/dist/templates/fixwell/content/pages/pricing.json +1 -1
  89. package/dist/templates/fixwell/content/pages/services.json +1 -1
  90. package/dist/templates/fixwell/content/site.json +1 -1
  91. package/dist/templates/fixwell/content/styles.json +1 -1
  92. package/dist/templates/fixwell/openspace.json +2 -2
  93. package/dist/templates/fixwell/template.json +1 -1
  94. package/dist/templates/folio/content/pages/about.json +1 -1
  95. package/dist/templates/folio/content/pages/contact.json +1 -1
  96. package/dist/templates/folio/content/pages/experience.json +1 -1
  97. package/dist/templates/folio/content/pages/home.json +1 -1
  98. package/dist/templates/folio/content/site.json +1 -1
  99. package/dist/templates/folio/content/styles.json +1 -1
  100. package/dist/templates/folio/openspace.json +2 -2
  101. package/dist/templates/folio/template.json +1 -1
  102. package/dist/templates/gather/content/pages/about.json +1 -1
  103. package/dist/templates/gather/content/pages/contact.json +1 -1
  104. package/dist/templates/gather/content/pages/home.json +26 -12
  105. package/dist/templates/gather/content/pages/programme.json +1 -1
  106. package/dist/templates/gather/content/pages/speakers.json +1 -1
  107. package/dist/templates/gather/content/pages/tickets.json +1 -1
  108. package/dist/templates/gather/content/pages/venue.json +1 -1
  109. package/dist/templates/gather/content/site.json +1 -1
  110. package/dist/templates/gather/content/styles.json +1 -1
  111. package/dist/templates/gather/openspace.json +2 -2
  112. package/dist/templates/gather/template.json +1 -1
  113. package/dist/templates/harbor/content/collections/news/2026-09-15-meet-the-repair-crew.mdoc +2 -2
  114. package/dist/templates/harbor/content/pages/about.json +1 -1
  115. package/dist/templates/harbor/content/pages/contact.json +1 -1
  116. package/dist/templates/harbor/content/pages/get-involved.json +2 -2
  117. package/dist/templates/harbor/content/pages/home.json +10 -6
  118. package/dist/templates/harbor/content/pages/programs.json +3 -3
  119. package/dist/templates/harbor/content/site.json +1 -1
  120. package/dist/templates/harbor/content/styles.json +1 -1
  121. package/dist/templates/harbor/media/LICENSES.json +22 -0
  122. package/dist/templates/harbor/openspace.json +2 -2
  123. package/dist/templates/harbor/template.json +1 -1
  124. package/dist/templates/hearth/content/pages/about.json +1 -1
  125. package/dist/templates/hearth/content/pages/home.json +18 -23
  126. package/dist/templates/hearth/content/pages/menu.json +1 -1
  127. package/dist/templates/hearth/content/pages/private-dining.json +1 -1
  128. package/dist/templates/hearth/content/pages/visit.json +1 -1
  129. package/dist/templates/hearth/content/site.json +1 -1
  130. package/dist/templates/hearth/content/styles.json +1 -1
  131. package/dist/templates/hearth/media/LICENSES.json +22 -11
  132. package/dist/templates/hearth/openspace.json +2 -2
  133. package/dist/templates/hearth/template.json +1 -1
  134. package/dist/templates/inkwell/content/pages/about.json +1 -1
  135. package/dist/templates/inkwell/content/pages/books.json +1 -1
  136. package/dist/templates/inkwell/content/pages/contact.json +1 -1
  137. package/dist/templates/inkwell/content/pages/home.json +1 -1
  138. package/dist/templates/inkwell/content/pages/speaking.json +1 -1
  139. package/dist/templates/inkwell/content/site.json +1 -1
  140. package/dist/templates/inkwell/content/styles.json +1 -1
  141. package/dist/templates/inkwell/openspace.json +2 -2
  142. package/dist/templates/inkwell/template.json +1 -1
  143. package/dist/templates/keystone/content/pages/about.json +1 -1
  144. package/dist/templates/keystone/content/pages/contact.json +1 -1
  145. package/dist/templates/keystone/content/pages/home.json +1 -1
  146. package/dist/templates/keystone/content/pages/results.json +1 -1
  147. package/dist/templates/keystone/content/pages/work-with-me.json +1 -1
  148. package/dist/templates/keystone/content/site.json +1 -1
  149. package/dist/templates/keystone/content/styles.json +1 -1
  150. package/dist/templates/keystone/openspace.json +2 -2
  151. package/dist/templates/keystone/template.json +1 -1
  152. package/dist/templates/kiln/content/collections/classes/glaze-day-march.mdoc +2 -2
  153. package/dist/templates/kiln/content/collections/classes/hand-building-february.mdoc +2 -2
  154. package/dist/templates/kiln/content/collections/classes/wheel-weekend-january.mdoc +2 -2
  155. package/dist/templates/kiln/content/pages/about.json +1 -1
  156. package/dist/templates/kiln/content/pages/contact.json +1 -1
  157. package/dist/templates/kiln/content/pages/home.json +6 -6
  158. package/dist/templates/kiln/content/pages/workshops.json +1 -1
  159. package/dist/templates/kiln/content/site.json +1 -1
  160. package/dist/templates/kiln/content/styles.json +1 -1
  161. package/dist/templates/kiln/media/LICENSES.json +55 -0
  162. package/dist/templates/kiln/openspace.json +2 -2
  163. package/dist/templates/kiln/template.json +1 -1
  164. package/dist/templates/ledger/content/pages/about.json +1 -1
  165. package/dist/templates/ledger/content/pages/contact.json +1 -1
  166. package/dist/templates/ledger/content/pages/home.json +1 -1
  167. package/dist/templates/ledger/content/pages/services.json +1 -1
  168. package/dist/templates/ledger/content/site.json +1 -1
  169. package/dist/templates/ledger/content/styles.json +1 -1
  170. package/dist/templates/ledger/openspace.json +2 -2
  171. package/dist/templates/ledger/template.json +1 -1
  172. package/dist/templates/link/content/pages/home.json +36 -32
  173. package/dist/templates/link/content/site.json +1 -1
  174. package/dist/templates/link/content/styles.json +1 -1
  175. package/dist/templates/link/media/LICENSES.json +25 -25
  176. package/dist/templates/link/openspace.json +2 -2
  177. package/dist/templates/link/template.json +1 -1
  178. package/dist/templates/meadow/content/collections/workshops/breath-and-rest-workshop.mdoc +2 -2
  179. package/dist/templates/meadow/content/pages/about.json +1 -1
  180. package/dist/templates/meadow/content/pages/bodywork.json +1 -1
  181. package/dist/templates/meadow/content/pages/classes.json +1 -1
  182. package/dist/templates/meadow/content/pages/contact.json +1 -1
  183. package/dist/templates/meadow/content/pages/home.json +1 -1
  184. package/dist/templates/meadow/content/site.json +1 -1
  185. package/dist/templates/meadow/content/styles.json +1 -1
  186. package/dist/templates/meadow/media/LICENSES.json +11 -0
  187. package/dist/templates/meadow/openspace.json +2 -2
  188. package/dist/templates/meadow/template.json +1 -1
  189. package/dist/templates/orbit/content/pages/about.json +1 -1
  190. package/dist/templates/orbit/content/pages/contact.json +1 -1
  191. package/dist/templates/orbit/content/pages/features.json +1 -1
  192. package/dist/templates/orbit/content/pages/home.json +26 -12
  193. package/dist/templates/orbit/content/pages/pricing.json +1 -1
  194. package/dist/templates/orbit/content/site.json +1 -1
  195. package/dist/templates/orbit/content/styles.json +1 -1
  196. package/dist/templates/orbit/openspace.json +2 -2
  197. package/dist/templates/orbit/template.json +1 -1
  198. package/dist/templates/signal/content/pages/about.json +1 -1
  199. package/dist/templates/signal/content/pages/contact.json +1 -1
  200. package/dist/templates/signal/content/pages/home.json +1 -1
  201. package/dist/templates/signal/content/pages/pricing.json +1 -1
  202. package/dist/templates/signal/content/site.json +1 -1
  203. package/dist/templates/signal/content/styles.json +1 -1
  204. package/dist/templates/signal/openspace.json +2 -2
  205. package/dist/templates/signal/template.json +1 -1
  206. package/dist/templates/vow/content/pages/about.json +1 -1
  207. package/dist/templates/vow/content/pages/home.json +1 -1
  208. package/dist/templates/vow/content/pages/registry.json +1 -1
  209. package/dist/templates/vow/content/pages/rsvp.json +1 -1
  210. package/dist/templates/vow/content/pages/schedule.json +1 -1
  211. package/dist/templates/vow/content/pages/travel.json +1 -1
  212. package/dist/templates/vow/content/site.json +1 -1
  213. package/dist/templates/vow/content/styles.json +1 -1
  214. package/dist/templates/vow/openspace.json +2 -2
  215. package/dist/templates/vow/template.json +1 -1
  216. package/package.json +6 -6
  217. package/dist/chunk-6NIIOHOX.js.map +0 -1
  218. package/dist/chunk-7I6IJI6Z.js.map +0 -1
  219. package/dist/templates/darkroom/content/collections/work/dry-season.mdoc +0 -28
  220. /package/dist/{agents-md-3W4PIY4N.js.map → agents-md-Q2TI3NHB.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/page.json",
2
+ "$schema": "https://schema.openspace.host/v1/page.json",
3
3
  "id": "pg_mdnn4w8hvq",
4
4
  "title": "Home",
5
5
  "slug": "",
@@ -161,10 +161,10 @@
161
161
  "v": 1,
162
162
  "fields": {
163
163
  "image": {
164
- "src": "https://images.unsplash.com/photo-1667053508464-eb11b394df83?w=680&q=80",
165
- "alt": "Studio portrait from Faces of the Guild",
164
+ "src": "https://images.unsplash.com/photo-1620122303020-87ec826cf70d?w=680&q=80",
165
+ "alt": "Black-and-white studio portrait from a private session",
166
166
  "width": 680,
167
- "height": 850
167
+ "height": 1020
168
168
  },
169
169
  "aspect": "4:5",
170
170
  "lightbox": false
@@ -177,10 +177,14 @@
177
177
  "v": 1,
178
178
  "fields": {
179
179
  "image": {
180
- "src": "https://images.unsplash.com/photo-1703088066010-af61bb552da4?w=680&q=80",
181
- "alt": "A lantern-lit street at night, from After Hours",
182
- "width": 680,
183
- "height": 1020
180
+ "src": "https://images.unsplash.com/photo-1772758632331-56fcdb6fd45b?w=1240&q=80",
181
+ "alt": "A baker at his brick oven, from First Light",
182
+ "width": 1240,
183
+ "height": 827,
184
+ "focal": [
185
+ 0.3,
186
+ 0.35
187
+ ]
184
188
  },
185
189
  "aspect": "4:5",
186
190
  "lightbox": false
@@ -193,10 +197,14 @@
193
197
  "v": 1,
194
198
  "fields": {
195
199
  "image": {
196
- "src": "https://images.unsplash.com/photo-1620122303020-87ec826cf70d?w=680&q=80",
197
- "alt": "Black-and-white portrait from Faces of the Guild",
200
+ "src": "https://images.unsplash.com/photo-1776728016975-45f2197c0d2a?w=680&q=80",
201
+ "alt": "A wood carver with his tools, from Faces of the Guild",
198
202
  "width": 680,
199
- "height": 1020
203
+ "height": 1020,
204
+ "focal": [
205
+ 0.5,
206
+ 0.3
207
+ ]
200
208
  },
201
209
  "aspect": "4:5",
202
210
  "lightbox": false
@@ -209,8 +217,8 @@
209
217
  "v": 1,
210
218
  "fields": {
211
219
  "image": {
212
- "src": "https://images.unsplash.com/photo-1542401886-65d6c61db217?w=1240&q=80",
213
- "alt": "Sand dunes at dawn, from Dry Season",
220
+ "src": "https://images.unsplash.com/photo-1465495976277-4387d4b0b4c6?w=1240&q=80",
221
+ "alt": "A couple's joined hands, from Two Small Weddings",
214
222
  "width": 1240,
215
223
  "height": 827
216
224
  },
@@ -338,10 +346,14 @@
338
346
  "v": 1,
339
347
  "fields": {
340
348
  "image": {
341
- "src": "https://images.unsplash.com/photo-1493863641943-9b68992a8d07?w=720&q=80",
342
- "alt": "Mara photographing on a city street",
349
+ "src": "https://images.unsplash.com/photo-1748640858029-53c840ef5a1b?w=720&q=80",
350
+ "alt": "A shopkeeper at his counter, from First Light",
343
351
  "width": 720,
344
- "height": 487
352
+ "height": 1080,
353
+ "focal": [
354
+ 0.55,
355
+ 0.55
356
+ ]
345
357
  },
346
358
  "aspect": "3:2",
347
359
  "heading": "Editorial and books",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/page.json",
2
+ "$schema": "https://schema.openspace.host/v1/page.json",
3
3
  "id": "pg_7dmpqcv4k7",
4
4
  "title": "Sessions & prices",
5
5
  "slug": "services",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/site.json",
2
+ "$schema": "https://schema.openspace.host/v1/site.json",
3
3
  "title": "Mara Quill",
4
4
  "tagline": "Portrait and editorial photographer in Brooklyn.",
5
5
  "nav": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/styles.json",
2
+ "$schema": "https://schema.openspace.host/v1/styles.json",
3
3
  "choices": {
4
4
  "palette": {
5
5
  "brand": "oklch(0.32 0.02 260)",
@@ -60,17 +60,6 @@
60
60
  "license": "Unsplash License",
61
61
  "licenseUrl": "https://unsplash.com/license"
62
62
  },
63
- {
64
- "kind": "image",
65
- "src": "https://images.unsplash.com/photo-1493863641943-9b68992a8d07",
66
- "title": "A photographer shooting on a busy city street",
67
- "author": "Jakob Owens",
68
- "authorUrl": "https://unsplash.com/@jakobowens1",
69
- "source": "Unsplash",
70
- "sourceUrl": "https://unsplash.com/photos/shallow-focus-photography-of-man-using-a-dslr-camera-DQPP9rVLYGQ",
71
- "license": "Unsplash License",
72
- "licenseUrl": "https://unsplash.com/license"
73
- },
74
63
  {
75
64
  "kind": "image",
76
65
  "src": "https://images.unsplash.com/photo-1494790108377-be9c29b29330",
@@ -84,34 +73,12 @@
84
73
  },
85
74
  {
86
75
  "kind": "image",
87
- "src": "https://images.unsplash.com/photo-1500530855697-b586d89ba3ee",
88
- "title": "A desert road running straight toward red rock mountains",
89
- "author": "Jake Blucker",
90
- "authorUrl": "https://unsplash.com/@jakeblucker",
76
+ "src": "https://images.unsplash.com/photo-1496811425508-6d7ebb7ff32c",
77
+ "title": "A young woman in a white shirt, bow tie and brown apron looking into the camera",
78
+ "author": "Steven Cleghorn",
79
+ "authorUrl": "https://unsplash.com/@buliamti",
91
80
  "source": "Unsplash",
92
- "sourceUrl": "https://unsplash.com/photos/black-concrete-road-surrounded-by-brown-rocks-tMzCrBkM99Y",
93
- "license": "Unsplash License",
94
- "licenseUrl": "https://unsplash.com/license"
95
- },
96
- {
97
- "kind": "image",
98
- "src": "https://images.unsplash.com/photo-1506744038136-46273834b3fb",
99
- "title": "A misty river valley with pine trees and granite cliffs at dawn",
100
- "author": "Bailey Zindel",
101
- "authorUrl": "https://unsplash.com/@baileyzindel",
102
- "source": "Unsplash",
103
- "sourceUrl": "https://unsplash.com/photos/river-in-yosemite-valley-at-low-light-NRQV-hBF10M",
104
- "license": "Unsplash License",
105
- "licenseUrl": "https://unsplash.com/license"
106
- },
107
- {
108
- "kind": "image",
109
- "src": "https://images.unsplash.com/photo-1509316785289-025f5b846b35",
110
- "title": "Red rock buttes rising from a desert valley",
111
- "author": "Ganapathy Kumar",
112
- "authorUrl": "https://unsplash.com/@gkumar2175",
113
- "source": "Unsplash",
114
- "sourceUrl": "https://unsplash.com/photos/sandstone-buttes-in-monument-valley-L75D18aVal8",
81
+ "sourceUrl": "https://unsplash.com/photos/woman-wearing-brown-apron-psomVjxL29Y",
115
82
  "license": "Unsplash License",
116
83
  "licenseUrl": "https://unsplash.com/license"
117
84
  },
@@ -148,17 +115,6 @@
148
115
  "license": "Unsplash License",
149
116
  "licenseUrl": "https://unsplash.com/license"
150
117
  },
151
- {
152
- "kind": "image",
153
- "src": "https://images.unsplash.com/photo-1542401886-65d6c61db217",
154
- "title": "Rippled orange sand dunes under a hazy sky",
155
- "author": "Wolfgang Hasselmann",
156
- "authorUrl": "https://unsplash.com/@wolfgang_hasselmann",
157
- "source": "Unsplash",
158
- "sourceUrl": "https://unsplash.com/photos/rolling-sand-dunes-in-desert-landscape-pVr6wvUneMk",
159
- "license": "Unsplash License",
160
- "licenseUrl": "https://unsplash.com/license"
161
- },
162
118
  {
163
119
  "kind": "image",
164
120
  "src": "https://images.unsplash.com/photo-1549981832-2ba2ee913334",
@@ -192,6 +148,17 @@
192
148
  "license": "Unsplash License",
193
149
  "licenseUrl": "https://unsplash.com/license"
194
150
  },
151
+ {
152
+ "kind": "image",
153
+ "src": "https://images.unsplash.com/photo-1631396327810-0299385c06bf",
154
+ "title": "A black-and-white photo of a woodworker shaping a block at his bench",
155
+ "author": "Bailey Alexander",
156
+ "authorUrl": "https://unsplash.com/@baileyal3xander",
157
+ "source": "Unsplash",
158
+ "sourceUrl": "https://unsplash.com/photos/a-man-is-working-on-a-piece-of-wood-UJfNwtQ7zAs",
159
+ "license": "Unsplash License",
160
+ "licenseUrl": "https://unsplash.com/license"
161
+ },
195
162
  {
196
163
  "kind": "image",
197
164
  "src": "https://images.unsplash.com/photo-1639747280804-dd2d6b3d88ac",
@@ -214,6 +181,17 @@
214
181
  "license": "Unsplash License",
215
182
  "licenseUrl": "https://unsplash.com/license"
216
183
  },
184
+ {
185
+ "kind": "image",
186
+ "src": "https://images.unsplash.com/photo-1660796334912-8ce8e9c2cff0",
187
+ "title": "A man working late at a bench in a dim workshop under a single lamp",
188
+ "author": "Alex Gruber",
189
+ "authorUrl": "https://unsplash.com/@alex_gruber",
190
+ "source": "Unsplash",
191
+ "sourceUrl": "https://unsplash.com/photos/a-man-working-in-a-shop-rgSLzr82Kd8",
192
+ "license": "Unsplash License",
193
+ "licenseUrl": "https://unsplash.com/license"
194
+ },
217
195
  {
218
196
  "kind": "image",
219
197
  "src": "https://images.unsplash.com/photo-1667053508464-eb11b394df83",
@@ -247,6 +225,17 @@
247
225
  "license": "Unsplash License",
248
226
  "licenseUrl": "https://unsplash.com/license"
249
227
  },
228
+ {
229
+ "kind": "image",
230
+ "src": "https://images.unsplash.com/photo-1713652425093-47778c267769",
231
+ "title": "An older craftsman with his arms crossed in a cluttered workshop",
232
+ "author": "Andrew Heald",
233
+ "authorUrl": "https://unsplash.com/@aheald25",
234
+ "source": "Unsplash",
235
+ "sourceUrl": "https://unsplash.com/photos/a-man-in-an-old-fashioned-shop-with-his-arms-crossed-WV6tnAij3rU",
236
+ "license": "Unsplash License",
237
+ "licenseUrl": "https://unsplash.com/license"
238
+ },
250
239
  {
251
240
  "kind": "image",
252
241
  "src": "https://images.unsplash.com/photo-1715285977619-6d9357168f46",
@@ -269,6 +258,39 @@
269
258
  "license": "Unsplash License",
270
259
  "licenseUrl": "https://unsplash.com/license"
271
260
  },
261
+ {
262
+ "kind": "image",
263
+ "src": "https://images.unsplash.com/photo-1748640858029-53c840ef5a1b",
264
+ "title": "A shopkeeper resting his chin on his hand behind a counter of flatbreads",
265
+ "author": "Rawan Yasser",
266
+ "authorUrl": "https://unsplash.com/@rawanyasser",
267
+ "source": "Unsplash",
268
+ "sourceUrl": "https://unsplash.com/photos/a-man-leans-on-a-counter-in-his-shop-1rW3RIxLu7E",
269
+ "license": "Unsplash License",
270
+ "licenseUrl": "https://unsplash.com/license"
271
+ },
272
+ {
273
+ "kind": "image",
274
+ "src": "https://images.unsplash.com/photo-1772758632331-56fcdb6fd45b",
275
+ "title": "A smiling baker in a hairnet sliding bread from a brick oven",
276
+ "author": "Yasin Onus",
277
+ "authorUrl": "https://unsplash.com/@yasinonus",
278
+ "source": "Unsplash",
279
+ "sourceUrl": "https://unsplash.com/photos/baker-smiling-while-preparing-food-in-a-brick-oven-yS8tQoatvmM",
280
+ "license": "Unsplash License",
281
+ "licenseUrl": "https://unsplash.com/license"
282
+ },
283
+ {
284
+ "kind": "image",
285
+ "src": "https://images.unsplash.com/photo-1776728016975-45f2197c0d2a",
286
+ "title": "A black-and-white portrait of a bearded wood carver holding his tools and a figure",
287
+ "author": "Tim Mossholder",
288
+ "authorUrl": "https://unsplash.com/@timmossholder",
289
+ "source": "Unsplash",
290
+ "sourceUrl": "https://unsplash.com/photos/elderly-craftsman-with-beard-holding-carving-tools-and-figurine-E5SfRlzUh2Q",
291
+ "license": "Unsplash License",
292
+ "licenseUrl": "https://unsplash.com/license"
293
+ },
272
294
  {
273
295
  "kind": "image",
274
296
  "src": "https://images.unsplash.com/photo-1778405953873-413e3d5d8915",
@@ -279,6 +301,17 @@
279
301
  "sourceUrl": "https://unsplash.com/photos/a-black-and-white-portrait-of-an-older-man-2lKN4bZQ45s",
280
302
  "license": "Unsplash License",
281
303
  "licenseUrl": "https://unsplash.com/license"
304
+ },
305
+ {
306
+ "kind": "image",
307
+ "src": "https://images.unsplash.com/photo-1783768204400-7e6f402f3738",
308
+ "title": "A black-and-white photo of a woman kneading dough at a kitchen table",
309
+ "author": "Lisa Marie Theck",
310
+ "authorUrl": "https://unsplash.com/@lisa_marie_theck",
311
+ "source": "Unsplash",
312
+ "sourceUrl": "https://unsplash.com/photos/a-woman-preparing-food-in-a-rustic-kitchen-JzKQSxf4-4Q",
313
+ "license": "Unsplash License",
314
+ "licenseUrl": "https://unsplash.com/license"
282
315
  }
283
316
  ]
284
317
  }
@@ -1,12 +1,12 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/site-config.json",
2
+ "$schema": "https://schema.openspace.host/v1/site-config.json",
3
3
  "siteId": "st_j70fsabma3",
4
4
  "schemaVersion": 1,
5
5
  "template": {
6
6
  "id": "darkroom",
7
7
  "version": "1.0.0"
8
8
  },
9
- "hub": "https://hub.openspace.dev",
9
+ "hub": "https://hub.openspace.host",
10
10
  "deploy": {
11
11
  "target": "github-pages",
12
12
  "url": "https://example.github.io/darkroom",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/template.json",
2
+ "$schema": "https://schema.openspace.host/v1/template.json",
3
3
  "id": "darkroom",
4
4
  "name": "Darkroom",
5
5
  "description": "An editorial, image-first portfolio for photographers and visual artists, with project pages, session packages and an enquiry form.",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/page.json",
2
+ "$schema": "https://schema.openspace.host/v1/page.json",
3
3
  "id": "pg_awra08n6jh",
4
4
  "title": "About & press",
5
5
  "slug": "about",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/page.json",
2
+ "$schema": "https://schema.openspace.host/v1/page.json",
3
3
  "id": "pg_h63an1absw",
4
4
  "title": "Contact",
5
5
  "slug": "contact",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/page.json",
2
+ "$schema": "https://schema.openspace.host/v1/page.json",
3
3
  "id": "pg_a2aw835bvy",
4
4
  "title": "Home",
5
5
  "slug": "",
@@ -264,10 +264,14 @@
264
264
  "images": [
265
265
  {
266
266
  "image": {
267
- "src": "https://images.unsplash.com/photo-1501386761578-eac5c94b800a?w=960&q=80",
268
- "alt": "A crowd under coloured stage lights",
269
- "width": 960,
270
- "height": 640
267
+ "src": "https://images.unsplash.com/photo-1561447920-ee278fe828a2?w=1280&q=80",
268
+ "alt": "Synths on stage in violet haze",
269
+ "width": 1280,
270
+ "height": 631,
271
+ "focal": [
272
+ 0.42,
273
+ 0.55
274
+ ]
271
275
  }
272
276
  },
273
277
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/page.json",
2
+ "$schema": "https://schema.openspace.host/v1/page.json",
3
3
  "id": "pg_4czb9an2pn",
4
4
  "title": "Music",
5
5
  "slug": "music",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/site.json",
2
+ "$schema": "https://schema.openspace.host/v1/site.json",
3
3
  "title": "Juno Vale",
4
4
  "tagline": "Songs for driving home after midnight.",
5
5
  "nav": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/styles.json",
2
+ "$schema": "https://schema.openspace.host/v1/styles.json",
3
3
  "choices": {
4
4
  "palette": {
5
5
  "brand": "oklch(0.45 0.14 330)",
@@ -60,6 +60,17 @@
60
60
  "license": "Unsplash License",
61
61
  "licenseUrl": "https://unsplash.com/license"
62
62
  },
63
+ {
64
+ "kind": "image",
65
+ "src": "https://images.unsplash.com/photo-1561447920-ee278fe828a2",
66
+ "title": "A keyboard player on a stage washed in violet haze",
67
+ "author": "dreokt",
68
+ "authorUrl": "https://unsplash.com/@dreokt",
69
+ "source": "Unsplash",
70
+ "sourceUrl": "https://unsplash.com/photos/man-playing-electronic-keyboard-h5DPNz9kMZA",
71
+ "license": "Unsplash License",
72
+ "licenseUrl": "https://unsplash.com/license"
73
+ },
63
74
  {
64
75
  "kind": "image",
65
76
  "src": "https://images.unsplash.com/photo-1605286232233-e448650f5914",
@@ -1,12 +1,12 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/site-config.json",
2
+ "$schema": "https://schema.openspace.host/v1/site-config.json",
3
3
  "siteId": "st_y549fya436",
4
4
  "schemaVersion": 1,
5
5
  "template": {
6
6
  "id": "encore",
7
7
  "version": "1.0.0"
8
8
  },
9
- "hub": "https://hub.openspace.dev",
9
+ "hub": "https://hub.openspace.host",
10
10
  "deploy": {
11
11
  "target": "github-pages",
12
12
  "url": "https://example.github.io/encore",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/template.json",
2
+ "$schema": "https://schema.openspace.host/v1/template.json",
3
3
  "id": "encore",
4
4
  "name": "Encore",
5
5
  "description": "An expressive, nocturnal site for musicians, performers and podcasters, with an audio player, tour dates, a press kit and an episode list.",
@@ -7,8 +7,8 @@ categories:
7
7
  - essays
8
8
  tags:
9
9
  - 7-minute read
10
- image: https://images.unsplash.com/photo-1465146344425-f00d5f5c8f07?w=1600&q=80
11
- imageAlt: Wild poppies scattered through a summer meadow
10
+ image: https://images.unsplash.com/photo-1789448720981-96879056796d?w=1600&q=80
11
+ imageAlt: A gnarled old apple tree in a grassy field
12
12
  excerpt: Pruning a forgotten orchard back to life, one tree and one mistake at a time.
13
13
  ---
14
14
 
@@ -0,0 +1,27 @@
1
+ ---
2
+ status: published
3
+ title: In praise of dirt roads
4
+ date: 2026-08-09
5
+ author: Ruth Ellery
6
+ categories:
7
+ - essays
8
+ tags:
9
+ - 5-minute read
10
+ image: https://images.unsplash.com/photo-1670967595704-f5f38475bb01?w=1600&q=80
11
+ imageAlt: A dirt road running between fields and forest under a grey sky
12
+ excerpt: Half the roads in our county are gravel. They are slower, muddier and much better company.
13
+ ---
14
+
15
+ *5-minute read*
16
+
17
+ The road to our house is three miles of gravel, graded twice a year and impassable for a fortnight every April. I have come to love it.¹
18
+
19
+ On a dirt road you drive at the speed of noticing. You see the fox in the hayfield and the first red maple; you stop to talk to whoever is walking. Pave it, and the same three miles become something to get through.
20
+
21
+ Vermont still has more than eight thousand miles of unpaved town roads. Long may they rattle.
22
+
23
+ ---
24
+
25
+ **Notes**
26
+
27
+ 1. Mud season, roughly the first half of April, is when the frost leaves the ground and the road briefly becomes a suggestion.
@@ -7,8 +7,8 @@ categories:
7
7
  - essays
8
8
  tags:
9
9
  - 8-minute read
10
- image: https://images.unsplash.com/photo-1501854140801-50d01698950b?w=1600&q=80
11
- imageAlt: Green hills seen from above, ridges catching the light
10
+ image: https://images.unsplash.com/photo-1676903761134-a7806cd2f26d?w=1600&q=80
11
+ imageAlt: Hay bales in a green field below a barn and a wooded hill
12
12
  excerpt: I walked the same eleven acres every morning for a year. Here is what the field taught me.
13
13
  ---
14
14
 
@@ -0,0 +1,29 @@
1
+ ---
2
+ status: published
3
+ title: The barn that leans
4
+ date: 2026-08-23
5
+ author: Ruth Ellery
6
+ categories:
7
+ - essays
8
+ tags:
9
+ - 6-minute read
10
+ image: https://images.unsplash.com/photo-1743351831171-a4317f076b2f?w=1600&q=80
11
+ imageAlt: A weathered barn with a rusted roof against autumn hills
12
+ excerpt: Our neighbour's barn has leaned a little further east every year since 1938. Nobody minds.
13
+ ---
14
+
15
+ *6-minute read*
16
+
17
+ Every farm on our road has one: a barn that should have fallen down decades ago and hasn't. Ours belongs to the Wilsons, and it leans east, toward the morning, as if it's waiting for something.¹
18
+
19
+ Old barns were built from what was standing nearby: hemlock beams, pine boards, granite from the field. When they go, they go slowly, a board a winter, until one spring the roof is resting in the hayloft and the swallows move next door.
20
+
21
+ ## Why we keep them
22
+
23
+ A new pole barn would be cheaper than a season of repairs. But the old ones hold a kind of knowledge: where the wind comes from, which corner floods, how big a hay crop a hill farm used to need.
24
+
25
+ ---
26
+
27
+ **Notes**
28
+
29
+ 1. Ed Wilson says his grandfather braced it with a single cable in 1938 and told everyone it would be fine. It has been.
@@ -7,8 +7,8 @@ categories:
7
7
  - essays
8
8
  tags:
9
9
  - 6-minute read
10
- image: https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=1600&q=80
11
- imageAlt: Sunlight falling through tall trees onto a forest path
10
+ image: https://images.unsplash.com/photo-1611950318733-51d05def21ee?w=1600&q=80
11
+ imageAlt: An old stone wall running through the woods under early snow
12
12
  excerpt: New England has more stone wall than the moon has craters. Who built them, and why?
13
13
  ---
14
14
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/page.json",
2
+ "$schema": "https://schema.openspace.host/v1/page.json",
3
3
  "id": "pg_jb98pzwwr8",
4
4
  "title": "About",
5
5
  "slug": "about",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/page.json",
2
+ "$schema": "https://schema.openspace.host/v1/page.json",
3
3
  "id": "pg_qgdxacc2d3",
4
4
  "title": "Contact",
5
5
  "slug": "contact",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/page.json",
2
+ "$schema": "https://schema.openspace.host/v1/page.json",
3
3
  "id": "pg_at43pg8ew2",
4
4
  "title": "Home",
5
5
  "slug": "",
@@ -197,7 +197,7 @@
197
197
  "source": {
198
198
  "collection": "essays",
199
199
  "sort": "date-desc",
200
- "limit": 4
200
+ "limit": 3
201
201
  },
202
202
  "columns": "3",
203
203
  "showImage": false,
@@ -237,8 +237,8 @@
237
237
  "headingLevel": "h2",
238
238
  "source": {
239
239
  "collection": "essays",
240
- "sort": "date-desc",
241
- "limit": 5
240
+ "sort": "date-asc",
241
+ "limit": 3
242
242
  },
243
243
  "columns": "3",
244
244
  "showImage": true,
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/page.json",
2
+ "$schema": "https://schema.openspace.host/v1/page.json",
3
3
  "id": "pg_99fmsxfec8",
4
4
  "title": "Subscribe",
5
5
  "slug": "subscribe",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/site.json",
2
+ "$schema": "https://schema.openspace.host/v1/site.json",
3
3
  "title": "The Long Field",
4
4
  "tagline": "Essays on walking, weather and paying attention.",
5
5
  "nav": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://schema.openspace.dev/v1/styles.json",
2
+ "$schema": "https://schema.openspace.host/v1/styles.json",
3
3
  "choices": {
4
4
  "palette": {
5
5
  "brand": "oklch(0.9 0.17 100)",