@dxos/plugin-client 0.8.3 → 0.8.4-main.28f8d3d

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 (153) hide show
  1. package/dist/lib/browser/{app-graph-builder-CBRN2DMK.mjs → app-graph-builder-ENKIVZWH.mjs} +6 -6
  2. package/dist/lib/browser/app-graph-builder-ENKIVZWH.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-PSSNS4C6.mjs → chunk-3F2Q2RKC.mjs} +3 -3
  4. package/dist/lib/browser/chunk-3F2Q2RKC.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-5MC5HCIM.mjs → chunk-56EADSTE.mjs} +27 -25
  6. package/dist/lib/browser/chunk-56EADSTE.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-UCVFWBKT.mjs → chunk-CAF2COXW.mjs} +3 -3
  8. package/dist/lib/browser/{chunk-MCEXD5XH.mjs → chunk-GS3LDHYD.mjs} +2 -2
  9. package/dist/lib/browser/{chunk-IA3AVM4I.mjs → chunk-HLWIF3AW.mjs} +14 -15
  10. package/dist/lib/browser/chunk-HLWIF3AW.mjs.map +7 -0
  11. package/dist/lib/browser/{client-NMS3MSFP.mjs → client-F73MIXMT.mjs} +13 -7
  12. package/dist/lib/browser/client-F73MIXMT.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +18 -18
  14. package/dist/lib/browser/index.mjs.map +3 -3
  15. package/dist/lib/browser/{intent-resolver-SLQZMO6I.mjs → intent-resolver-S3PUYK5Q.mjs} +16 -16
  16. package/dist/lib/browser/intent-resolver-S3PUYK5Q.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{migrations-QRQV6ZAM.mjs → migrations-YJSO7JXY.mjs} +4 -4
  19. package/dist/lib/{node-esm/migrations-AK43ZE6G.mjs.map → browser/migrations-YJSO7JXY.mjs.map} +2 -2
  20. package/dist/lib/browser/{react-context-IE2O2OYK.mjs → react-context-QBXCHNH2.mjs} +4 -4
  21. package/dist/lib/browser/{react-context-IE2O2OYK.mjs.map → react-context-QBXCHNH2.mjs.map} +2 -2
  22. package/dist/lib/browser/{react-surface-QFC2G27R.mjs → react-surface-YON76BFE.mjs} +6 -6
  23. package/dist/lib/browser/{react-surface-QFC2G27R.mjs.map → react-surface-YON76BFE.mjs.map} +3 -3
  24. package/dist/lib/browser/{schema-defs-DNRDVQQJ.mjs → schema-defs-AMSX6T3B.mjs} +4 -4
  25. package/dist/lib/browser/schema-defs-AMSX6T3B.mjs.map +7 -0
  26. package/dist/lib/browser/types/index.mjs +10 -0
  27. package/dist/lib/node-esm/{app-graph-builder-OZEAAKNT.mjs → app-graph-builder-D4XJCLPN.mjs} +6 -6
  28. package/dist/lib/node-esm/app-graph-builder-D4XJCLPN.mjs.map +7 -0
  29. package/dist/lib/node-esm/{chunk-37E3EI46.mjs → chunk-IOGTQFLM.mjs} +3 -3
  30. package/dist/lib/node-esm/chunk-IOGTQFLM.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-WHKQMAO5.mjs → chunk-J6I6JZPI.mjs} +27 -25
  32. package/dist/lib/node-esm/chunk-J6I6JZPI.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-STGGUFV2.mjs → chunk-JG6AFSFU.mjs} +14 -15
  34. package/dist/lib/node-esm/chunk-JG6AFSFU.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-HM7VB4ZV.mjs → chunk-SZLX4BVJ.mjs} +2 -2
  36. package/dist/lib/node-esm/{chunk-FJYSQRBO.mjs → chunk-UMO3ETDV.mjs} +3 -3
  37. package/dist/lib/node-esm/{client-EBFQZRSF.mjs → client-A7CNP37P.mjs} +13 -7
  38. package/dist/lib/node-esm/client-A7CNP37P.mjs.map +7 -0
  39. package/dist/lib/node-esm/index.mjs +18 -18
  40. package/dist/lib/node-esm/index.mjs.map +3 -3
  41. package/dist/lib/node-esm/{intent-resolver-MV55C5ED.mjs → intent-resolver-EBJABYM3.mjs} +16 -16
  42. package/dist/lib/node-esm/intent-resolver-EBJABYM3.mjs.map +7 -0
  43. package/dist/lib/node-esm/meta.json +1 -1
  44. package/dist/lib/node-esm/{migrations-AK43ZE6G.mjs → migrations-UOEK7HB7.mjs} +4 -4
  45. package/dist/lib/{browser/migrations-QRQV6ZAM.mjs.map → node-esm/migrations-UOEK7HB7.mjs.map} +2 -2
  46. package/dist/lib/node-esm/{react-context-6N7NMUJE.mjs → react-context-JIH7YBFI.mjs} +4 -4
  47. package/dist/lib/node-esm/{react-context-6N7NMUJE.mjs.map → react-context-JIH7YBFI.mjs.map} +2 -2
  48. package/dist/lib/node-esm/{react-surface-JUYTGBEM.mjs → react-surface-YKCZF43D.mjs} +6 -6
  49. package/dist/lib/node-esm/{react-surface-JUYTGBEM.mjs.map → react-surface-YKCZF43D.mjs.map} +3 -3
  50. package/dist/lib/node-esm/{schema-defs-O2KQQXJH.mjs → schema-defs-4UTKKRTF.mjs} +4 -4
  51. package/dist/lib/node-esm/schema-defs-4UTKKRTF.mjs.map +7 -0
  52. package/dist/lib/node-esm/{types.mjs → types/index.mjs} +3 -3
  53. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  54. package/dist/types/src/capabilities/capabilities.d.ts +2 -3
  55. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  56. package/dist/types/src/capabilities/client.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  58. package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/react-context.d.ts.map +1 -1
  60. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  61. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  62. package/dist/types/src/components/DevicesContainer.d.ts.map +1 -1
  63. package/dist/types/src/components/DevicesContainer.stories.d.ts +1 -1
  64. package/dist/types/src/components/DevicesContainer.stories.d.ts.map +1 -1
  65. package/dist/types/src/components/ProfileContainer.stories.d.ts +1 -1
  66. package/dist/types/src/components/ProfileContainer.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts +1 -1
  68. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts.map +1 -1
  69. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts +1 -1
  70. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts.map +1 -1
  71. package/dist/types/src/components/ResetDialog.stories.d.ts +1 -1
  72. package/dist/types/src/components/ResetDialog.stories.d.ts.map +1 -1
  73. package/dist/types/src/translations.d.ts +46 -46
  74. package/dist/types/src/translations.d.ts.map +1 -1
  75. package/dist/types/src/types/index.d.ts +2 -0
  76. package/dist/types/src/types/index.d.ts.map +1 -0
  77. package/dist/types/src/{types.d.ts → types/schema.d.ts} +30 -24
  78. package/dist/types/src/types/schema.d.ts.map +1 -0
  79. package/dist/types/tsconfig.tsbuildinfo +1 -1
  80. package/package.json +34 -35
  81. package/src/ClientPlugin.ts +3 -3
  82. package/src/capabilities/app-graph-builder.ts +4 -3
  83. package/src/capabilities/capabilities.ts +4 -3
  84. package/src/capabilities/client.ts +6 -4
  85. package/src/capabilities/intent-resolver.ts +5 -4
  86. package/src/capabilities/migrations.ts +1 -1
  87. package/src/capabilities/react-context.tsx +2 -1
  88. package/src/capabilities/react-surface.tsx +3 -3
  89. package/src/capabilities/schema-defs.ts +3 -3
  90. package/src/components/DevicesContainer.stories.tsx +8 -7
  91. package/src/components/DevicesContainer.tsx +6 -4
  92. package/src/components/JoinDialog.tsx +1 -1
  93. package/src/components/ProfileContainer.stories.tsx +4 -3
  94. package/src/components/ProfileContainer.tsx +5 -5
  95. package/src/components/RecoveryCodeDialog.stories.tsx +4 -3
  96. package/src/components/RecoveryCredentialsContainer.stories.tsx +6 -5
  97. package/src/components/RecoveryCredentialsContainer.tsx +1 -1
  98. package/src/components/ResetDialog.stories.tsx +4 -3
  99. package/src/components/ResetDialog.tsx +1 -1
  100. package/src/translations.ts +6 -4
  101. package/src/types/index.ts +5 -0
  102. package/src/{types.ts → types/schema.ts} +14 -15
  103. package/dist/lib/browser/app-graph-builder-CBRN2DMK.mjs.map +0 -7
  104. package/dist/lib/browser/chunk-5MC5HCIM.mjs.map +0 -7
  105. package/dist/lib/browser/chunk-IA3AVM4I.mjs.map +0 -7
  106. package/dist/lib/browser/chunk-PSSNS4C6.mjs.map +0 -7
  107. package/dist/lib/browser/client-NMS3MSFP.mjs.map +0 -7
  108. package/dist/lib/browser/intent-resolver-SLQZMO6I.mjs.map +0 -7
  109. package/dist/lib/browser/schema-defs-DNRDVQQJ.mjs.map +0 -7
  110. package/dist/lib/browser/types.mjs +0 -10
  111. package/dist/lib/node/app-graph-builder-BEEYM3A5.cjs +0 -134
  112. package/dist/lib/node/app-graph-builder-BEEYM3A5.cjs.map +0 -7
  113. package/dist/lib/node/chunk-BEJWU2NE.cjs +0 -718
  114. package/dist/lib/node/chunk-BEJWU2NE.cjs.map +0 -7
  115. package/dist/lib/node/chunk-BL6EBWOS.cjs +0 -131
  116. package/dist/lib/node/chunk-BL6EBWOS.cjs.map +0 -7
  117. package/dist/lib/node/chunk-CIYUKY3J.cjs +0 -37
  118. package/dist/lib/node/chunk-CIYUKY3J.cjs.map +0 -7
  119. package/dist/lib/node/chunk-DJKWB5L6.cjs +0 -35
  120. package/dist/lib/node/chunk-DJKWB5L6.cjs.map +0 -7
  121. package/dist/lib/node/chunk-DNKJCPU7.cjs +0 -38
  122. package/dist/lib/node/chunk-DNKJCPU7.cjs.map +0 -7
  123. package/dist/lib/node/client-Q3EQS4HA.cjs +0 -51
  124. package/dist/lib/node/client-Q3EQS4HA.cjs.map +0 -7
  125. package/dist/lib/node/index.cjs +0 -175
  126. package/dist/lib/node/index.cjs.map +0 -7
  127. package/dist/lib/node/intent-resolver-QURURONO.cjs +0 -312
  128. package/dist/lib/node/intent-resolver-QURURONO.cjs.map +0 -7
  129. package/dist/lib/node/meta.json +0 -1
  130. package/dist/lib/node/migrations-6FEWMF7U.cjs +0 -39
  131. package/dist/lib/node/migrations-6FEWMF7U.cjs.map +0 -7
  132. package/dist/lib/node/react-context-JS7Y5ZOK.cjs +0 -48
  133. package/dist/lib/node/react-context-JS7Y5ZOK.cjs.map +0 -7
  134. package/dist/lib/node/react-surface-RGRHOPVK.cjs +0 -82
  135. package/dist/lib/node/react-surface-RGRHOPVK.cjs.map +0 -7
  136. package/dist/lib/node/schema-defs-TA52ARBO.cjs +0 -41
  137. package/dist/lib/node/schema-defs-TA52ARBO.cjs.map +0 -7
  138. package/dist/lib/node/types.cjs +0 -32
  139. package/dist/lib/node/types.cjs.map +0 -7
  140. package/dist/lib/node-esm/app-graph-builder-OZEAAKNT.mjs.map +0 -7
  141. package/dist/lib/node-esm/chunk-37E3EI46.mjs.map +0 -7
  142. package/dist/lib/node-esm/chunk-STGGUFV2.mjs.map +0 -7
  143. package/dist/lib/node-esm/chunk-WHKQMAO5.mjs.map +0 -7
  144. package/dist/lib/node-esm/client-EBFQZRSF.mjs.map +0 -7
  145. package/dist/lib/node-esm/intent-resolver-MV55C5ED.mjs.map +0 -7
  146. package/dist/lib/node-esm/schema-defs-O2KQQXJH.mjs.map +0 -7
  147. package/dist/types/src/types.d.ts.map +0 -1
  148. /package/dist/lib/browser/{chunk-UCVFWBKT.mjs.map → chunk-CAF2COXW.mjs.map} +0 -0
  149. /package/dist/lib/browser/{chunk-MCEXD5XH.mjs.map → chunk-GS3LDHYD.mjs.map} +0 -0
  150. /package/dist/lib/browser/{types.mjs.map → types/index.mjs.map} +0 -0
  151. /package/dist/lib/node-esm/{chunk-HM7VB4ZV.mjs.map → chunk-SZLX4BVJ.mjs.map} +0 -0
  152. /package/dist/lib/node-esm/{chunk-FJYSQRBO.mjs.map → chunk-UMO3ETDV.mjs.map} +0 -0
  153. /package/dist/lib/node-esm/{types.mjs.map → types/index.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-client",
3
- "version": "0.8.3",
3
+ "version": "0.8.4-main.28f8d3d",
4
4
  "description": "DXOS Surface plugin for DXOS Client",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -10,21 +10,23 @@
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": {
18
- "types": "./dist/types/src/types.d.ts",
19
- "browser": "./dist/lib/browser/types.mjs",
20
- "node": "./dist/lib/node-esm/types.mjs"
19
+ "source": "./src/types/index.ts",
20
+ "types": "./dist/types/src/types/index.d.ts",
21
+ "browser": "./dist/lib/browser/types/index.mjs",
22
+ "node": "./dist/lib/node-esm/types/index.mjs"
21
23
  }
22
24
  },
23
25
  "types": "dist/types/src/index.d.ts",
24
26
  "typesVersions": {
25
27
  "*": {
26
28
  "types": [
27
- "dist/types/src/types.d.ts"
29
+ "dist/types/src/types/index.d.ts"
28
30
  ]
29
31
  }
30
32
  },
@@ -35,50 +37,47 @@
35
37
  "dependencies": {
36
38
  "@preact-signals/safe-react": "^0.9.0",
37
39
  "@preact/signals-core": "^1.9.0",
38
- "effect": "3.14.21",
39
40
  "react-qr-rounded": "^1.0.0",
40
- "@dxos/app-framework": "0.8.3",
41
- "@dxos/async": "0.8.3",
42
- "@dxos/config": "0.8.3",
43
- "@dxos/echo-schema": "0.8.3",
44
- "@dxos/echo": "0.8.3",
45
- "@dxos/echo-signals": "0.8.3",
46
- "@dxos/invariant": "0.8.3",
47
- "@dxos/local-storage": "0.8.3",
48
- "@dxos/log": "0.8.3",
49
- "@dxos/plugin-graph": "0.8.3",
50
- "@dxos/react-ui-form": "0.8.3",
51
- "@dxos/react-client": "0.8.3",
52
- "@dxos/plugin-observability": "0.8.3",
53
- "@dxos/react-ui-pickers": "0.8.3",
54
- "@dxos/shell": "0.8.3",
55
- "@dxos/react-ui-stack": "0.8.3",
56
- "@dxos/util": "0.8.3"
41
+ "@dxos/app-framework": "0.8.4-main.28f8d3d",
42
+ "@dxos/async": "0.8.4-main.28f8d3d",
43
+ "@dxos/config": "0.8.4-main.28f8d3d",
44
+ "@dxos/echo": "0.8.4-main.28f8d3d",
45
+ "@dxos/echo-schema": "0.8.4-main.28f8d3d",
46
+ "@dxos/echo-signals": "0.8.4-main.28f8d3d",
47
+ "@dxos/invariant": "0.8.4-main.28f8d3d",
48
+ "@dxos/local-storage": "0.8.4-main.28f8d3d",
49
+ "@dxos/plugin-graph": "0.8.4-main.28f8d3d",
50
+ "@dxos/log": "0.8.4-main.28f8d3d",
51
+ "@dxos/plugin-observability": "0.8.4-main.28f8d3d",
52
+ "@dxos/react-client": "0.8.4-main.28f8d3d",
53
+ "@dxos/react-ui-stack": "0.8.4-main.28f8d3d",
54
+ "@dxos/shell": "0.8.4-main.28f8d3d",
55
+ "@dxos/react-ui-form": "0.8.4-main.28f8d3d",
56
+ "@dxos/util": "0.8.4-main.28f8d3d",
57
+ "@dxos/react-ui-pickers": "0.8.4-main.28f8d3d"
57
58
  },
58
59
  "devDependencies": {
59
- "@effect-rx/rx-react": "^0.34.1",
60
- "@effect/platform": "0.80.12",
61
- "@phosphor-icons/react": "^2.1.5",
60
+ "@effect-rx/rx-react": "0.38.0",
61
+ "@effect/platform": "0.90.2",
62
62
  "@types/react": "~18.2.0",
63
63
  "@types/react-dom": "~18.2.0",
64
- "effect": "3.14.21",
64
+ "effect": "3.17.7",
65
65
  "react": "~18.2.0",
66
66
  "react-dom": "~18.2.0",
67
67
  "vite": "5.4.7",
68
- "@dxos/live-object": "0.8.3",
69
- "@dxos/react-ui": "0.8.3",
70
- "@dxos/react-ui-theme": "0.8.3",
71
- "@dxos/storybook-utils": "0.8.3"
68
+ "@dxos/live-object": "0.8.4-main.28f8d3d",
69
+ "@dxos/react-ui": "0.8.4-main.28f8d3d",
70
+ "@dxos/react-ui-theme": "0.8.4-main.28f8d3d",
71
+ "@dxos/storybook-utils": "0.8.4-main.28f8d3d"
72
72
  },
73
73
  "peerDependencies": {
74
74
  "@effect-rx/rx-react": "^0.34.1",
75
- "@effect/platform": "0.80.12",
76
- "@phosphor-icons/react": "^2.1.5",
75
+ "@effect/platform": "^0.80.12",
77
76
  "effect": "^3.13.3",
78
77
  "react": "~18.2.0",
79
78
  "react-dom": "~18.2.0",
80
- "@dxos/react-ui": "0.8.3",
81
- "@dxos/react-ui-theme": "0.8.3"
79
+ "@dxos/react-ui": "0.8.4-main.28f8d3d",
80
+ "@dxos/react-ui-theme": "0.8.4-main.28f8d3d"
82
81
  },
83
82
  "publishConfig": {
84
83
  "access": "public"
@@ -2,11 +2,11 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, defineModule, definePlugin, Events, oneOf } from '@dxos/app-framework';
5
+ import { Capabilities, Events, contributes, defineModule, definePlugin, oneOf } from '@dxos/app-framework';
6
6
 
7
7
  import {
8
- Client,
9
8
  AppGraphBuilder,
9
+ Client,
10
10
  IntentResolver,
11
11
  Migrations,
12
12
  ReactContext,
@@ -15,7 +15,7 @@ import {
15
15
  } from './capabilities';
16
16
  import { ClientEvents } from './events';
17
17
  import { meta } from './meta';
18
- import translations from './translations';
18
+ import { translations } from './translations';
19
19
  import { type ClientPluginOptions } from './types';
20
20
 
21
21
  export const ClientPlugin = ({
@@ -6,14 +6,15 @@ import { Rx } from '@effect-rx/rx-react';
6
6
  import { Option, pipe } from 'effect';
7
7
 
8
8
  import { createIntent } from '@dxos/app-framework';
9
- import { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';
10
- import { createExtension, rxFromObservable, ROOT_ID } from '@dxos/plugin-graph';
9
+ import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
10
+ import { ROOT_ID, createExtension, rxFromObservable } from '@dxos/plugin-graph';
11
11
  import { ConnectionState } from '@dxos/react-client/mesh';
12
12
 
13
- import { ClientCapabilities } from './capabilities';
14
13
  import { CLIENT_PLUGIN } from '../meta';
15
14
  import { Account, ClientAction } from '../types';
16
15
 
16
+ import { ClientCapabilities } from './capabilities';
17
+
17
18
  export default (context: PluginContext) =>
18
19
  contributes(
19
20
  Capabilities.AppGraphBuilder,
@@ -5,13 +5,14 @@
5
5
  import { defineCapability } from '@dxos/app-framework';
6
6
  import { type Client } from '@dxos/client';
7
7
  import { type ObjectMigration } from '@dxos/client/echo';
8
- import { type TypedObject } from '@dxos/echo-schema';
8
+ import { type Type } from '@dxos/echo';
9
9
 
10
10
  import { CLIENT_PLUGIN } from '../meta';
11
11
 
12
12
  export namespace ClientCapabilities {
13
13
  export const Client = defineCapability<Client>(`${CLIENT_PLUGIN}/capability/client`);
14
- export const Schema = defineCapability<TypedObject[]>(`${CLIENT_PLUGIN}/capability/schema`);
15
- export const SchemaWhiteList = defineCapability<TypedObject[]>(`${CLIENT_PLUGIN}/capability/schema-whitelist`);
14
+ export const Schema = defineCapability<Type.Obj.Any[]>(`${CLIENT_PLUGIN}/capability/schema`);
15
+ // TODO(wittjosiah): More descriptive name.
16
+ export const SchemaWhiteList = defineCapability<Type.Obj.Any[]>(`${CLIENT_PLUGIN}/capability/schema-whitelist`);
16
17
  export const Migration = defineCapability<ObjectMigration[]>(`${CLIENT_PLUGIN}/capability/migration`);
17
18
  }
@@ -2,13 +2,14 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, type PluginContext } from '@dxos/app-framework';
5
+ import { type PluginContext, contributes } from '@dxos/app-framework';
6
6
  import { Client } from '@dxos/react-client';
7
7
 
8
- import { ClientCapabilities } from './capabilities';
9
8
  import { ClientEvents } from '../events';
10
9
  import { type ClientPluginOptions } from '../types';
11
10
 
11
+ import { ClientCapabilities } from './capabilities';
12
+
12
13
  type ClientCapabilityOptions = Omit<ClientPluginOptions, 'appKey' | 'invitationUrl' | 'invitationParam' | 'onReset'> & {
13
14
  context: PluginContext;
14
15
  };
@@ -16,7 +17,7 @@ type ClientCapabilityOptions = Omit<ClientPluginOptions, 'appKey' | 'invitationU
16
17
  export default async ({ context, onClientInitialized, onSpacesReady, ...options }: ClientCapabilityOptions) => {
17
18
  const client = new Client(options);
18
19
  await client.initialize();
19
- await onClientInitialized?.(context, client);
20
+ await onClientInitialized?.({ context, client });
20
21
 
21
22
  // TODO(wittjosiah): Remove. This is a hack to get the app to boot with the new identity after a reset.
22
23
  client.reloaded.on(() => {
@@ -27,10 +28,11 @@ export default async ({ context, onClientInitialized, onSpacesReady, ...options
27
28
  });
28
29
  });
29
30
 
31
+ // TODO(burdon): The callback isn't called?
30
32
  const subscription = client.spaces.isReady.subscribe(async (ready) => {
31
33
  if (ready) {
32
34
  await context.activatePromise(ClientEvents.SpacesReady);
33
- await onSpacesReady?.(context, client);
35
+ await onSpacesReady?.({ context, client });
34
36
  }
35
37
  });
36
38
 
@@ -6,23 +6,24 @@ import { pipe } from 'effect';
6
6
 
7
7
  import {
8
8
  Capabilities,
9
+ LayoutAction,
10
+ type PluginContext,
9
11
  chain,
10
12
  contributes,
11
13
  createIntent,
12
14
  createResolver,
13
- LayoutAction,
14
- type PluginContext,
15
15
  } from '@dxos/app-framework';
16
16
  import { invariant } from '@dxos/invariant';
17
17
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
18
18
  import { PublicKey } from '@dxos/react-client';
19
19
  import { type JoinPanelProps } from '@dxos/shell/react';
20
20
 
21
- import { ClientCapabilities } from './capabilities';
22
21
  import { JOIN_DIALOG, RECOVERY_CODE_DIALOG, RESET_DIALOG } from '../components';
23
22
  import { ClientEvents } from '../events';
24
23
  import { Account, ClientAction } from '../types';
25
24
 
25
+ import { ClientCapabilities } from './capabilities';
26
+
26
27
  type IntentResolverOptions = {
27
28
  context: PluginContext;
28
29
  appName?: string;
@@ -173,7 +174,7 @@ export default ({ context, appName = 'Composer' }: IntentResolverOptions) =>
173
174
  challenge: new Uint8Array(),
174
175
  rp: { id: location.hostname, name: appName },
175
176
  user: {
176
- id: lookupKey.asUint8Array(),
177
+ id: lookupKey.asUint8Array() as Uint8Array<ArrayBuffer>,
177
178
  name: identity.did,
178
179
  displayName: identity.profile?.displayName ?? '',
179
180
  },
@@ -2,7 +2,7 @@
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
 
7
7
  import { ClientCapabilities } from './capabilities';
8
8
 
@@ -7,9 +7,10 @@ import React from 'react';
7
7
  import { Capabilities, contributes, useCapability } from '@dxos/app-framework';
8
8
  import { ClientProvider } from '@dxos/react-client';
9
9
 
10
- import { ClientCapabilities } from './capabilities';
11
10
  import { CLIENT_PLUGIN } from '../meta';
12
11
 
12
+ import { ClientCapabilities } from './capabilities';
13
+
13
14
  export default () =>
14
15
  contributes(Capabilities.ReactContext, {
15
16
  id: CLIENT_PLUGIN,
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { createSurface, Capabilities, contributes } from '@dxos/app-framework';
7
+ import { Capabilities, contributes, createSurface } from '@dxos/app-framework';
8
8
  import { type JoinPanelProps } from '@dxos/shell/react';
9
9
 
10
10
  import {
@@ -13,12 +13,12 @@ import {
13
13
  JoinDialog,
14
14
  ProfileContainer,
15
15
  RECOVERY_CODE_DIALOG,
16
+ RESET_DIALOG,
16
17
  RecoveryCodeDialog,
18
+ type RecoveryCodeDialogProps,
17
19
  RecoveryCredentialsContainer,
18
- RESET_DIALOG,
19
20
  ResetDialog,
20
21
  type ResetDialogProps,
21
- type RecoveryCodeDialogProps,
22
22
  } from '../components';
23
23
  import { Account, type ClientPluginOptions } from '../types';
24
24
 
@@ -2,8 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';
6
- import { type TypedObject } from '@dxos/echo-schema';
5
+ import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
6
+ import { type Type } from '@dxos/echo';
7
7
 
8
8
  import { ClientCapabilities } from './capabilities';
9
9
 
@@ -12,7 +12,7 @@ export default (context: PluginContext) => {
12
12
  const client = context.getCapability(ClientCapabilities.Client);
13
13
 
14
14
  // TODO(wittjosiah): Unregister schemas when they are disabled.
15
- let previous: TypedObject[] = [];
15
+ let previous: Type.Obj.Any[] = [];
16
16
  const cancel = registry.subscribe(
17
17
  context.capabilities(ClientCapabilities.Schema),
18
18
  (_schemas) => {
@@ -4,16 +4,17 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type StoryObj, type Meta } from '@storybook/react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
 
9
9
  import { IntentPlugin } from '@dxos/app-framework';
10
10
  import { withPluginManager } from '@dxos/app-framework/testing';
11
- import { osTranslations } from '@dxos/shell/react';
12
- import { withTheme, withLayout } from '@dxos/storybook-utils';
11
+ import { translations as shellTranslations } from '@dxos/shell/react';
12
+ import { withLayout, withTheme } from '@dxos/storybook-utils';
13
13
 
14
- import { DevicesContainer } from './DevicesContainer';
15
14
  import { ClientPlugin } from '../ClientPlugin';
16
- import translations from '../translations';
15
+ import { translations } from '../translations';
16
+
17
+ import { DevicesContainer } from './DevicesContainer';
17
18
 
18
19
  const meta: Meta = {
19
20
  title: 'plugins/plugin-client/DevicesContainer',
@@ -22,7 +23,7 @@ const meta: Meta = {
22
23
  withPluginManager({
23
24
  plugins: [
24
25
  ClientPlugin({
25
- onClientInitialized: async (_, client) => {
26
+ onClientInitialized: async ({ client }) => {
26
27
  await client.halo.createIdentity();
27
28
  },
28
29
  }),
@@ -34,7 +35,7 @@ const meta: Meta = {
34
35
  ],
35
36
  parameters: {
36
37
  layout: 'fullscreen',
37
- translations: [...translations, osTranslations],
38
+ translations: [...translations, ...shellTranslations],
38
39
  },
39
40
  };
40
41
 
@@ -2,7 +2,6 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Check, X } from '@phosphor-icons/react';
6
5
  import React, { useCallback, useEffect, useState } from 'react';
7
6
  import { QR } from 'react-qr-rounded';
8
7
 
@@ -12,7 +11,7 @@ import { useClient, useMulticastObservable } from '@dxos/react-client';
12
11
  import { type Device, useDevices } from '@dxos/react-client/halo';
13
12
  import { type CancellableInvitationObservable, Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
14
13
  import { useNetworkStatus } from '@dxos/react-client/mesh';
15
- import { Button, Clipboard, IconButton, List, useId, useTranslation } from '@dxos/react-ui';
14
+ import { Button, Clipboard, Icon, IconButton, List, useId, useTranslation } from '@dxos/react-ui';
16
15
  import {
17
16
  ControlFrame,
18
17
  ControlFrameItem,
@@ -22,7 +21,6 @@ import {
22
21
  ControlSection,
23
22
  } from '@dxos/react-ui-form';
24
23
  import { StackItem } from '@dxos/react-ui-stack';
25
- import { getSize, mx } from '@dxos/react-ui-theme';
26
24
  import { AuthCode, Centered, DeviceListItem, Emoji, Viewport } from '@dxos/shell/react';
27
25
  import { hexToEmoji } from '@dxos/util';
28
26
 
@@ -290,5 +288,9 @@ const InvitationAuthCode = ({ id, code, onCancel }: { id: string; code: string;
290
288
  };
291
289
 
292
290
  const InvitationComplete = ({ statusValue }: { statusValue: number }) => {
293
- return statusValue > 0 ? <Check className={mx('m-1.5', getSize(6))} /> : <X className={mx('m-1.5', getSize(6))} />;
291
+ return statusValue > 0 ? (
292
+ <Icon icon='ph--check--regular' size={6} classNames='m-1.5' />
293
+ ) : (
294
+ <Icon icon='ph--x--regular' size={6} classNames='m-1.5' />
295
+ );
294
296
  };
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React, { useCallback } from 'react';
6
6
 
7
- import { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
7
+ import { LayoutAction, createIntent, useIntentDispatcher } from '@dxos/app-framework';
8
8
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
9
9
  import { type InvitationResult } from '@dxos/react-client/invitations';
10
10
  import { Dialog, useTranslation } from '@dxos/react-ui';
@@ -4,13 +4,14 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type StoryObj, type Meta } from '@storybook/react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
 
9
9
  import { withClientProvider } from '@dxos/react-client/testing';
10
- import { withTheme, withLayout } from '@dxos/storybook-utils';
10
+ import { withLayout, withTheme } from '@dxos/storybook-utils';
11
+
12
+ import { translations } from '../translations';
11
13
 
12
14
  import { ProfileContainer } from './ProfileContainer';
13
- import translations from '../translations';
14
15
 
15
16
  const meta: Meta = {
16
17
  title: 'plugins/plugin-client/ProfileContainer',
@@ -10,16 +10,16 @@ import { useClient } from '@dxos/react-client';
10
10
  import { type Identity, useIdentity } from '@dxos/react-client/halo';
11
11
  import { ButtonGroup, Clipboard, Input, useTranslation } from '@dxos/react-ui';
12
12
  import {
13
- Form,
14
- type InputComponent,
15
13
  ControlItem,
16
14
  ControlItemInput,
17
- ControlSection,
18
15
  ControlPage,
16
+ ControlSection,
17
+ Form,
18
+ type InputComponent,
19
19
  } from '@dxos/react-ui-form';
20
20
  import { EmojiPickerBlock, HuePicker } from '@dxos/react-ui-pickers';
21
21
  import { StackItem } from '@dxos/react-ui-stack';
22
- import { hexToHue, hexToEmoji } from '@dxos/util';
22
+ import { hexToEmoji, hexToHue } from '@dxos/util';
23
23
 
24
24
  import { CLIENT_PLUGIN } from '../meta';
25
25
 
@@ -58,7 +58,7 @@ export const ProfileContainer = () => {
58
58
  setDisplayNameDirectly(profile.displayName);
59
59
  setEmojiDirectly(profile.emoji);
60
60
  setHueDirectly(profile.hue);
61
- updateProfile(profile);
61
+ void updateProfile(profile);
62
62
  },
63
63
  [identity],
64
64
  );
@@ -4,16 +4,17 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type StoryObj, type Meta } from '@storybook/react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import React, { useState } from 'react';
9
9
 
10
10
  import { useClient } from '@dxos/react-client';
11
11
  import { withClientProvider } from '@dxos/react-client/testing';
12
12
  import { AlertDialog, useAsyncEffect } from '@dxos/react-ui';
13
- import { withTheme, withLayout } from '@dxos/storybook-utils';
13
+ import { withLayout, withTheme } from '@dxos/storybook-utils';
14
+
15
+ import { translations } from '../translations';
14
16
 
15
17
  import { RecoveryCodeDialog, type RecoveryCodeDialogProps } from './RecoveryCodeDialog';
16
- import translations from '../translations';
17
18
 
18
19
  const DefaultStory = () => {
19
20
  const client = useClient();
@@ -4,15 +4,16 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type StoryObj, type Meta } from '@storybook/react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
 
9
9
  import { IntentPlugin } from '@dxos/app-framework';
10
10
  import { withPluginManager } from '@dxos/app-framework/testing';
11
- import { withTheme, withLayout } from '@dxos/storybook-utils';
11
+ import { withLayout, withTheme } from '@dxos/storybook-utils';
12
12
 
13
- import { RecoveryCredentialsContainer } from './RecoveryCredentialsContainer';
14
13
  import { ClientPlugin } from '../ClientPlugin';
15
- import translations from '../translations';
14
+ import { translations } from '../translations';
15
+
16
+ import { RecoveryCredentialsContainer } from './RecoveryCredentialsContainer';
16
17
 
17
18
  const meta: Meta = {
18
19
  title: 'plugins/plugin-client/RecoveryCredentialsContainer',
@@ -21,7 +22,7 @@ const meta: Meta = {
21
22
  withPluginManager({
22
23
  plugins: [
23
24
  ClientPlugin({
24
- onClientInitialized: async (_, client) => {
25
+ onClientInitialized: async ({ client }) => {
25
26
  await client.halo.createIdentity();
26
27
  },
27
28
  }),
@@ -6,7 +6,7 @@ import React from 'react';
6
6
 
7
7
  import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
8
8
  import { useCredentials } from '@dxos/react-client/halo';
9
- import { Icon, IconButton, List, ListItem, useTranslation, Message } from '@dxos/react-ui';
9
+ import { Icon, IconButton, List, ListItem, Message, useTranslation } from '@dxos/react-ui';
10
10
  import { ControlGroup, ControlItem, ControlPage, ControlSection } from '@dxos/react-ui-form';
11
11
  import { StackItem } from '@dxos/react-ui-stack';
12
12
 
@@ -4,16 +4,17 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type StoryObj, type Meta } from '@storybook/react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import React from 'react';
9
9
 
10
10
  import { IntentPlugin } from '@dxos/app-framework';
11
11
  import { withPluginManager } from '@dxos/app-framework/testing';
12
12
  import { Dialog } from '@dxos/react-ui';
13
- import { withTheme, withLayout } from '@dxos/storybook-utils';
13
+ import { withLayout, withTheme } from '@dxos/storybook-utils';
14
+
15
+ import { translations } from '../translations';
14
16
 
15
17
  import { ResetDialog, type ResetDialogProps } from './ResetDialog';
16
- import translations from '../translations';
17
18
 
18
19
  const Render = (props: ResetDialogProps) => {
19
20
  return (
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React, { useCallback } from 'react';
6
6
 
7
- import { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
7
+ import { LayoutAction, createIntent, useIntentDispatcher } from '@dxos/app-framework';
8
8
  import { useClient } from '@dxos/react-client';
9
9
  import { Dialog, useTranslation } from '@dxos/react-ui';
10
10
  import { ConfirmReset, type ConfirmResetProps } from '@dxos/shell/react';
@@ -2,12 +2,14 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { CLIENT_PLUGIN } from './meta';
5
+ import { type Resource } from '@dxos/react-ui';
6
6
 
7
- export default [
7
+ import { meta } from './meta';
8
+
9
+ export const translations = [
8
10
  {
9
11
  'en-US': {
10
- [CLIENT_PLUGIN]: {
12
+ [meta.id]: {
11
13
  'account label': 'User Account',
12
14
  'profile label': 'Profile',
13
15
  'profile description': 'You can adjust how your user settings here.',
@@ -65,4 +67,4 @@ export default [
65
67
  },
66
68
  },
67
69
  },
68
- ];
70
+ ] as const satisfies Resource[];
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './schema';