@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
@@ -0,0 +1,9 @@
1
+ import { createRequire as __osCreateRequire } from "node:module"; const require = __osCreateRequire(import.meta.url);
2
+ import {
3
+ crawlGeneric
4
+ } from "./chunk-WE4QCL3R.js";
5
+ import "./chunk-26AZCID5.js";
6
+ export {
7
+ crawlGeneric
8
+ };
9
+ //# sourceMappingURL=crawl-5ZZ5W7B6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/index.js CHANGED
@@ -6,8 +6,10 @@ import {
6
6
  formatReport,
7
7
  run,
8
8
  runCheck
9
- } from "./chunk-6NIIOHOX.js";
10
- import "./chunk-7I6IJI6Z.js";
9
+ } from "./chunk-7SWL46LQ.js";
10
+ import "./chunk-WE4QCL3R.js";
11
+ import "./chunk-BW42R6WD.js";
12
+ import "./chunk-26AZCID5.js";
11
13
 
12
14
  // src/index.ts
13
15
  var name = "@omniharmonic/openspace-cli";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export const name = \"@omniharmonic/openspace-cli\";\n\nexport {\n type Budgets,\n type CheckOptions,\n type CheckReport,\n DEFAULT_BUDGETS,\n type Finding,\n formatReport,\n runCheck,\n} from \"./check\";\nexport { createProgram, run, VERSION } from \"./program\";\n"],"mappings":";;;;;;;;;;;;AAAO,IAAM,OAAO;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export const name = \"@omniharmonic/openspace-cli\";\n\nexport {\n type Budgets,\n type CheckOptions,\n type CheckReport,\n DEFAULT_BUDGETS,\n type Finding,\n formatReport,\n runCheck,\n} from \"./check\";\nexport { createProgram, run, VERSION } from \"./program\";\n"],"mappings":";;;;;;;;;;;;;;AAAO,IAAM,OAAO;","names":[]}
@@ -13,7 +13,7 @@ changes land on `main` (`.github/workflows/publish.yml`).
13
13
  and form (`frm_`) has a stable id. Keep ids when editing; new ids are the prefix plus 10
14
14
  lowercase Crockford base32 characters (no i, l, o, u).
15
15
  3. **Only valid block types and fields** (listed below; full JSON Schema at
16
- https://schema.openspace.dev/v1/). Unknown fields fail the build.
16
+ https://schema.openspace.host/v1/). Unknown fields fail the build.
17
17
  4. **Styles change through tokens** in `content/styles.json` (palette, type pairing, density,
18
18
  shape…), never inline CSS. Sections pick one of five color themes.
19
19
  5. **Never put secrets in content** (API keys, tokens, passwords). `openspace check` fails on them.
@@ -28,7 +28,7 @@ changes land on `main` (`.github/workflows/publish.yml`).
28
28
  ## Layout
29
29
 
30
30
  ```
31
- openspace.json site id, Hub URL, deploy target, features (https://schema.openspace.dev/v1/site-config.json)
31
+ openspace.json site id, Hub URL, deploy target, features (https://schema.openspace.host/v1/site-config.json)
32
32
  content/site.json title, navigation, header, footer, SEO defaults, redirects
33
33
  content/styles.json design tokens and Site Styles choices
34
34
  content/media.json metadata for files in media/ (alt text, size, focal point, credit)
@@ -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_0fq27dh81s",
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_k1vx320q55",
4
4
  "title": "Commissions",
5
5
  "slug": "commissions",
@@ -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_h72a8wvyfr",
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_z815j3m0n5",
4
4
  "title": "Home",
5
5
  "slug": "",
@@ -56,34 +56,34 @@
56
56
  "images": [
57
57
  {
58
58
  "image": {
59
- "src": "https://images.unsplash.com/photo-1783611066016-59e16b0ac1c8?w=2880&q=80",
60
- "alt": "Snowy peaks reflected in a still mountain lake, from Cordillera",
59
+ "src": "https://images.unsplash.com/photo-1501785888041-af3ef285b470?w=2880&q=80",
60
+ "alt": "A rowing boat on a turquoise lake below jagged peaks, from Cordillera",
61
61
  "width": 2880,
62
62
  "height": 1920
63
63
  }
64
64
  },
65
65
  {
66
66
  "image": {
67
- "src": "https://images.unsplash.com/photo-1487958449943-2429e8be8625?w=2880&q=80",
68
- "alt": "A white angular building against a clear sky, from White City",
67
+ "src": "https://images.unsplash.com/photo-1512917774080-9991f1c4c750?w=2880&q=80",
68
+ "alt": "A white modernist villa and its pool among palms, from White City",
69
69
  "width": 2880,
70
70
  "height": 1920
71
71
  }
72
72
  },
73
73
  {
74
74
  "image": {
75
- "src": "https://images.unsplash.com/photo-1505142468610-359e7d316be0?w=2880&q=80",
76
- "alt": "Turquoise surf meeting a sandy shore from above, from Salt & Glass",
75
+ "src": "https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=2880&q=80",
76
+ "alt": "Low waves washing onto an empty beach at sunset, from Salt & Glass",
77
77
  "width": 2880,
78
- "height": 5126
78
+ "height": 1915
79
79
  }
80
80
  },
81
81
  {
82
82
  "image": {
83
- "src": "https://images.unsplash.com/photo-1465146344425-f00d5f5c8f07?w=2880&q=80",
84
- "alt": "Wild poppies scattered through a summer meadow, from Field Studies",
85
- "width": 2880,
86
- "height": 1908
83
+ "src": "https://images.unsplash.com/photo-1501854140801-50d01698950b?w=2600&q=80",
84
+ "alt": "Rolling green hills catching the evening light, from Field Studies",
85
+ "width": 2600,
86
+ "height": 1548
87
87
  }
88
88
  },
89
89
  {
@@ -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_excq64amzm",
4
4
  "title": "Work",
5
5
  "slug": "work",
@@ -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": "Elias Varga",
4
4
  "tagline": "Land, light and the buildings between.",
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.25 0 0)",
@@ -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_840xf2yefq",
4
4
  "schemaVersion": 1,
5
5
  "template": {
6
6
  "id": "atelier",
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/atelier",
@@ -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": "atelier",
4
4
  "name": "Atelier",
5
5
  "description": "A gallery-first portfolio for photographers and visual artists: a full-bleed slideshow, a project index and lightboxes, with chrome that stays out of the way.",
@@ -4,8 +4,8 @@ title: What this summer's heat map tells us
4
4
  date: 2026-09-12
5
5
  author: Grace Liu
6
6
  excerpt: Blocks with five-year-old trees were up to 6°F cooler at street level on the hottest days.
7
- image: https://images.unsplash.com/photo-1777150895644-2ca253ee1c93?w=1600&q=80
8
- imageAlt: A young tree seedling held in two hands
7
+ image: https://images.unsplash.com/photo-1790026988616-8a01ef4a6709?w=1600&q=80
8
+ imageAlt: A street shaded by a canopy of mature plane trees
9
9
  ---
10
10
 
11
11
  Volunteers measured street temperatures on twenty blocks during July's heatwave. Blocks with five-year-old trees were up to 6°F cooler than those without.
@@ -4,8 +4,8 @@ title: A record harvest in school gardens
4
4
  date: 2026-09-30
5
5
  author: Owen Price
6
6
  excerpt: "Squash, beans and a lot of very proud children: the school gardens had their best year yet."
7
- image: https://images.unsplash.com/photo-1631195414013-85b70ff2c180?w=1600&q=80
8
- imageAlt: Raised beds full of flowers in a school garden
7
+ image: https://images.unsplash.com/photo-1529007328922-d323f83de273?w=1600&q=80
8
+ imageAlt: A child holding an armful of chard from a school garden
9
9
  ---
10
10
 
11
11
  Twelve school gardens grew enough squash, beans and herbs for a harvest lunch at every school this autumn.
@@ -4,8 +4,8 @@ title: Planting season begins on Linden Avenue
4
4
  date: 2026-10-14
5
5
  author: Maya Chen
6
6
  excerpt: Forty volunteers, thirty-two trees and one very muddy Saturday to open the season.
7
- image: https://images.unsplash.com/photo-1544928938-6852c1925194?w=1600&q=80
8
- imageAlt: Volunteers holding shovels at a planting day
7
+ image: https://images.unsplash.com/photo-1598335624134-5bceb5de202d?w=1600&q=80
8
+ imageAlt: Neighbours kneeling to plant a young tree together
9
9
  ---
10
10
 
11
11
  Our first planting day of the season brought forty volunteers to Linden Avenue, where thirty-two London planes and red maples went into the ground before lunch.
@@ -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_96z8gajatg",
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_tz56z4ahvt",
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_aa79ztc7zb",
4
4
  "title": "Donate",
5
5
  "slug": "donate",
@@ -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_rpwvmy6qxn",
4
4
  "title": "Get involved",
5
5
  "slug": "get-involved",
@@ -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_nq67de47fc",
4
4
  "title": "Home",
5
5
  "slug": "",
@@ -132,7 +132,7 @@
132
132
  },
133
133
  "background": {
134
134
  "type": "image",
135
- "src": "https://images.unsplash.com/photo-1631195414013-85b70ff2c180?w=3236&q=80",
135
+ "src": "https://images.unsplash.com/photo-1466692476868-aef1dfb1e735?w=3840&q=80",
136
136
  "focal": [
137
137
  0.5,
138
138
  0.5
@@ -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_zxh6325yyt",
4
4
  "title": "Our work",
5
5
  "slug": "our-work",
@@ -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": "Shade Street Trust",
4
4
  "tagline": "Street trees for the hottest blocks in Eastport.",
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.52 0.12 150)",
@@ -49,6 +49,17 @@
49
49
  "license": "Unsplash License",
50
50
  "licenseUrl": "https://unsplash.com/license"
51
51
  },
52
+ {
53
+ "kind": "image",
54
+ "src": "https://images.unsplash.com/photo-1529007328922-d323f83de273",
55
+ "title": "A child holding an armful of freshly picked chard",
56
+ "author": "Johnny McClung",
57
+ "authorUrl": "https://unsplash.com/@johnnymcclung",
58
+ "source": "Unsplash",
59
+ "sourceUrl": "https://unsplash.com/photos/person-holding-bok-choy-0aC-3Gt7jF4",
60
+ "license": "Unsplash License",
61
+ "licenseUrl": "https://unsplash.com/license"
62
+ },
52
63
  {
53
64
  "kind": "image",
54
65
  "src": "https://images.unsplash.com/photo-1534528741775-53994a69daeb",
@@ -104,6 +115,17 @@
104
115
  "license": "Unsplash License",
105
116
  "licenseUrl": "https://unsplash.com/license"
106
117
  },
118
+ {
119
+ "kind": "image",
120
+ "src": "https://images.unsplash.com/photo-1598335624134-5bceb5de202d",
121
+ "title": "Neighbours kneeling to plant a young tree together",
122
+ "author": "Eyoel Kahssay",
123
+ "authorUrl": "https://unsplash.com/@eyoelkahssay",
124
+ "source": "Unsplash",
125
+ "sourceUrl": "https://unsplash.com/photos/woman-and-child-planting-tree-FyCjvyPG9Pg",
126
+ "license": "Unsplash License",
127
+ "licenseUrl": "https://unsplash.com/license"
128
+ },
107
129
  {
108
130
  "kind": "image",
109
131
  "src": "https://images.unsplash.com/photo-1614436201459-156d322d38c6",
@@ -158,6 +180,17 @@
158
180
  "sourceUrl": "https://unsplash.com/photos/hands-in-gloves-planting-small-seedlings-in-dark-soil-6xMClJG5dW8",
159
181
  "license": "Unsplash License",
160
182
  "licenseUrl": "https://unsplash.com/license"
183
+ },
184
+ {
185
+ "kind": "image",
186
+ "src": "https://images.unsplash.com/photo-1790026988616-8a01ef4a6709",
187
+ "title": "A quiet street under a canopy of tall plane trees",
188
+ "author": "Jakub Tomasik",
189
+ "authorUrl": "https://unsplash.com/@jakubeq",
190
+ "source": "Unsplash",
191
+ "sourceUrl": "https://unsplash.com/photos/street-lined-with-plane-trees-Az4s1u1pyLs",
192
+ "license": "Unsplash License",
193
+ "licenseUrl": "https://unsplash.com/license"
161
194
  }
162
195
  ]
163
196
  }
@@ -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_epeysb233n",
4
4
  "schemaVersion": 1,
5
5
  "template": {
6
6
  "id": "beacon",
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/beacon",
@@ -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": "beacon",
4
4
  "name": "Beacon",
5
5
  "description": "A mission-first site for nonprofits and campaigns, with donate buttons throughout, monthly giving, a campaign goal, impact numbers and volunteer days.",
@@ -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_n3zn43m479",
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_wx8vvp2eqg",
4
4
  "title": "Members",
5
5
  "slug": "directory",
@@ -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_782p7fqf60",
4
4
  "title": "Home",
5
5
  "slug": "",
@@ -77,10 +77,10 @@
77
77
  "v": 1,
78
78
  "fields": {
79
79
  "image": {
80
- "src": "https://images.unsplash.com/photo-1501854140801-50d01698950b?w=2560&q=80",
81
- "alt": "Green hills of the valley seen from above",
80
+ "src": "https://images.unsplash.com/photo-1744488340684-2b86590c15dd?w=2560&q=80",
81
+ "alt": "A member farm among autumn trees below the mountains",
82
82
  "width": 2560,
83
- "height": 1524
83
+ "height": 1426
84
84
  },
85
85
  "aspect": "21:9",
86
86
  "lightbox": false
@@ -513,7 +513,7 @@
513
513
  },
514
514
  "variant": "default",
515
515
  "style": {
516
- "colorTheme": "light",
516
+ "colorTheme": "light-accent",
517
517
  "padding": {
518
518
  "d": "xl",
519
519
  "m": "md"
@@ -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_767k25afbn",
4
4
  "title": "Join",
5
5
  "slug": "join",
@@ -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": "Hudson Valley Food Commons",
4
4
  "tagline": "Feeding the valley, together.",
5
5
  "nav": [
@@ -295,7 +295,7 @@
295
295
  "seo": {
296
296
  "titleTemplate": "%s · Hudson Valley Food Commons",
297
297
  "description": "A cooperative of farms, kitchens and food banks in the Hudson Valley.",
298
- "image": "https://images.unsplash.com/photo-1501854140801-50d01698950b?w=1200&q=80"
298
+ "image": "https://images.unsplash.com/photo-1744488340684-2b86590c15dd?w=1200&q=80"
299
299
  },
300
300
  "locale": "en-US",
301
301
  "integrations": {
@@ -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.5 0.1 140)",
@@ -27,17 +27,6 @@
27
27
  "license": "Unsplash License",
28
28
  "licenseUrl": "https://unsplash.com/license"
29
29
  },
30
- {
31
- "kind": "image",
32
- "src": "https://images.unsplash.com/photo-1501854140801-50d01698950b",
33
- "title": "Rolling green hills seen from above, ridges catching the light",
34
- "author": "Qingbao Meng",
35
- "authorUrl": "https://unsplash.com/@ideasboom",
36
- "source": "Unsplash",
37
- "sourceUrl": "https://unsplash.com/photos/birds-eye-view-photograph-of-green-mountains-01_igFr7hd4",
38
- "license": "Unsplash License",
39
- "licenseUrl": "https://unsplash.com/license"
40
- },
41
30
  {
42
31
  "kind": "image",
43
32
  "src": "https://images.unsplash.com/photo-1511632765486-a01980e01a18",
@@ -82,6 +71,17 @@
82
71
  "license": "Unsplash License",
83
72
  "licenseUrl": "https://unsplash.com/license"
84
73
  },
74
+ {
75
+ "kind": "image",
76
+ "src": "https://images.unsplash.com/photo-1744488340684-2b86590c15dd",
77
+ "title": "A small farm with a barn among autumn trees below a mountain",
78
+ "author": "LXS Photography",
79
+ "authorUrl": "https://unsplash.com/@lxsphotography",
80
+ "source": "Unsplash",
81
+ "sourceUrl": "https://unsplash.com/photos/autumn-farm-scene-with-a-barn-and-covered-bridge-1PnkD5YV6Sw",
82
+ "license": "Unsplash License",
83
+ "licenseUrl": "https://unsplash.com/license"
84
+ },
85
85
  {
86
86
  "kind": "image",
87
87
  "src": "https://images.unsplash.com/photo-1780387477222-730504564368",
@@ -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_kz22x8aed2",
4
4
  "schemaVersion": 1,
5
5
  "template": {
6
6
  "id": "commons",
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/commons",
@@ -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": "commons",
4
4
  "name": "Commons",
5
5
  "description": "A grounded, collective site for coalitions, cooperatives and movements, with a member directory, a map, gatherings and a join form.",
@@ -9,6 +9,13 @@ excerpt: Night-shift workers photographed in the last hour before dawn, in their
9
9
  image: https://images.unsplash.com/photo-1703088066010-af61bb552da4?w=1600&q=80
10
10
  imageAlt: After Hours, cover photograph
11
11
  gallery:
12
+ - src: https://images.unsplash.com/photo-1660796334912-8ce8e9c2cff0?w=2400&q=80
13
+ alt: A man working late at a bench in a dim workshop under a single lamp
14
+ width: 2400
15
+ height: 1583
16
+ focal:
17
+ - 0.55
18
+ - 0.5
12
19
  - src: https://images.unsplash.com/photo-1429292394373-ddbcc6bb7468?w=2400&q=80
13
20
  alt: A lone figure crossing a sunlit street between long shadows
14
21
  width: 2400
@@ -17,10 +24,6 @@ gallery:
17
24
  alt: A black-and-white close portrait of an older man with a grey beard
18
25
  width: 2304
19
26
  height: 3456
20
- - src: https://images.unsplash.com/photo-1493863641943-9b68992a8d07?w=2400&q=80
21
- alt: A photographer shooting on a busy city street
22
- width: 2400
23
- height: 1624
24
27
  ---
25
28
 
26
29
  Night-shift workers photographed in the last hour before dawn, in their own light.
@@ -9,16 +9,19 @@ excerpt: Forty portraits of furniture makers, printers and weavers for the guild
9
9
  image: https://images.unsplash.com/photo-1667053508464-eb11b394df83?w=1600&q=80
10
10
  imageAlt: Faces of the Guild, cover photograph
11
11
  gallery:
12
- - src: https://images.unsplash.com/photo-1620122303020-87ec826cf70d?w=2400&q=80
13
- alt: A black-and-white studio portrait of a young woman
12
+ - src: https://images.unsplash.com/photo-1776728016975-45f2197c0d2a?w=2400&q=80
13
+ alt: A black-and-white portrait of a bearded wood carver holding his tools and a figure
14
14
  width: 2400
15
15
  height: 3600
16
- - src: https://images.unsplash.com/photo-1522529599102-193c0d76b5b6?w=2400&q=80
17
- alt: A smiling man in a grey t-shirt outdoors
16
+ focal:
17
+ - 0.5
18
+ - 0.3
19
+ - src: https://images.unsplash.com/photo-1713652425093-47778c267769?w=2400&q=80
20
+ alt: An older craftsman with his arms crossed in a cluttered workshop
18
21
  width: 2400
19
- height: 1600
20
- - src: https://images.unsplash.com/photo-1639747280804-dd2d6b3d88ac?w=2400&q=80
21
- alt: A smiling man in a green shirt standing outdoors
22
+ height: 2062
23
+ - src: https://images.unsplash.com/photo-1631396327810-0299385c06bf?w=2400&q=80
24
+ alt: A black-and-white photo of a woodworker shaping a block at his bench
22
25
  width: 2400
23
26
  height: 3600
24
27
  ---
@@ -0,0 +1,34 @@
1
+ ---
2
+ status: published
3
+ title: First Light
4
+ date: 2025-05-01
5
+ year: 2025
6
+ client: Editorial, Field & Atlas magazine
7
+ role: Photography
8
+ excerpt: The bakers and shopkeepers of one Brooklyn street, photographed between four and seven in the morning.
9
+ image: https://images.unsplash.com/photo-1496811425508-6d7ebb7ff32c?w=1600&q=80
10
+ imageAlt: First Light, cover photograph
11
+ gallery:
12
+ - src: https://images.unsplash.com/photo-1772758632331-56fcdb6fd45b?w=2400&q=80
13
+ alt: A smiling baker in a hairnet sliding bread from a brick oven
14
+ width: 2400
15
+ height: 1600
16
+ focal:
17
+ - 0.3
18
+ - 0.35
19
+ - src: https://images.unsplash.com/photo-1783768204400-7e6f402f3738?w=2400&q=80
20
+ alt: A black-and-white photo of a woman kneading dough at a kitchen table
21
+ width: 2400
22
+ height: 3600
23
+ - src: https://images.unsplash.com/photo-1748640858029-53c840ef5a1b?w=2400&q=80
24
+ alt: A shopkeeper resting his chin on his hand behind a counter of flatbreads
25
+ width: 2400
26
+ height: 3600
27
+ focal:
28
+ - 0.55
29
+ - 0.55
30
+ ---
31
+
32
+ The bakers and shopkeepers of one Brooklyn street, photographed between four and seven in the morning.
33
+
34
+ Photographed by Mara Quill. Prints from this project are available on request.
@@ -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_2rv4hb1aae",
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_qp79g004am",
4
4
  "title": "Contact",
5
5
  "slug": "contact",