@dxos/plugin-space 0.8.4-main.3f58842 → 0.8.4-main.5ea62a8

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 (205) hide show
  1. package/dist/lib/browser/{ObjectDetailsPanel-YPTDQKMG.mjs → ObjectDetailsPanel-SY6FYTYC.mjs} +2 -2
  2. package/dist/lib/browser/{ObjectDetailsPanel-YPTDQKMG.mjs.map → ObjectDetailsPanel-SY6FYTYC.mjs.map} +3 -3
  3. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +68 -0
  4. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +7 -0
  5. package/dist/lib/browser/{app-graph-builder-7CZZJS3S.mjs → app-graph-builder-FLF7XMQO.mjs} +49 -12
  6. package/dist/lib/browser/app-graph-builder-FLF7XMQO.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-3A6KBYWT.mjs} +4 -4
  8. package/dist/lib/browser/{chunk-JS3MMC42.mjs → chunk-CBYL62HG.mjs} +2 -2
  9. package/dist/lib/{node-esm/chunk-5HHYE264.mjs.map → browser/chunk-CBYL62HG.mjs.map} +3 -3
  10. package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-DCY3W36E.mjs} +62 -11
  11. package/dist/lib/browser/{chunk-XUYKJUU7.mjs.map → chunk-DCY3W36E.mjs.map} +3 -3
  12. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-ELJDGQTO.mjs} +3 -3
  13. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs.map → chunk-ELJDGQTO.mjs.map} +3 -3
  14. package/dist/lib/browser/{chunk-V7MJSSBQ.mjs → chunk-J6YZG77T.mjs} +79 -78
  15. package/dist/lib/browser/chunk-J6YZG77T.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-SGTQ52SU.mjs → chunk-RQVV4XVF.mjs} +6 -1
  17. package/dist/lib/{node-esm/chunk-JH6F4C3I.mjs.map → browser/chunk-RQVV4XVF.mjs.map} +3 -3
  18. package/dist/lib/browser/{chunk-CEFHNVU7.mjs → chunk-TUQZO5P4.mjs} +1 -1
  19. package/dist/lib/browser/{chunk-CEFHNVU7.mjs.map → chunk-TUQZO5P4.mjs.map} +2 -2
  20. package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-WAXS2ZVX.mjs} +5 -5
  21. package/dist/lib/browser/{chunk-QACNNDOT.mjs.map → chunk-WAXS2ZVX.mjs.map} +1 -1
  22. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-T6ZNVE7S.mjs} +2 -2
  23. package/dist/lib/browser/{identity-created-23XJJV2N.mjs.map → identity-created-T6ZNVE7S.mjs.map} +3 -3
  24. package/dist/lib/browser/index.mjs +12 -16
  25. package/dist/lib/browser/index.mjs.map +3 -3
  26. package/dist/lib/browser/{intent-resolver-TIXVDYN7.mjs → intent-resolver-7E3IZIJS.mjs} +25 -17
  27. package/dist/lib/browser/intent-resolver-7E3IZIJS.mjs.map +7 -0
  28. package/dist/lib/browser/meta.json +1 -1
  29. package/dist/lib/browser/{react-root-N2J7TDRX.mjs → react-root-RWMT2RCK.mjs} +6 -6
  30. package/dist/lib/browser/{react-root-N2J7TDRX.mjs.map → react-root-RWMT2RCK.mjs.map} +2 -2
  31. package/dist/lib/browser/{react-surface-TPNLWJJH.mjs → react-surface-GL4CE2F4.mjs} +25 -14
  32. package/dist/lib/browser/react-surface-GL4CE2F4.mjs.map +7 -0
  33. package/dist/lib/browser/{schema-defs-Z6FC4AHC.mjs → schema-defs-YDPFZELA.mjs} +2 -2
  34. package/dist/lib/browser/schema-defs-YDPFZELA.mjs.map +7 -0
  35. package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-B6MMHLPS.mjs} +2 -2
  36. package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-QVABOCO3.mjs} +14 -12
  37. package/dist/lib/browser/spaces-ready-QVABOCO3.mjs.map +7 -0
  38. package/dist/lib/browser/{state-QYZAB45H.mjs → state-2RGW7FQG.mjs} +2 -2
  39. package/dist/lib/{node-esm/state-ZVEHQ4BJ.mjs.map → browser/state-2RGW7FQG.mjs.map} +2 -2
  40. package/dist/lib/browser/types/index.mjs +1 -1
  41. package/dist/lib/node-esm/{ObjectDetailsPanel-QKZEDSZK.mjs → ObjectDetailsPanel-3MYLTMXN.mjs} +2 -2
  42. package/dist/lib/node-esm/{ObjectDetailsPanel-QKZEDSZK.mjs.map → ObjectDetailsPanel-3MYLTMXN.mjs.map} +3 -3
  43. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +70 -0
  44. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +7 -0
  45. package/dist/lib/node-esm/{app-graph-builder-KGIGWC72.mjs → app-graph-builder-D5YPOJS5.mjs} +49 -12
  46. package/dist/lib/node-esm/app-graph-builder-D5YPOJS5.mjs.map +7 -0
  47. package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-M45TH5LR.mjs} +4 -4
  48. package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-AUQ3SKL2.mjs} +62 -11
  49. package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs.map → chunk-AUQ3SKL2.mjs.map} +3 -3
  50. package/dist/lib/node-esm/{chunk-5HHYE264.mjs → chunk-FJZNSJC4.mjs} +2 -2
  51. package/dist/lib/{browser/chunk-JS3MMC42.mjs.map → node-esm/chunk-FJZNSJC4.mjs.map} +3 -3
  52. package/dist/lib/node-esm/{chunk-5T3ZH23B.mjs → chunk-HC677WUJ.mjs} +1 -1
  53. package/dist/lib/node-esm/{chunk-5T3ZH23B.mjs.map → chunk-HC677WUJ.mjs.map} +2 -2
  54. package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-HYIZVPOA.mjs} +5 -5
  55. package/dist/lib/node-esm/{chunk-P442DOQ3.mjs.map → chunk-HYIZVPOA.mjs.map} +1 -1
  56. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-Q6AAQLQG.mjs} +3 -3
  57. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs.map → chunk-Q6AAQLQG.mjs.map} +3 -3
  58. package/dist/lib/node-esm/{chunk-JH6F4C3I.mjs → chunk-WKQTO37U.mjs} +6 -1
  59. package/dist/lib/node-esm/chunk-WKQTO37U.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-6X5DLJM5.mjs → chunk-ZCEH2VYE.mjs} +79 -78
  61. package/dist/lib/node-esm/chunk-ZCEH2VYE.mjs.map +7 -0
  62. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-AL7NNCKH.mjs} +2 -2
  63. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs.map → identity-created-AL7NNCKH.mjs.map} +3 -3
  64. package/dist/lib/node-esm/index.mjs +12 -16
  65. package/dist/lib/node-esm/index.mjs.map +3 -3
  66. package/dist/lib/node-esm/{intent-resolver-MHGHRGDT.mjs → intent-resolver-UVO4MKWX.mjs} +25 -17
  67. package/dist/lib/node-esm/intent-resolver-UVO4MKWX.mjs.map +7 -0
  68. package/dist/lib/node-esm/meta.json +1 -1
  69. package/dist/lib/node-esm/{react-root-KW3TGJGY.mjs → react-root-5EKYI66P.mjs} +6 -6
  70. package/dist/lib/node-esm/{react-root-KW3TGJGY.mjs.map → react-root-5EKYI66P.mjs.map} +2 -2
  71. package/dist/lib/node-esm/{react-surface-UUIUUD6P.mjs → react-surface-IOC6YSVQ.mjs} +25 -14
  72. package/dist/lib/node-esm/react-surface-IOC6YSVQ.mjs.map +7 -0
  73. package/dist/lib/node-esm/{schema-defs-WHJM7UZE.mjs → schema-defs-OYBCWKAS.mjs} +2 -2
  74. package/dist/lib/node-esm/schema-defs-OYBCWKAS.mjs.map +7 -0
  75. package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-IOFU6EAS.mjs} +2 -2
  76. package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-MS6GHPFR.mjs} +14 -12
  77. package/dist/lib/node-esm/spaces-ready-MS6GHPFR.mjs.map +7 -0
  78. package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-7VBVBGNS.mjs} +2 -2
  79. package/dist/lib/node-esm/state-7VBVBGNS.mjs.map +7 -0
  80. package/dist/lib/node-esm/types/index.mjs +1 -1
  81. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  82. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  83. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  85. package/dist/types/src/capabilities/capabilities.d.ts +1 -1
  86. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  88. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/index.d.ts +11 -12
  90. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  92. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  94. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  96. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
  98. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/settings.d.ts +1 -1
  100. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  101. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/state.d.ts +1 -1
  103. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  104. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -2
  105. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  106. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1584 -3
  107. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  108. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
  109. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  110. package/dist/types/src/components/MembersContainer.d.ts +3 -2
  111. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  112. package/dist/types/src/components/MembersContainer.stories.d.ts +1584 -4
  113. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  114. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  115. package/dist/types/src/components/PopoverRenameObject.d.ts +1 -1
  116. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  117. package/dist/types/src/components/RecordMain.d.ts +7 -0
  118. package/dist/types/src/components/RecordMain.d.ts.map +1 -0
  119. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  120. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  121. package/dist/types/src/components/SpacePresence.stories.d.ts +1411 -2
  122. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  123. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  124. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1417 -3
  125. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  126. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  127. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1418 -4
  128. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/index.d.ts +8 -2
  130. package/dist/types/src/components/index.d.ts.map +1 -1
  131. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  132. package/dist/types/src/translations.d.ts +4 -4
  133. package/dist/types/src/types/types.d.ts +33 -34
  134. package/dist/types/src/types/types.d.ts.map +1 -1
  135. package/dist/types/src/util.d.ts +6 -4
  136. package/dist/types/src/util.d.ts.map +1 -1
  137. package/dist/types/tsconfig.tsbuildinfo +1 -1
  138. package/package.json +51 -49
  139. package/src/SpacePlugin.ts +3 -9
  140. package/src/capabilities/app-graph-builder.ts +76 -24
  141. package/src/capabilities/capabilities.ts +3 -2
  142. package/src/capabilities/identity-created.ts +1 -1
  143. package/src/capabilities/index.ts +0 -1
  144. package/src/capabilities/intent-resolver.ts +16 -7
  145. package/src/capabilities/react-root.tsx +2 -1
  146. package/src/capabilities/react-surface.tsx +26 -12
  147. package/src/capabilities/schema-defs.ts +3 -2
  148. package/src/capabilities/spaces-ready.ts +10 -7
  149. package/src/capabilities/state.ts +3 -2
  150. package/src/components/AwaitingObject.tsx +1 -1
  151. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +6 -5
  152. package/src/components/CreateDialog/CreateObjectDialog.tsx +14 -6
  153. package/src/components/CreateDialog/CreateObjectPanel.tsx +18 -7
  154. package/src/components/CreateDialog/CreateSpaceDialog.tsx +1 -1
  155. package/src/components/JoinDialog.tsx +1 -1
  156. package/src/components/MembersContainer.stories.tsx +33 -8
  157. package/src/components/MembersContainer.tsx +7 -8
  158. package/src/components/ObjectDetailsPanel.tsx +1 -1
  159. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +2 -1
  160. package/src/components/PopoverRenameObject.tsx +6 -12
  161. package/src/components/PopoverRenameSpace.tsx +1 -1
  162. package/src/components/RecordMain.tsx +43 -0
  163. package/src/components/SchemaContainer.tsx +2 -2
  164. package/src/components/SpacePluginSettings.tsx +6 -7
  165. package/src/components/SpacePresence.stories.tsx +7 -4
  166. package/src/components/SpacePresence.tsx +7 -7
  167. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +8 -5
  168. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +8 -8
  169. package/src/components/SyncStatus/SyncStatus.stories.tsx +5 -4
  170. package/src/components/SyncStatus/SyncStatus.tsx +3 -2
  171. package/src/components/index.ts +1 -0
  172. package/src/events.ts +1 -1
  173. package/src/hooks/useActiveSpace.ts +2 -2
  174. package/src/hooks/useInputSurfaceLookup.tsx +1 -1
  175. package/src/translations.ts +4 -4
  176. package/src/types/types.ts +6 -1
  177. package/src/util.tsx +56 -6
  178. package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs.map +0 -7
  179. package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
  180. package/dist/lib/browser/chunk-V7MJSSBQ.mjs.map +0 -7
  181. package/dist/lib/browser/intent-resolver-TIXVDYN7.mjs.map +0 -7
  182. package/dist/lib/browser/react-surface-TPNLWJJH.mjs.map +0 -7
  183. package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs.map +0 -7
  184. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  185. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  186. package/dist/lib/browser/spaces-ready-TOPG6IV4.mjs.map +0 -7
  187. package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
  188. package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs.map +0 -7
  189. package/dist/lib/node-esm/chunk-6X5DLJM5.mjs.map +0 -7
  190. package/dist/lib/node-esm/intent-resolver-MHGHRGDT.mjs.map +0 -7
  191. package/dist/lib/node-esm/react-surface-UUIUUD6P.mjs.map +0 -7
  192. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
  193. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  194. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  195. package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
  196. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  197. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  198. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  199. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  200. package/src/capabilities/schema-tool.test.ts +0 -44
  201. package/src/capabilities/schema-tools.ts +0 -125
  202. /package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs.map → app-graph-serializer-3A6KBYWT.mjs.map} +0 -0
  203. /package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-B6MMHLPS.mjs.map} +0 -0
  204. /package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs.map → app-graph-serializer-M45TH5LR.mjs.map} +0 -0
  205. /package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-IOFU6EAS.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-space",
3
- "version": "0.8.4-main.3f58842",
3
+ "version": "0.8.4-main.5ea62a8",
4
4
  "description": "DXOS Surface plugin for DXOS ECHO Spaces",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -10,11 +10,13 @@
10
10
  "type": "module",
11
11
  "exports": {
12
12
  ".": {
13
+ "source": "./src/index.ts",
13
14
  "types": "./dist/types/src/index.d.ts",
14
15
  "browser": "./dist/lib/browser/index.mjs",
15
16
  "node": "./dist/lib/node-esm/index.mjs"
16
17
  },
17
18
  "./types": {
19
+ "source": "./src/types/index.ts",
18
20
  "types": "./dist/types/src/types/index.d.ts",
19
21
  "browser": "./dist/lib/browser/types/index.mjs",
20
22
  "node": "./dist/lib/node-esm/types/index.mjs"
@@ -33,67 +35,67 @@
33
35
  "src"
34
36
  ],
35
37
  "dependencies": {
36
- "@automerge/automerge": "3.0.0",
38
+ "@automerge/automerge": "3.1.1",
37
39
  "@preact-signals/safe-react": "^0.9.0",
38
40
  "@preact/signals-core": "^1.9.0",
39
- "effect": "3.17.0",
41
+ "effect": "3.17.7",
40
42
  "jszip": "^3.10.1",
41
43
  "localforage": "^1.10.0",
42
44
  "react-drag-drop-files": "^2.3.8",
43
45
  "react-is": "~18.2.0",
44
46
  "react-qr-rounded": "^1.0.0",
45
- "@dxos/ai": "0.8.4-main.3f58842",
46
- "@dxos/async": "0.8.4-main.3f58842",
47
- "@dxos/app-framework": "0.8.4-main.3f58842",
48
- "@dxos/blueprints": "0.8.4-main.3f58842",
49
- "@dxos/client": "0.8.4-main.3f58842",
50
- "@dxos/context": "0.8.4-main.3f58842",
51
- "@dxos/display-name": "0.8.4-main.3f58842",
52
- "@dxos/echo": "0.8.4-main.3f58842",
53
- "@dxos/echo-schema": "0.8.4-main.3f58842",
54
- "@dxos/echo-signals": "0.8.4-main.3f58842",
55
- "@dxos/invariant": "0.8.4-main.3f58842",
56
- "@dxos/effect": "0.8.4-main.3f58842",
57
- "@dxos/keys": "0.8.4-main.3f58842",
58
- "@dxos/live-object": "0.8.4-main.3f58842",
59
- "@dxos/local-storage": "0.8.4-main.3f58842",
60
- "@dxos/log": "0.8.4-main.3f58842",
61
- "@dxos/migrations": "0.8.4-main.3f58842",
62
- "@dxos/plugin-attention": "0.8.4-main.3f58842",
63
- "@dxos/plugin-client": "0.8.4-main.3f58842",
64
- "@dxos/plugin-deck": "0.8.4-main.3f58842",
65
- "@dxos/plugin-observability": "0.8.4-main.3f58842",
66
- "@dxos/plugin-status-bar": "0.8.4-main.3f58842",
67
- "@dxos/plugin-graph": "0.8.4-main.3f58842",
68
- "@dxos/protocols": "0.8.4-main.3f58842",
69
- "@dxos/react-client": "0.8.4-main.3f58842",
70
- "@dxos/react-ui-attention": "0.8.4-main.3f58842",
71
- "@dxos/react-ui-editor": "0.8.4-main.3f58842",
72
- "@dxos/react-ui-form": "0.8.4-main.3f58842",
73
- "@dxos/react-ui-list": "0.8.4-main.3f58842",
74
- "@dxos/react-ui-pickers": "0.8.4-main.3f58842",
75
- "@dxos/react-ui-searchlist": "0.8.4-main.3f58842",
76
- "@dxos/react-ui-stack": "0.8.4-main.3f58842",
77
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.3f58842",
78
- "@dxos/react-ui-tabs": "0.8.4-main.3f58842",
79
- "@dxos/react-ui-theme": "0.8.4-main.3f58842",
80
- "@dxos/schema": "0.8.4-main.3f58842",
81
- "@dxos/shell": "0.8.4-main.3f58842",
82
- "@dxos/util": "0.8.4-main.3f58842"
47
+ "@dxos/ai": "0.8.4-main.5ea62a8",
48
+ "@dxos/app-framework": "0.8.4-main.5ea62a8",
49
+ "@dxos/async": "0.8.4-main.5ea62a8",
50
+ "@dxos/blueprints": "0.8.4-main.5ea62a8",
51
+ "@dxos/context": "0.8.4-main.5ea62a8",
52
+ "@dxos/client": "0.8.4-main.5ea62a8",
53
+ "@dxos/echo": "0.8.4-main.5ea62a8",
54
+ "@dxos/echo-schema": "0.8.4-main.5ea62a8",
55
+ "@dxos/echo-signals": "0.8.4-main.5ea62a8",
56
+ "@dxos/effect": "0.8.4-main.5ea62a8",
57
+ "@dxos/invariant": "0.8.4-main.5ea62a8",
58
+ "@dxos/keys": "0.8.4-main.5ea62a8",
59
+ "@dxos/live-object": "0.8.4-main.5ea62a8",
60
+ "@dxos/display-name": "0.8.4-main.5ea62a8",
61
+ "@dxos/local-storage": "0.8.4-main.5ea62a8",
62
+ "@dxos/log": "0.8.4-main.5ea62a8",
63
+ "@dxos/migrations": "0.8.4-main.5ea62a8",
64
+ "@dxos/plugin-attention": "0.8.4-main.5ea62a8",
65
+ "@dxos/plugin-deck": "0.8.4-main.5ea62a8",
66
+ "@dxos/plugin-graph": "0.8.4-main.5ea62a8",
67
+ "@dxos/plugin-client": "0.8.4-main.5ea62a8",
68
+ "@dxos/protocols": "0.8.4-main.5ea62a8",
69
+ "@dxos/plugin-observability": "0.8.4-main.5ea62a8",
70
+ "@dxos/plugin-status-bar": "0.8.4-main.5ea62a8",
71
+ "@dxos/react-client": "0.8.4-main.5ea62a8",
72
+ "@dxos/react-ui-attention": "0.8.4-main.5ea62a8",
73
+ "@dxos/react-ui-editor": "0.8.4-main.5ea62a8",
74
+ "@dxos/react-ui-form": "0.8.4-main.5ea62a8",
75
+ "@dxos/react-ui-list": "0.8.4-main.5ea62a8",
76
+ "@dxos/react-ui-pickers": "0.8.4-main.5ea62a8",
77
+ "@dxos/react-ui-stack": "0.8.4-main.5ea62a8",
78
+ "@dxos/react-ui-searchlist": "0.8.4-main.5ea62a8",
79
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.5ea62a8",
80
+ "@dxos/react-ui-tabs": "0.8.4-main.5ea62a8",
81
+ "@dxos/react-ui-theme": "0.8.4-main.5ea62a8",
82
+ "@dxos/schema": "0.8.4-main.5ea62a8",
83
+ "@dxos/shell": "0.8.4-main.5ea62a8",
84
+ "@dxos/util": "0.8.4-main.5ea62a8"
83
85
  },
84
86
  "devDependencies": {
85
87
  "@babel/core": "^7.18.13",
86
88
  "@effect-rx/rx-react": "0.38.0",
87
- "@effect/platform": "0.89.0",
89
+ "@effect/platform": "0.90.2",
88
90
  "@types/react": "~18.2.0",
89
91
  "@types/react-dom": "~18.2.0",
90
92
  "react": "~18.2.0",
91
93
  "react-dom": "~18.2.0",
92
- "vite": "5.4.7",
93
- "@dxos/react-ui": "0.8.4-main.3f58842",
94
- "@dxos/random": "0.8.4-main.3f58842",
95
- "@dxos/react-ui-theme": "0.8.4-main.3f58842",
96
- "@dxos/storybook-utils": "0.8.4-main.3f58842"
94
+ "vite": "7.1.1",
95
+ "@dxos/random": "0.8.4-main.5ea62a8",
96
+ "@dxos/react-ui": "0.8.4-main.5ea62a8",
97
+ "@dxos/react-ui-theme": "0.8.4-main.5ea62a8",
98
+ "@dxos/storybook-utils": "0.8.4-main.5ea62a8"
97
99
  },
98
100
  "peerDependencies": {
99
101
  "@effect-rx/rx-react": "^0.34.1",
@@ -101,8 +103,8 @@
101
103
  "effect": "^3.13.3",
102
104
  "react": "~18.2.0",
103
105
  "react-dom": "~18.2.0",
104
- "@dxos/react-ui": "0.8.4-main.3f58842",
105
- "@dxos/react-ui-theme": "0.8.4-main.3f58842"
106
+ "@dxos/react-ui": "0.8.4-main.5ea62a8",
107
+ "@dxos/react-ui-theme": "0.8.4-main.5ea62a8"
106
108
  },
107
109
  "publishConfig": {
108
110
  "access": "public"
@@ -17,7 +17,7 @@ import {
17
17
  import { Ref, Type } from '@dxos/echo';
18
18
  import { AttentionEvents } from '@dxos/plugin-attention';
19
19
  import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
20
- import { createDefaultSchema, DataType, ViewTypeV1, ViewTypeV1ToV2, ViewTypeV2 } from '@dxos/schema';
20
+ import { DataType, ViewTypeV1, ViewTypeV1ToV2, ViewTypeV2, createDefaultSchema } from '@dxos/schema';
21
21
  import { translations as shellTranslations } from '@dxos/shell/react';
22
22
 
23
23
  import {
@@ -28,16 +28,15 @@ import {
28
28
  ReactRoot,
29
29
  ReactSurface,
30
30
  SchemaDefs,
31
- SchemaTools,
32
31
  SpaceCapabilities,
33
32
  SpaceSettings,
34
- SpacesReady,
35
33
  SpaceState,
34
+ SpacesReady,
36
35
  } from './capabilities';
37
36
  import { SpaceEvents } from './events';
38
37
  import { meta } from './meta';
39
38
  import { translations } from './translations';
40
- import { CollectionAction, defineObjectForm, SpaceAction } from './types';
39
+ import { CollectionAction, SpaceAction, defineObjectForm } from './types';
41
40
 
42
41
  export type SpacePluginOptions = {
43
42
  /**
@@ -268,10 +267,5 @@ export const SpacePlugin = ({
268
267
  ),
269
268
  activate: SpacesReady,
270
269
  }),
271
- defineModule({
272
- id: `${meta.id}/module/tools`,
273
- activatesOn: Events.SetupArtifactDefinition,
274
- activate: SchemaTools,
275
- }),
276
270
  ]);
277
271
  };
@@ -3,23 +3,24 @@
3
3
  //
4
4
 
5
5
  import { Rx } from '@effect-rx/rx-react';
6
- import { Array, Option, pipe, Schema } from 'effect';
6
+ import { Array, Option, Schema, pipe } from 'effect';
7
7
 
8
- import { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';
9
- import { getSpace, SpaceState, type Space, isSpace, type QueryResult } from '@dxos/client/echo';
8
+ import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
9
+ import { type QueryResult, type Space, SpaceState, getSpace, isSpace, parseId } from '@dxos/client/echo';
10
10
  import { Filter, Obj, Query, Type } from '@dxos/echo';
11
11
  import { log } from '@dxos/log';
12
12
  import { ClientCapabilities } from '@dxos/plugin-client';
13
- import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';
14
- import { createExtension, rxFromObservable, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';
13
+ import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
14
+ import { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from '@dxos/plugin-graph';
15
15
  import { DataType } from '@dxos/schema';
16
16
  import { isNonNullable } from '@dxos/util';
17
17
 
18
- import { SpaceCapabilities } from './capabilities';
19
18
  import { getActiveSpace } from '../hooks';
20
19
  import { SPACE_PLUGIN } from '../meta';
21
20
  import { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';
22
21
  import {
22
+ SHARED,
23
+ SPACES,
23
24
  constructObjectActions,
24
25
  constructSpaceActions,
25
26
  constructSpaceNode,
@@ -27,10 +28,10 @@ import {
27
28
  createStaticSchemaActions,
28
29
  createStaticSchemaNode,
29
30
  rxFromQuery,
30
- SHARED,
31
- SPACES,
32
31
  } from '../util';
33
32
 
33
+ import { SpaceCapabilities } from './capabilities';
34
+
34
35
  export default (context: PluginContext) => {
35
36
  // TODO(wittjosiah): Make reactive.
36
37
  const resolve = (typename: string) =>
@@ -458,21 +459,25 @@ export default (context: PluginContext) => {
458
459
  ),
459
460
  );
460
461
  }
461
- return get(rxFromQuery(query))
462
- .map((object) =>
463
- get(
464
- rxFromSignal(() =>
465
- createObjectNode({
466
- object,
467
- space,
468
- resolve,
469
- droppable: false, // Cannot rearrange query collections.
470
- navigable: state.navigableCollections,
471
- }),
462
+ return (
463
+ get(rxFromQuery(query))
464
+ // TODO(wittjosiah): This should be the default sort order.
465
+ .toSorted((a, b) => a.id.localeCompare(b.id))
466
+ .map((object) =>
467
+ get(
468
+ rxFromSignal(() =>
469
+ createObjectNode({
470
+ object,
471
+ space,
472
+ resolve,
473
+ droppable: false, // Cannot rearrange query collections.
474
+ navigable: state.navigableCollections,
475
+ }),
476
+ ),
472
477
  ),
473
- ),
474
- )
475
- .filter(isNonNullable);
478
+ )
479
+ .filter(isNonNullable)
480
+ );
476
481
  }),
477
482
  Option.getOrElse(() => []),
478
483
  ),
@@ -539,8 +544,18 @@ export default (context: PluginContext) => {
539
544
  );
540
545
  const deletable = filteredViews.length === 0;
541
546
 
547
+ const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
548
+ if (!dispatcher) {
549
+ return [];
550
+ }
551
+
542
552
  // TODO(wittjosiah): Remove cast.
543
- return createStaticSchemaActions({ schema: schema as Type.Obj.Any, space, deletable });
553
+ return createStaticSchemaActions({
554
+ schema: schema as Type.Obj.Any,
555
+ space,
556
+ dispatch: dispatcher.dispatchPromise,
557
+ deletable,
558
+ });
544
559
  }),
545
560
  Option.getOrElse(() => []),
546
561
  ),
@@ -592,6 +607,37 @@ export default (context: PluginContext) => {
592
607
  },
593
608
  }),
594
609
 
610
+ // Create record nodes.
611
+ createExtension({
612
+ id: `${SPACE_PLUGIN}/records`,
613
+ resolver: (id) => {
614
+ let query: QueryResult<Type.Expando> | undefined;
615
+ return Rx.make((get) => {
616
+ const client = context.getCapability(ClientCapabilities.Client);
617
+ const { spaceId, objectId } = parseId(id);
618
+ if (!spaceId || !objectId) {
619
+ return null;
620
+ }
621
+
622
+ const space = client.spaces.get(spaceId);
623
+ if (!space) {
624
+ return null;
625
+ }
626
+
627
+ if (!query) {
628
+ query = space.db.query(Filter.ids(objectId));
629
+ }
630
+
631
+ const object = get(rxFromQuery(query)).at(0);
632
+ if (!object) {
633
+ return null;
634
+ }
635
+
636
+ return createObjectNode({ object, space, resolve, disposition: 'hidden' });
637
+ });
638
+ },
639
+ }),
640
+
595
641
  // Create collection actions and action groups.
596
642
  createExtension({
597
643
  id: `${SPACE_PLUGIN}/object-actions`,
@@ -611,7 +657,13 @@ export default (context: PluginContext) => {
611
657
  query = space.db.query(Filter.type(DataType.View));
612
658
  }
613
659
 
614
- let deletable = !isSchema;
660
+ let deletable =
661
+ !isSchema &&
662
+ // Don't allow the Records smart collection to be deleted.
663
+ !(
664
+ Obj.instanceOf(DataType.QueryCollection, object) &&
665
+ object.query.typename === DataType.StoredSchema.typename
666
+ );
615
667
  if (isSchema && query) {
616
668
  const views = get(rxFromQuery(query));
617
669
  const filteredViews = get(
@@ -4,10 +4,10 @@
4
4
 
5
5
  import { type Schema } from 'effect';
6
6
 
7
- import { type AnyIntentChain, defineCapability, type Label } from '@dxos/app-framework';
7
+ import { type AnyIntentChain, type Label, defineCapability } from '@dxos/app-framework';
8
8
  import { type Space } from '@dxos/react-client/echo';
9
9
  import { type DataType } from '@dxos/schema';
10
- import { type Position, type DeepReadonly } from '@dxos/util';
10
+ import { type DeepReadonly, type Position } from '@dxos/util';
11
11
 
12
12
  import { SPACE_PLUGIN } from '../meta';
13
13
  import { type ObjectForm, type PluginState } from '../types';
@@ -25,5 +25,6 @@ export namespace SpaceCapabilities {
25
25
  export type OnSchemaAdded = (params: { space: Space; schema: Schema.Schema.AnyNoContext }) => AnyIntentChain;
26
26
  export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${SPACE_PLUGIN}/capability/on-schema-added`);
27
27
 
28
+ // TODO(burdon): Should this be view? Forms are UI concepts? (associated with a View/schema).
28
29
  export const ObjectForm = defineCapability<ObjectForm<any>>(`${SPACE_PLUGIN}/capability/object-form`);
29
30
  }
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, type PluginContext, Capabilities } from '@dxos/app-framework';
5
+ import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
6
6
  import { Obj, Ref } from '@dxos/echo';
7
7
  import { Migrations } from '@dxos/migrations';
8
8
  import { ClientCapabilities } from '@dxos/plugin-client';
@@ -11,7 +11,6 @@ export const IntentResolver = lazy(() => import('./intent-resolver'));
11
11
  export const ReactRoot = lazy(() => import('./react-root'));
12
12
  export const ReactSurface = lazy(() => import('./react-surface'));
13
13
  export const SchemaDefs = lazy(() => import('./schema-defs'));
14
- export const SchemaTools = lazy(() => import('./schema-tools'));
15
14
  export const SpaceSettings = lazy(() => import('./settings'));
16
15
  export const SpaceState = lazy(() => import('./state'));
17
16
  export const SpacesReady = lazy(() => import('./spaces-ready'));
@@ -18,25 +18,26 @@ import { Migrations } from '@dxos/migrations';
18
18
  import { ClientCapabilities } from '@dxos/plugin-client';
19
19
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
20
20
  import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
21
- import { isSpace, getSpace, SpaceState, fullyQualifiedId } from '@dxos/react-client/echo';
21
+ import { SpaceState, fullyQualifiedId, getSpace, isSpace } from '@dxos/react-client/echo';
22
22
  import { Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
23
23
  import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
24
24
  import { DataType, ProjectionModel } from '@dxos/schema';
25
25
 
26
- import { SpaceCapabilities } from './capabilities';
27
26
  import {
28
27
  CREATE_OBJECT_DIALOG,
29
28
  CREATE_SPACE_DIALOG,
29
+ type CreateObjectDialogProps,
30
30
  JOIN_DIALOG,
31
+ type JoinDialogProps,
31
32
  POPOVER_RENAME_OBJECT,
32
33
  POPOVER_RENAME_SPACE,
33
- type CreateObjectDialogProps,
34
- type JoinDialogProps,
35
34
  } from '../components';
36
35
  import { SpaceEvents } from '../events';
37
36
  import { SPACE_PLUGIN } from '../meta';
38
37
  import { CollectionAction, SpaceAction } from '../types';
39
- import { cloneObject, COMPOSER_SPACE_LOCK, getNestedObjects } from '../util';
38
+ import { COMPOSER_SPACE_LOCK, cloneObject, getNestedObjects } from '../util';
39
+
40
+ import { SpaceCapabilities } from './capabilities';
40
41
 
41
42
  // TODO(wittjosiah): Remove.
42
43
  const SPACE_MAX_OBJECTS = 500;
@@ -360,11 +361,17 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
360
361
  }),
361
362
  createResolver({
362
363
  intent: SpaceAction.AddSchema,
363
- resolve: async ({ space, name, schema: schemaInput }) => {
364
+ resolve: async ({ space, name, typename, version, schema: schemaInput }) => {
364
365
  const [schema] = await space.db.schemaRegistry.register([schemaInput]);
365
366
  if (name) {
366
367
  schema.storedSchema.name = name;
367
368
  }
369
+ if (typename) {
370
+ schema.storedSchema.typename = typename;
371
+ }
372
+ if (version) {
373
+ schema.storedSchema.version = version;
374
+ }
368
375
 
369
376
  await context.activatePromise(SpaceEvents.SchemaAdded);
370
377
  const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
@@ -419,7 +426,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
419
426
  }),
420
427
  createResolver({
421
428
  intent: SpaceAction.OpenCreateObject,
422
- resolve: ({ target, typename, navigable = true, onCreateObject }) => {
429
+ resolve: ({ target, views, typename, initialFormValues, navigable = true, onCreateObject }) => {
423
430
  const state = context.getCapability(SpaceCapabilities.State);
424
431
 
425
432
  return {
@@ -431,7 +438,9 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
431
438
  blockAlign: 'start',
432
439
  props: {
433
440
  target,
441
+ views,
434
442
  typename,
443
+ initialFormValues,
435
444
  onCreateObject,
436
445
  shouldNavigate: navigable
437
446
  ? (object: Obj.Any) => {
@@ -6,10 +6,11 @@ import React from 'react';
6
6
 
7
7
  import { Capabilities, contributes, useCapability } from '@dxos/app-framework';
8
8
 
9
- import { SpaceCapabilities } from './capabilities';
10
9
  import { AwaitingObject } from '../components';
11
10
  import { SPACE_PLUGIN } from '../meta';
12
11
 
12
+ import { SpaceCapabilities } from './capabilities';
13
+
13
14
  export default () =>
14
15
  contributes(Capabilities.ReactRoot, {
15
16
  id: SPACE_PLUGIN,
@@ -7,9 +7,9 @@ import React, { useCallback, useMemo } from 'react';
7
7
 
8
8
  import {
9
9
  Capabilities,
10
+ Surface,
10
11
  contributes,
11
12
  createSurface,
12
- Surface,
13
13
  useCapabilities,
14
14
  useCapability,
15
15
  useLayout,
@@ -20,14 +20,14 @@ import { SettingsStore } from '@dxos/local-storage';
20
20
  import { ClientCapabilities } from '@dxos/plugin-client';
21
21
  import { useClient } from '@dxos/react-client';
22
22
  import {
23
+ type Space,
24
+ SpaceState,
23
25
  fullyQualifiedId,
24
26
  getSpace,
25
27
  isLiveObject,
26
28
  isSpace,
27
29
  parseId,
28
- SpaceState,
29
30
  useSpace,
30
- type Space,
31
31
  } from '@dxos/react-client/echo';
32
32
  import { Input, useTranslation } from '@dxos/react-ui';
33
33
  import { type InputProps, SelectInput } from '@dxos/react-ui-form';
@@ -35,13 +35,13 @@ import { HuePicker, IconPicker } from '@dxos/react-ui-pickers';
35
35
  import { DataType, type TypenameAnnotation, TypenameAnnotationId } from '@dxos/schema';
36
36
  import { type JoinPanelProps } from '@dxos/shell/react';
37
37
 
38
- import { SpaceCapabilities } from './capabilities';
39
38
  import {
40
- CollectionMain,
41
- CollectionSection,
42
39
  CREATE_OBJECT_DIALOG,
43
40
  CREATE_SPACE_DIALOG,
41
+ CollectionMain,
42
+ CollectionSection,
44
43
  CreateObjectDialog,
44
+ type CreateObjectDialogProps,
45
45
  CreateSpaceDialog,
46
46
  InlineSyncStatus,
47
47
  JOIN_DIALOG,
@@ -54,6 +54,7 @@ import {
54
54
  POPOVER_RENAME_SPACE,
55
55
  PopoverRenameObject,
56
56
  PopoverRenameSpace,
57
+ RecordMain,
57
58
  SchemaContainer,
58
59
  SmallPresenceLive,
59
60
  SpacePluginSettings,
@@ -61,11 +62,12 @@ import {
61
62
  SpaceSettingsContainer,
62
63
  SyncStatus,
63
64
  ViewEditor,
64
- type CreateObjectDialogProps,
65
65
  } from '../components';
66
66
  import { SPACE_PLUGIN } from '../meta';
67
67
  import { HueAnnotationId, IconAnnotationId, type SpaceSettingsProps } from '../types';
68
68
 
69
+ import { SpaceCapabilities } from './capabilities';
70
+
69
71
  type ReactSurfaceOptions = {
70
72
  createInvitationUrl: (invitationCode: string) => string;
71
73
  };
@@ -91,6 +93,13 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
91
93
  />
92
94
  ),
93
95
  }),
96
+ createSurface({
97
+ id: `${SPACE_PLUGIN}/record-article`,
98
+ role: 'article',
99
+ position: 'fallback',
100
+ filter: (data): data is { subject: Obj.Any } => Obj.isObject(data.subject),
101
+ component: ({ data }) => <RecordMain record={data.subject} />,
102
+ }),
94
103
  createSurface({
95
104
  id: `${SPACE_PLUGIN}/collection-fallback`,
96
105
  role: 'article',
@@ -196,13 +205,13 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
196
205
  return !!annotation;
197
206
  },
198
207
  component: ({ data: _, ...inputProps }) => {
199
- const { label, disabled, type, getValue, onValueChange } = inputProps as any as InputProps;
208
+ const { label, readonly, type, getValue, onValueChange } = inputProps as any as InputProps;
200
209
  const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange]);
201
210
  const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);
202
211
  return (
203
212
  <Input.Root>
204
213
  <Input.Label>{label}</Input.Label>
205
- <HuePicker disabled={disabled} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />
214
+ <HuePicker disabled={!!readonly} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />
206
215
  </Input.Root>
207
216
  );
208
217
  },
@@ -215,13 +224,13 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
215
224
  return !!annotation;
216
225
  },
217
226
  component: ({ data: _, ...inputProps }) => {
218
- const { label, disabled, type, getValue, onValueChange } = inputProps as any as InputProps;
227
+ const { label, readonly, type, getValue, onValueChange } = inputProps as any as InputProps;
219
228
  const handleChange = useCallback((nextIcon: string) => onValueChange(type, nextIcon), [onValueChange]);
220
229
  const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);
221
230
  return (
222
231
  <Input.Root>
223
232
  <Input.Label>{label}</Input.Label>
224
- <IconPicker disabled={disabled} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />
233
+ <IconPicker disabled={!!readonly} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />
225
234
  </Input.Root>
226
235
  );
227
236
  },
@@ -275,14 +284,19 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
275
284
  annotation.includes('unused-static') &&
276
285
  whitelistedTypenames.has(Type.getTypename(schema)) &&
277
286
  !space.properties.staticRecords?.includes(Type.getTypename(schema));
287
+ const usedStatic =
288
+ annotation.includes('used-static') &&
289
+ whitelistedTypenames.has(Type.getTypename(schema)) &&
290
+ space.properties.staticRecords?.includes(Type.getTypename(schema));
278
291
  const objectForm = annotation.includes('object-form') && objectFormTypenames.has(Type.getTypename(schema));
279
- return annotation.includes('static') || limitedStatic || unusedStatic || objectForm;
292
+ return annotation.includes('static') || limitedStatic || unusedStatic || usedStatic || objectForm;
280
293
  });
281
294
  const dynamic = space?.db.schemaRegistry.query().runSync();
282
295
  const typenames = Array.from(
283
296
  new Set<string>([
284
297
  ...(annotation.includes('limited-static') ||
285
298
  annotation.includes('unused-static') ||
299
+ annotation.includes('used-static') ||
286
300
  annotation.includes('static') ||
287
301
  annotation.includes('object-form')
288
302
  ? fixed.map((schema) => Type.getTypename(schema))
@@ -2,12 +2,13 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';
5
+ import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
6
6
  import { ClientCapabilities } from '@dxos/plugin-client';
7
7
 
8
- import { SpaceCapabilities } from './capabilities';
9
8
  import { type ObjectForm } from '../types';
10
9
 
10
+ import { SpaceCapabilities } from './capabilities';
11
+
11
12
  export default (context: PluginContext) => {
12
13
  const registry = context.getCapability(Capabilities.RxRegistry);
13
14
  const client = context.getCapability(ClientCapabilities.Client);
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { Option } from 'effect';
6
6
 
7
- import { contributes, createIntent, Capabilities, LayoutAction, type PluginContext } from '@dxos/app-framework';
7
+ import { Capabilities, LayoutAction, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
8
8
  import { SubscriptionList } from '@dxos/async';
9
9
  import { Filter, Obj, Type } from '@dxos/echo';
10
10
  import { scheduledEffect } from '@dxos/echo-signals/core';
@@ -14,13 +14,14 @@ import { ClientCapabilities } from '@dxos/plugin-client';
14
14
  import { DeckCapabilities } from '@dxos/plugin-deck';
15
15
  import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
16
16
  import { PublicKey } from '@dxos/react-client';
17
- import { FQ_ID_LENGTH, parseFullyQualifiedId, SpaceState } from '@dxos/react-client/echo';
17
+ import { FQ_ID_LENGTH, SpaceState, parseFullyQualifiedId } from '@dxos/react-client/echo';
18
18
  import { ComplexMap, reduceGroupBy } from '@dxos/util';
19
19
 
20
- import { SpaceCapabilities } from './capabilities';
21
20
  import { SpaceAction } from '../types';
22
21
  import { COMPOSER_SPACE_LOCK, SHARED } from '../util';
23
22
 
23
+ import { SpaceCapabilities } from './capabilities';
24
+
24
25
  const ACTIVE_NODE_BROADCAST_INTERVAL = 30_000;
25
26
  const WAIT_FOR_OBJECT_TIMEOUT = 5_000;
26
27
 
@@ -66,12 +67,14 @@ export default async (context: PluginContext) => {
66
67
  return;
67
68
  }
68
69
 
69
- const node = graph.getNode(active[0]).pipe(Option.getOrNull);
70
- if (!node && active[0].length === FQ_ID_LENGTH) {
70
+ const id = active[0];
71
+ const node = graph.getNode(id).pipe(Option.getOrNull);
72
+ if (!node && id.length === FQ_ID_LENGTH) {
73
+ void graph.initialize(id);
71
74
  const timeout = setTimeout(async () => {
72
- const node = graph.getNode(active[0]).pipe(Option.getOrNull);
75
+ const node = graph.getNode(id).pipe(Option.getOrNull);
73
76
  if (!node) {
74
- await dispatch(createIntent(SpaceAction.WaitForObject, { id: active[0] }));
77
+ await dispatch(createIntent(SpaceAction.WaitForObject, { id }));
75
78
  }
76
79
  }, WAIT_FOR_OBJECT_TIMEOUT);
77
80