@stapel/workspaces-react 0.22.0 → 0.23.0

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @stapel/workspaces-react
2
2
 
3
+ ## 0.23.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 90f23b5: Contract pin to stapel-workspaces 0.37.0, where `PATCH` merges `settings` and `null` removes a key. `useUpdateSecuritySettings` sends only the change (`{settings: {security: patch}}`) with no read before it, so it no longer re-sends every stored key (which raced a concurrent edit); a key is removed by sending `null` (`WorkspaceSecurityPatch`).
8
+
9
+ ## 0.22.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 2c284f0: Publish `nav-manifest.json` (listed in `files`, exported as `./nav-manifest` and `./nav-manifest.json`). Every earlier version generated it but left it out of the tarball, so a consumer could not read the pair's entries or its `workspaces.switcher` embed from the installed package.
14
+
3
15
  ## 0.22.0
4
16
 
5
17
  ### Minor Changes
package/MODULE.md CHANGED
@@ -41,6 +41,16 @@ generated `llms.txt` (agent context) and `manifest.json` (machine catalog).
41
41
  The completeness gate requires ≥1 demo per exported headless component; the
42
42
  starter `Workspaces.demo.tsx` covers `WorkspacesProvider`. Demos never ship.
43
43
 
44
+ ## Shell embed
45
+
46
+ `<WorkspaceSwitcher/>` (`/default`) is the pair's shell embed
47
+ `workspaces.switcher` (`src/nav/manifest.ts` `navEmbeds`: `topbar.start`,
48
+ member, order 10). It reads and writes `WorkspaceSelection`, the one selection
49
+ the workspace screens read, so it needs `<WorkspaceSelectionProvider>` above
50
+ it — the scaffold mounts that provider around the member shell whenever the
51
+ pair is selected. Outside a provider, or with no workspace, it renders nothing;
52
+ a failed list is a retry, never an empty select.
53
+
44
54
  ## Extension seams (frontend-standard §7)
45
55
 
46
56
  - Client is injected via `<WorkspacesProvider>` / core's `StapelConfigProvider`
@@ -213,4 +213,12 @@ export interface WorkspaceSecuritySettings {
213
213
  /** Extra keys pass through the backend verbatim (client extension). */
214
214
  readonly [extra: string]: unknown;
215
215
  }
216
+ /**
217
+ * A change to `Workspace.settings.security` (stapel-workspaces 0.37.0 merge
218
+ * semantics): a key left out is kept, a key sent as `null` is removed. The
219
+ * derived `policies_configured` is never sent.
220
+ */
221
+ export type WorkspaceSecurityPatch = {
222
+ readonly [K in keyof WorkspaceSecuritySettings]?: WorkspaceSecuritySettings[K] | null;
223
+ };
216
224
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -33,7 +33,7 @@ export type { CapabilityLevel, VerificationEnrollment, } from "./model/stepUp.js
33
33
  export { maskEmail, emailMatchesMask } from "./model/emailMask.js";
34
34
  export { useCreateWorkspace, useUpdateWorkspace, useDeleteWorkspace, useInviteMembers, useUpdateMemberRole, useRemoveMember, useRenameMember, useRenameInvitation, useAcceptInvitation, useClaimInvitation, useDeclineInvitation, useRevokeInvitation, useResendInvitation, useResetMemberPassword, useUpdateSecuritySettings, useSetPreferredWorkspace, useClearPreferredWorkspace, } from "./model/mutations.js";
35
35
  export type { MemberRoleChange, MemberRename, InvitationRename, MemberPasswordResetVars, } from "./model/mutations.js";
36
- export type { Workspace as WorkspaceData, WorkspaceList as WorkspaceListData, WorkspaceCreate, WorkspaceUpdate, AuditEvent, AuditPage, AuditParams, Member as MemberData, MemberPage as MemberListData, MembersParams, MemberInvite, MemberInviteResult, MemberRoleUpdate, Invitation, InvitationPage as InvitationListData, InvitationsParams, InvitationStatusFilter, InvitationAccept, InvitationPreview, InvitationClaim, MemberPasswordReset, MemberPasswordResetResult, PreferredWorkspace, PreferredWorkspaceResult, DisplayNameUpdate, DisplayNameResult, ProvisionedUserPolicy, WorkspaceSecuritySettings, RoleInfo, RoleList, WorkspaceRole, WorkspaceKind, } from "./api/types.js";
36
+ export type { Workspace as WorkspaceData, WorkspaceList as WorkspaceListData, WorkspaceCreate, WorkspaceUpdate, AuditEvent, AuditPage, AuditParams, Member as MemberData, MemberPage as MemberListData, MembersParams, MemberInvite, MemberInviteResult, MemberRoleUpdate, Invitation, InvitationPage as InvitationListData, InvitationsParams, InvitationStatusFilter, InvitationAccept, InvitationPreview, InvitationClaim, MemberPasswordReset, MemberPasswordResetResult, PreferredWorkspace, PreferredWorkspaceResult, DisplayNameUpdate, DisplayNameResult, ProvisionedUserPolicy, WorkspaceSecuritySettings, WorkspaceSecurityPatch, RoleInfo, RoleList, WorkspaceRole, WorkspaceKind, } from "./api/types.js";
37
37
  export { WorkspacesProvider } from "./headless/WorkspacesProvider.js";
38
38
  export { WorkspaceList } from "./headless/WorkspaceList.js";
39
39
  export type { WorkspaceListBag } from "./headless/WorkspaceList.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,gFAAgF;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,gFAAgF;AAChF,4EAA4E;AAC5E,4EAA4E;AAC5E,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOtE,gFAAgF;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAK7D,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,gFAAgF;AAChF,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAQ9B,gFAAgF;AAChF,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,gFAAgF;AAChF,wEAAwE;AACxE,wEAAwE;AACxE,gEAAgE;AAChE,6EAA6E;AAC7E,yEAAyE;AACzE,yBAAyB;AACzB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EACL,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AA4C9B,gFAAgF;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,gFAAgF;AAChF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,gFAAgF;AAChF,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,gFAAgF;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,gFAAgF;AAChF,4EAA4E;AAC5E,4EAA4E;AAC5E,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOtE,gFAAgF;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAK7D,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,gFAAgF;AAChF,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAQ9B,gFAAgF;AAChF,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,gFAAgF;AAChF,wEAAwE;AACxE,wEAAwE;AACxE,gEAAgE;AAChE,6EAA6E;AAC7E,yEAAyE;AACzE,yBAAyB;AACzB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EACL,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AA6C9B,gFAAgF;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,gFAAgF;AAChF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,gFAAgF;AAChF,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { UseMutationResult } from "@tanstack/react-query";
2
2
  import type { StapelApiError } from "@stapel/core";
3
- import type { DisplayNameResult, Invitation, Member, MemberInvite, MemberInviteResult, MemberPasswordReset, MemberPasswordResetResult, InvitationAccept, InvitationClaim, PreferredWorkspace, PreferredWorkspaceResult, Workspace, WorkspaceCreate, WorkspaceSecuritySettings, WorkspaceUpdate } from "../api/types.js";
3
+ import type { DisplayNameResult, Invitation, Member, MemberInvite, MemberInviteResult, MemberPasswordReset, MemberPasswordResetResult, InvitationAccept, InvitationClaim, PreferredWorkspace, PreferredWorkspaceResult, Workspace, WorkspaceCreate, WorkspaceSecurityPatch, WorkspaceUpdate } from "../api/types.js";
4
4
  /**
5
5
  * Write hooks (frontend-standard §2 — mutations invalidate on success). Each mutation
6
6
  * invalidates exactly the server state it can move. Membership and ownership are
@@ -18,6 +18,10 @@ export declare function useCreateWorkspace(): UseMutationResult<Workspace, Stape
18
18
  /**
19
19
  * Partially update a workspace — writes the fresh row into its detail cache and
20
20
  * refreshes the list (name / slug may have changed there too).
21
+ *
22
+ * `settings` merges on the server (stapel-workspaces 0.37.0): send only the
23
+ * keys that change, and `null` to remove one. A change to `settings.security`
24
+ * belongs to {@link useUpdateSecuritySettings} (extra capability + step-up).
21
25
  */
22
26
  export declare function useUpdateWorkspace(workspaceId: string): UseMutationResult<Workspace, StapelApiError, WorkspaceUpdate>;
23
27
  /** Soft-delete a workspace (owner only) — drops its detail cache + refreshes the list. */
@@ -208,13 +212,20 @@ export declare function useResetMemberPassword(workspaceId: string): UseMutation
208
212
  * deliberate, auditable choice ("demand nothing"), so it is sent as such and
209
213
  * never dropped as "empty means unset".
210
214
  *
211
- * MERGES, because the backend does not: `PATCH` assigns `settings` wholesale
212
- * (`ws.settings = data.settings`), so sending a bare `{security: …}` would
213
- * silently drop every other key the workspace holds. The merge reads the
214
- * workspace fresh rather than trusting the detail cache — a stale snapshot
215
- * here would resurrect settings somebody else has since removed.
215
+ * Sends ONLY the change. Since stapel-workspaces 0.37.0 `PATCH` merges
216
+ * `settings` (top-level keys, and the `security` block one level deeper): a
217
+ * key not sent is kept and a key sent as `null` is removed. So the body is
218
+ * `{settings: {security: <patch>}}` with no read before it. The old
219
+ * read-merge-write sent every stored key back, which raced a concurrent
220
+ * edit (a key somebody had just removed came back) and, under the merge,
221
+ * can no longer remove anything by leaving it out. To remove a key, send
222
+ * it as `null`.
223
+ *
224
+ * Step-up: the backend compares the RESULT, so a patch that leaves
225
+ * `security` as stored needs no step-up, and any real change needs
226
+ * `workspace.security.manage` plus the `sensitive` step-up.
216
227
  */
217
- export declare function useUpdateSecuritySettings(workspaceId: string): UseMutationResult<Workspace, StapelApiError, WorkspaceSecuritySettings>;
228
+ export declare function useUpdateSecuritySettings(workspaceId: string): UseMutationResult<Workspace, StapelApiError, WorkspaceSecurityPatch>;
218
229
  /**
219
230
  * Accept an invitation by its token — the caller joins the workspace. A dead
220
231
  * token surfaces a localizable `StapelApiError` (`error.400.invitation_expired`
@@ -1 +1 @@
1
- {"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../src/model/mutations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../src/model/mutations.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,10 @@ export function useCreateWorkspace() {
30
30
  /**
31
31
  * Partially update a workspace — writes the fresh row into its detail cache and
32
32
  * refreshes the list (name / slug may have changed there too).
33
+ *
34
+ * `settings` merges on the server (stapel-workspaces 0.37.0): send only the
35
+ * keys that change, and `null` to remove one. A change to `settings.security`
36
+ * belongs to {@link useUpdateSecuritySettings} (extra capability + step-up).
33
37
  */
34
38
  export function useUpdateWorkspace(workspaceId) {
35
39
  const api = useWorkspacesApi();
@@ -343,28 +347,29 @@ export function useResetMemberPassword(workspaceId) {
343
347
  * deliberate, auditable choice ("demand nothing"), so it is sent as such and
344
348
  * never dropped as "empty means unset".
345
349
  *
346
- * MERGES, because the backend does not: `PATCH` assigns `settings` wholesale
347
- * (`ws.settings = data.settings`), so sending a bare `{security: …}` would
348
- * silently drop every other key the workspace holds. The merge reads the
349
- * workspace fresh rather than trusting the detail cache — a stale snapshot
350
- * here would resurrect settings somebody else has since removed.
350
+ * Sends ONLY the change. Since stapel-workspaces 0.37.0 `PATCH` merges
351
+ * `settings` (top-level keys, and the `security` block one level deeper): a
352
+ * key not sent is kept and a key sent as `null` is removed. So the body is
353
+ * `{settings: {security: <patch>}}` with no read before it. The old
354
+ * read-merge-write sent every stored key back, which raced a concurrent
355
+ * edit (a key somebody had just removed came back) and, under the merge,
356
+ * can no longer remove anything by leaving it out. To remove a key, send
357
+ * it as `null`.
358
+ *
359
+ * Step-up: the backend compares the RESULT, so a patch that leaves
360
+ * `security` as stored needs no step-up, and any real change needs
361
+ * `workspace.security.manage` plus the `sensitive` step-up.
351
362
  */
352
363
  export function useUpdateSecuritySettings(workspaceId) {
353
364
  const api = useWorkspacesApi();
354
365
  const queryClient = useQueryClient();
355
366
  const options = {
356
- mutationFn: async (patch) => {
357
- const current = await api.getWorkspace(workspaceId);
358
- const settings = (current.settings ?? {});
359
- const security = (settings["security"] ?? {});
367
+ mutationFn: (patch) => {
360
368
  // `policies_configured` is derived and read-only on the wire — never
361
- // sent back, whatever a caller spread into the patch.
362
- const { policies_configured: _derived, ...writable } = {
363
- ...security,
364
- ...patch,
365
- };
369
+ // sent, whatever a caller spread into the patch.
370
+ const { policies_configured: _derived, ...writable } = patch;
366
371
  return api.updateWorkspace(workspaceId, {
367
- settings: { ...settings, security: writable },
372
+ settings: { security: writable },
368
373
  });
369
374
  },
370
375
  onSuccess: (updated) => {
@@ -1 +1 @@
1
- {"version":3,"file":"mutations.js","sourceRoot":"","sources":["../../src/model/mutations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutations.js","sourceRoot":"","sources":["../../src/model/mutations.ts"],"names":[],"mappings":"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"}
package/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
- # @stapel/workspaces-react 0.22.0
1
+ # @stapel/workspaces-react 0.23.0
2
2
 
3
- Headless React flow pair for stapel-workspaces (contract >=0.36 <0.37) — business + state, zero visual opinion.
3
+ Headless React flow pair for stapel-workspaces (contract >=0.37 <0.38) — business + state, zero visual opinion.
4
4
  Built on @stapel/core: typed client + StapelApiError envelope, auth token refresh,
5
5
  verification-403 interception, i18n engine, analytics facade, TanStack Query layer.
6
6
 
@@ -53,31 +53,41 @@ Paths are relative to `/workspaces/api/v1/`.
53
53
  - workspaces_api_v1_roles_retrieve: GET /roles
54
54
 
55
55
  ## Query hooks (server state; keys come only from the key factory)
56
- - useAcceptInvitation (mutation) → acceptInvitation
57
- - useAudit (query) → listAudit
58
- - useClaimInvitation (mutation) → claimInvitation
59
- - useClearPreferredWorkspace (mutation) → clearPreferredWorkspace
60
- - useCreateWorkspace (mutation) → createWorkspace
61
- - useDeclineInvitation (mutation) → declineInvitation
62
- - useDeleteWorkspace (mutation) → deleteWorkspace
63
- - useInstanceShape (query) → getInstanceShape
64
- - useInvitationPreview (query) → getInvitationPreview
65
- - useInvitations (query) → listInvitations
66
- - useInviteMembers (mutation) → inviteMembers
67
- - useMembers (query) → listMembers
68
- - useRemoveMember (mutation) → removeMember
69
- - useRenameInvitation (mutation) → renameInvitation
70
- - useRenameMember (mutation) → renameMember
71
- - useResendInvitation (mutation) → resendInvitation
72
- - useResetMemberPassword (mutation) → resetMemberPassword
73
- - useRevokeInvitation (mutation) → revokeInvitation
74
- - useRoles (query) → listRoles
75
- - useSetPreferredWorkspace (mutation) → setPreferredWorkspace
76
- - useUpdateMemberRole (mutation) → updateMemberRole
77
- - useUpdateSecuritySettings (mutation) → getWorkspace+updateWorkspace
78
- - useUpdateWorkspace (mutation) → updateWorkspace
79
- - useWorkspace (query) → getWorkspace
80
- - useWorkspaces (query) → listWorkspaces
56
+ - useAcceptInvitation (mutation) → acceptInvitation : UseMutationResult< Member, StapelApiError, InvitationAccept >
57
+ - useAudit (query) → listAudit : UseQueryResult<AuditPage, StapelApiError>
58
+ - useClaimInvitation (mutation) → claimInvitation : UseMutationResult< InvitationClaim, StapelApiError, string >
59
+ - useClearPreferredWorkspace (mutation) → clearPreferredWorkspace : UseMutationResult< PreferredWorkspaceResult, StapelApiError, void >
60
+ - useCreateWorkspace (mutation) → createWorkspace : UseMutationResult< Workspace, StapelApiError, WorkspaceCreate >
61
+ - useDeclineInvitation (mutation) → declineInvitation : UseMutationResult< void, StapelApiError, string >
62
+ - useDeleteWorkspace (mutation) → deleteWorkspace : UseMutationResult< void, StapelApiError, string >
63
+ - useInstanceShape (query) → getInstanceShape : UseQueryResult< InstanceShape, StapelApiError >
64
+ - useInvitationPreview (query) → getInvitationPreview : UseQueryResult<InvitationPreview, StapelApiError>
65
+ - useInvitations (query) → listInvitations : UseQueryResult<InvitationPage, StapelApiError>
66
+ - useInviteMembers (mutation) → inviteMembers : UseMutationResult<MemberInviteResult, StapelApiError, MemberInvite>
67
+ - useMembers (query) → listMembers : UseQueryResult<MemberPage, StapelApiError>
68
+ - useRemoveMember (mutation) → removeMember : UseMutationResult<void, StapelApiError, string>
69
+ - useRenameInvitation (mutation) → renameInvitation : UseMutationResult<DisplayNameResult, StapelApiError, InvitationRename>
70
+ - useRenameMember (mutation) → renameMember : UseMutationResult<DisplayNameResult, StapelApiError, MemberRename>
71
+ - useResendInvitation (mutation) → resendInvitation : UseMutationResult<Invitation, StapelApiError, string>
72
+ - useResetMemberPassword (mutation) → resetMemberPassword : UseMutationResult< MemberPasswordResetResult, StapelApiError, MemberPasswordResetVars >
73
+ - useRevokeInvitation (mutation) → revokeInvitation : UseMutationResult<Invitation, StapelApiError, string>
74
+ - useRoles (query) → listRoles : UseQueryResult< readonly RoleInfo[], StapelApiError >
75
+ - useSetPreferredWorkspace (mutation) → setPreferredWorkspace : UseMutationResult< PreferredWorkspaceResult, StapelApiError, PreferredWorkspace >
76
+ - useUpdateMemberRole (mutation) → updateMemberRole : UseMutationResult<Member, StapelApiError, MemberRoleChange>
77
+ - useUpdateSecuritySettings (mutation) → updateWorkspace : UseMutationResult<Workspace, StapelApiError, WorkspaceSecurityPatch>
78
+ - useUpdateWorkspace (mutation) → updateWorkspace : UseMutationResult<Workspace, StapelApiError, WorkspaceUpdate>
79
+ - useWorkspace (query) → getWorkspace : UseQueryResult<Workspace, StapelApiError>
80
+ - useWorkspaces (query) → listWorkspaces : UseQueryResult<WorkspaceList, StapelApiError>
81
+
82
+ ## Other hooks (call shape; a REQUIRED option missing is a type error)
83
+ - useWorkspaceSelection() → WorkspaceSelection
84
+ - useOptionalWorkspaceSelection() → WorkspaceSelection | null
85
+ - useCanCreateWorkspace() → boolean
86
+ - useInfiniteInvitations(workspaceId: string | null, filters?: Omit<InvitationsParams, "anchor" | "direction">) → UseInfiniteQueryResult< InfiniteData<InvitationPage, string…
87
+ - useCapabilities(workspaceId: string | null) → CapabilitiesResult
88
+ - useCapabilityGate(workspaceId: string | null, capability: string) → CapabilityGate
89
+ - useMandateState() → MandateState
90
+ - useMandateSource() → MandateSource
81
91
 
82
92
  ## Errors (render t(code, params); UX from remediation)
83
93
  74 keys (full catalog: manifest.json §errors). By remediation: fix_input 35 · retry 13 · wait_and_retry 10 · contact_support 9 · verify 5 · reauthenticate 2.
package/manifest.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "$generated": "by scripts/gen-manifest.mjs — do not edit; drift-gated (pnpm gen:manifest:check)",
3
3
  "package": "@stapel/workspaces-react",
4
- "version": "0.22.0",
4
+ "version": "0.23.0",
5
5
  "backend": {
6
6
  "module": "stapel-workspaces",
7
- "contract": ">=0.36 <0.37"
7
+ "contract": ">=0.37 <0.38"
8
8
  },
9
9
  "layers": [
10
10
  "api",
@@ -448,10 +448,7 @@
448
448
  },
449
449
  "useUpdateSecuritySettings": {
450
450
  "kind": "mutation",
451
- "operations": [
452
- "getWorkspace",
453
- "updateWorkspace"
454
- ],
451
+ "operation": "updateWorkspace",
455
452
  "invalidates": [
456
453
  [
457
454
  "workspaces",
@@ -1488,6 +1485,7 @@
1488
1485
  "WorkspaceListBag",
1489
1486
  "WorkspaceListData",
1490
1487
  "WorkspaceRole",
1488
+ "WorkspaceSecurityPatch",
1491
1489
  "WorkspaceSecuritySettings",
1492
1490
  "WorkspaceSelection",
1493
1491
  "WorkspaceSelectionProviderProps",
@@ -0,0 +1,137 @@
1
+ {
2
+ "package": "@stapel/workspaces-react",
3
+ "version": "0.23.0",
4
+ "entries": [
5
+ {
6
+ "id": "workspaces.list",
7
+ "labelKey": "workspaces.nav.workspaces",
8
+ "icon": "AppstoreOutlined",
9
+ "route": {
10
+ "path": "workspaces"
11
+ },
12
+ "component": {
13
+ "export": "WorkspacesPage",
14
+ "subpath": "default"
15
+ },
16
+ "placement": {
17
+ "level": "submenu",
18
+ "parentId": "account.root"
19
+ },
20
+ "menuVisibleDefault": true,
21
+ "requiresAuth": true,
22
+ "surface": "member",
23
+ "order": 10
24
+ },
25
+ {
26
+ "id": "workspaces.settings",
27
+ "labelKey": "workspaces.nav.settings",
28
+ "icon": "ProfileOutlined",
29
+ "route": {
30
+ "path": "workspaces/settings"
31
+ },
32
+ "component": {
33
+ "export": "WorkspaceSettings",
34
+ "subpath": "default"
35
+ },
36
+ "placement": {
37
+ "level": "submenu",
38
+ "parentId": "account.root"
39
+ },
40
+ "menuVisibleDefault": true,
41
+ "requiresAuth": true,
42
+ "surface": "member",
43
+ "order": 11
44
+ },
45
+ {
46
+ "id": "workspaces.members",
47
+ "labelKey": "workspaces.nav.members",
48
+ "icon": "UserOutlined",
49
+ "route": {
50
+ "path": "workspaces/members"
51
+ },
52
+ "component": {
53
+ "export": "MembersManager",
54
+ "subpath": "default"
55
+ },
56
+ "placement": {
57
+ "level": "submenu",
58
+ "parentId": "account.root"
59
+ },
60
+ "menuVisibleDefault": true,
61
+ "requiresAuth": true,
62
+ "surface": "member",
63
+ "order": 12
64
+ },
65
+ {
66
+ "id": "workspaces.invitations",
67
+ "labelKey": "workspaces.nav.invitations",
68
+ "icon": "MessageOutlined",
69
+ "route": {
70
+ "path": "workspaces/invitations"
71
+ },
72
+ "component": {
73
+ "export": "InvitationsPane",
74
+ "subpath": "default"
75
+ },
76
+ "placement": {
77
+ "level": "submenu",
78
+ "parentId": "account.root"
79
+ },
80
+ "menuVisibleDefault": true,
81
+ "requiresAuth": true,
82
+ "surface": "member",
83
+ "order": 13
84
+ },
85
+ {
86
+ "id": "workspaces.audit",
87
+ "labelKey": "workspaces.nav.audit",
88
+ "icon": "AuditOutlined",
89
+ "route": {
90
+ "path": "workspaces/audit"
91
+ },
92
+ "component": {
93
+ "export": "AuditTrailPane",
94
+ "subpath": "default"
95
+ },
96
+ "placement": {
97
+ "level": "submenu",
98
+ "parentId": "account.root"
99
+ },
100
+ "menuVisibleDefault": true,
101
+ "requiresAuth": true,
102
+ "surface": "member",
103
+ "order": 14
104
+ },
105
+ {
106
+ "id": "workspaces.invite",
107
+ "labelKey": "workspaces.nav.invite",
108
+ "icon": "MessageOutlined",
109
+ "route": {
110
+ "path": "/invite/:token"
111
+ },
112
+ "component": {
113
+ "export": "InviteAcceptPage",
114
+ "subpath": "default"
115
+ },
116
+ "placement": {
117
+ "level": "top"
118
+ },
119
+ "menuVisibleDefault": false,
120
+ "requiresAuth": false,
121
+ "surface": "public",
122
+ "order": 0
123
+ }
124
+ ],
125
+ "embeds": [
126
+ {
127
+ "id": "workspaces.switcher",
128
+ "slot": "topbar.start",
129
+ "component": {
130
+ "export": "WorkspaceSwitcher",
131
+ "subpath": "default"
132
+ },
133
+ "order": 10,
134
+ "surface": "member"
135
+ }
136
+ ]
137
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stapel/workspaces-react",
3
- "version": "0.22.0",
3
+ "version": "0.23.0",
4
4
  "description": "Headless React flow pair for stapel-workspaces: typed API client, TanStack Query hooks, flow machines, headless components, and i18n keys. Zero visual opinion.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -31,6 +31,8 @@
31
31
  },
32
32
  "./manifest": "./manifest.json",
33
33
  "./manifest.json": "./manifest.json",
34
+ "./nav-manifest": "./nav-manifest.json",
35
+ "./nav-manifest.json": "./nav-manifest.json",
34
36
  "./llms.txt": "./llms.txt",
35
37
  "./package.json": "./package.json"
36
38
  },
@@ -42,6 +44,7 @@
42
44
  "MODULE.md",
43
45
  "CHANGELOG.md",
44
46
  "manifest.json",
47
+ "nav-manifest.json",
45
48
  "llms.txt"
46
49
  ],
47
50
  "size-limit": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$generated": "by scripts/gen-events.mjs — do not edit; drift-gated (pnpm gen:events:check)",
3
3
  "package": "@stapel/workspaces-react",
4
- "version": "0.22.0",
4
+ "version": "0.23.0",
5
5
  "defined": [],
6
6
  "flows": []
7
7
  }
package/src/api/types.ts CHANGED
@@ -233,3 +233,12 @@ export interface WorkspaceSecuritySettings {
233
233
  /** Extra keys pass through the backend verbatim (client extension). */
234
234
  readonly [extra: string]: unknown;
235
235
  }
236
+
237
+ /**
238
+ * A change to `Workspace.settings.security` (stapel-workspaces 0.37.0 merge
239
+ * semantics): a key left out is kept, a key sent as `null` is removed. The
240
+ * derived `policies_configured` is never sent.
241
+ */
242
+ export type WorkspaceSecurityPatch = {
243
+ readonly [K in keyof WorkspaceSecuritySettings]?: WorkspaceSecuritySettings[K] | null;
244
+ };
package/src/index.ts CHANGED
@@ -162,6 +162,7 @@ export type {
162
162
  DisplayNameResult,
163
163
  ProvisionedUserPolicy,
164
164
  WorkspaceSecuritySettings,
165
+ WorkspaceSecurityPatch,
165
166
  RoleInfo,
166
167
  RoleList,
167
168
  WorkspaceRole,
@@ -18,7 +18,7 @@ import type {
18
18
  PreferredWorkspaceResult,
19
19
  Workspace,
20
20
  WorkspaceCreate,
21
- WorkspaceSecuritySettings,
21
+ WorkspaceSecurityPatch,
22
22
  WorkspaceUpdate,
23
23
  } from "../api/types.js";
24
24
  import { useWorkspacesApi } from "./context.js";
@@ -60,6 +60,10 @@ export function useCreateWorkspace(): UseMutationResult<
60
60
  /**
61
61
  * Partially update a workspace — writes the fresh row into its detail cache and
62
62
  * refreshes the list (name / slug may have changed there too).
63
+ *
64
+ * `settings` merges on the server (stapel-workspaces 0.37.0): send only the
65
+ * keys that change, and `null` to remove one. A change to `settings.security`
66
+ * belongs to {@link useUpdateSecuritySettings} (extra capability + step-up).
63
67
  */
64
68
  export function useUpdateWorkspace(
65
69
  workspaceId: string
@@ -469,34 +473,35 @@ export function useResetMemberPassword(
469
473
  * deliberate, auditable choice ("demand nothing"), so it is sent as such and
470
474
  * never dropped as "empty means unset".
471
475
  *
472
- * MERGES, because the backend does not: `PATCH` assigns `settings` wholesale
473
- * (`ws.settings = data.settings`), so sending a bare `{security: …}` would
474
- * silently drop every other key the workspace holds. The merge reads the
475
- * workspace fresh rather than trusting the detail cache — a stale snapshot
476
- * here would resurrect settings somebody else has since removed.
476
+ * Sends ONLY the change. Since stapel-workspaces 0.37.0 `PATCH` merges
477
+ * `settings` (top-level keys, and the `security` block one level deeper): a
478
+ * key not sent is kept and a key sent as `null` is removed. So the body is
479
+ * `{settings: {security: <patch>}}` with no read before it. The old
480
+ * read-merge-write sent every stored key back, which raced a concurrent
481
+ * edit (a key somebody had just removed came back) and, under the merge,
482
+ * can no longer remove anything by leaving it out. To remove a key, send
483
+ * it as `null`.
484
+ *
485
+ * Step-up: the backend compares the RESULT, so a patch that leaves
486
+ * `security` as stored needs no step-up, and any real change needs
487
+ * `workspace.security.manage` plus the `sensitive` step-up.
477
488
  */
478
489
  export function useUpdateSecuritySettings(
479
490
  workspaceId: string
480
- ): UseMutationResult<Workspace, StapelApiError, WorkspaceSecuritySettings> {
491
+ ): UseMutationResult<Workspace, StapelApiError, WorkspaceSecurityPatch> {
481
492
  const api = useWorkspacesApi();
482
493
  const queryClient = useQueryClient();
483
494
  const options: UseMutationOptions<
484
495
  Workspace,
485
496
  StapelApiError,
486
- WorkspaceSecuritySettings
497
+ WorkspaceSecurityPatch
487
498
  > = {
488
- mutationFn: async (patch) => {
489
- const current = await api.getWorkspace(workspaceId);
490
- const settings = (current.settings ?? {}) as Record<string, unknown>;
491
- const security = (settings["security"] ?? {}) as Record<string, unknown>;
499
+ mutationFn: (patch) => {
492
500
  // `policies_configured` is derived and read-only on the wire — never
493
- // sent back, whatever a caller spread into the patch.
494
- const { policies_configured: _derived, ...writable } = {
495
- ...security,
496
- ...patch,
497
- };
501
+ // sent, whatever a caller spread into the patch.
502
+ const { policies_configured: _derived, ...writable } = patch;
498
503
  return api.updateWorkspace(workspaceId, {
499
- settings: { ...settings, security: writable },
504
+ settings: { security: writable },
500
505
  });
501
506
  },
502
507
  onSuccess: (updated) => {