@objectstack/platform-objects 10.3.0 → 11.1.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.
@@ -116,7 +116,7 @@ var SETUP_NAV_CONTRIBUTIONS = [
116
116
  items: [
117
117
  { id: "nav_users", type: "object", label: "Users", objectName: "sys_user", icon: "user" },
118
118
  { id: "nav_business_units", type: "object", label: "Business Units", objectName: "sys_business_unit", icon: "building", requiresObject: "sys_business_unit" },
119
- { id: "nav_teams", type: "object", label: "Teams", objectName: "sys_team", icon: "users-round" },
119
+ { id: "nav_teams", type: "object", label: "Teams", objectName: "sys_team", icon: "users-round", requiresService: "org-scoping" },
120
120
  { id: "nav_organizations", type: "object", label: "Organizations", objectName: "sys_organization", icon: "building-2", requiresService: "org-scoping" },
121
121
  { id: "nav_invitations", type: "object", label: "Invitations", objectName: "sys_invitation", icon: "mail", requiresService: "org-scoping" }
122
122
  ]
@@ -144,6 +144,16 @@ var SETUP_NAV_CONTRIBUTIONS = [
144
144
  priority: BASE_PRIORITY,
145
145
  items: [
146
146
  { id: "nav_settings_hub", type: "url", label: "All Settings", url: "/apps/setup/system/settings", icon: "settings-2", requiredPermissions: ["manage_platform_settings"] },
147
+ // Workspace identity first — Localization (order 2) and Company (order 3)
148
+ // are the lowest-`order` settings manifests and the first thing a new
149
+ // company admin configures. They ship as `service-settings` manifests
150
+ // (tenant scope, read=`setup.access`) but were never pinned here, so they
151
+ // were reachable only by drilling into the "All Settings" hub. Mainstream
152
+ // admin consoles (Salesforce "Company Information", ServiceNow) surface
153
+ // both directly. No `requiredPermissions` — matches Branding (read perm is
154
+ // the app's base `setup.access`).
155
+ { id: "nav_settings_localization", type: "url", label: "Localization", url: "/apps/setup/system/settings/localization", icon: "globe" },
156
+ { id: "nav_settings_company", type: "url", label: "Company", url: "/apps/setup/system/settings/company", icon: "building-2" },
147
157
  { id: "nav_settings_branding", type: "url", label: "Branding", url: "/apps/setup/system/settings/branding", icon: "palette" },
148
158
  { id: "nav_settings_auth", type: "url", label: "Authentication", url: "/apps/setup/system/settings/auth", icon: "lock-keyhole", requiredPermissions: ["manage_platform_settings"] },
149
159
  { id: "nav_settings_mail", type: "url", label: "Email", url: "/apps/setup/system/settings/mail", icon: "mail", requiredPermissions: ["manage_platform_settings"] },
@@ -171,8 +181,12 @@ var SETUP_NAV_CONTRIBUTIONS = [
171
181
  items: [
172
182
  { id: "nav_oauth_apps", type: "object", label: "OAuth Applications", objectName: "sys_oauth_application", icon: "app-window" },
173
183
  { id: "nav_jwks", type: "object", label: "Signing Keys (JWKS)", objectName: "sys_jwks", icon: "key-round" },
174
- { id: "nav_verifications", type: "object", label: "Verifications", objectName: "sys_verification", icon: "mail-check" },
175
- { id: "nav_device_codes", type: "object", label: "Device Codes", objectName: "sys_device_code", icon: "qr-code" },
184
+ // `sys_verification` (email/phone tokens) and `sys_device_code` (OAuth
185
+ // device-grant codes) deliberately omit `list` from their `apiMethods`
186
+ // (sensitive, ephemeral secrets — not browsable), so an object/list-view
187
+ // nav entry for them can only ever render "failed to load". They're
188
+ // reachable by id (get) when needed; no browse menu. (Re-adding requires
189
+ // enabling `list` on the object — a security decision.)
176
190
  { id: "nav_accounts", type: "object", label: "Identity Links", objectName: "sys_account", icon: "link-2" },
177
191
  { id: "nav_user_preferences", type: "object", label: "User Preferences", objectName: "sys_user_preference", icon: "sliders" }
178
192
  ]
@@ -558,7 +572,13 @@ var ACCOUNT_APP = {
558
572
  objectName: "sys_member",
559
573
  viewName: "mine",
560
574
  icon: "building-2",
561
- requiresObject: "sys_member"
575
+ // Membership is a multi-org concept: in single-org mode the
576
+ // `mine` view is always empty (no sys_organization rows, no
577
+ // auto-stamped memberships). Gate on the org-scoping service so
578
+ // this entry disappears entirely — matching Organizations/
579
+ // Invitations in setup-nav. `requiresObject: 'sys_member'` was
580
+ // the wrong gate (the system object is always registered).
581
+ requiresService: "org-scoping"
562
582
  }
563
583
  ]
564
584
  },
@@ -651,6 +671,12 @@ var SystemOverviewDashboard = Dashboard.create({
651
671
  values: ["org_count"],
652
672
  title: "Organizations",
653
673
  type: "metric",
674
+ // Organizations only exist under multi-tenant org-scoping. In a
675
+ // single-tenant runtime the count is always 0 and the matching
676
+ // nav entries (nav_organizations / nav_invitations) are hidden via
677
+ // `requiresService: 'org-scoping'` — gate this KPI the same way so the
678
+ // overview doesn't dangle a metric the admin can't act on.
679
+ requiresService: "org-scoping",
654
680
  layout: { x: 3, y: 0, w: 3, h: 2 },
655
681
  colorVariant: "orange",
656
682
  description: "Total organizations on the platform"
@@ -6166,6 +6192,7 @@ var zhCN = {
6166
6192
  group_apps: { label: "\u5E94\u7528" },
6167
6193
  nav_marketplace_browse: { label: "\u6D4F\u89C8\u5E94\u7528\u5E02\u573A" },
6168
6194
  nav_marketplace_installed: { label: "\u5DF2\u5B89\u88C5\u5E94\u7528" },
6195
+ nav_cloud_connection: { label: "\u4E91\u8FDE\u63A5" },
6169
6196
  group_people_org: { label: "\u4EBA\u5458\u4E0E\u7EC4\u7EC7" },
6170
6197
  group_access_control: { label: "\u8BBF\u95EE\u63A7\u5236" },
6171
6198
  group_approvals: { label: "\u5BA1\u6279" },
@@ -6180,6 +6207,7 @@ var zhCN = {
6180
6207
  nav_organizations: { label: "\u7EC4\u7EC7" },
6181
6208
  nav_invitations: { label: "\u9080\u8BF7" },
6182
6209
  nav_roles: { label: "\u89D2\u8272" },
6210
+ nav_capabilities: { label: "\u80FD\u529B" },
6183
6211
  nav_permission_sets: { label: "\u6743\u9650\u96C6" },
6184
6212
  nav_sharing_rules: { label: "\u5171\u4EAB\u89C4\u5219" },
6185
6213
  nav_record_shares: { label: "\u8BB0\u5F55\u5171\u4EAB" },
@@ -6188,6 +6216,8 @@ var zhCN = {
6188
6216
  nav_approval_requests: { label: "\u5BA1\u6279\u7533\u8BF7" },
6189
6217
  nav_approval_actions: { label: "\u5BA1\u6279\u5386\u53F2" },
6190
6218
  nav_settings_hub: { label: "\u5168\u90E8\u8BBE\u7F6E" },
6219
+ nav_settings_localization: { label: "\u672C\u5730\u5316" },
6220
+ nav_settings_company: { label: "\u516C\u53F8\u4FE1\u606F" },
6191
6221
  nav_settings_mail: { label: "\u90AE\u4EF6" },
6192
6222
  nav_settings_branding: { label: "\u54C1\u724C" },
6193
6223
  nav_settings_auth: { label: "\u8BA4\u8BC1" },
@@ -6201,10 +6231,9 @@ var zhCN = {
6201
6231
  nav_sessions: { label: "\u4F1A\u8BDD" },
6202
6232
  nav_audit_logs: { label: "\u5BA1\u8BA1\u65E5\u5FD7" },
6203
6233
  nav_notifications: { label: "\u901A\u77E5" },
6234
+ nav_datasources: { label: "\u6570\u636E\u6E90" },
6204
6235
  nav_oauth_apps: { label: "OAuth \u5E94\u7528" },
6205
6236
  nav_jwks: { label: "\u7B7E\u540D\u5BC6\u94A5 (JWKS)" },
6206
- nav_verifications: { label: "\u9A8C\u8BC1\u8BB0\u5F55" },
6207
- nav_device_codes: { label: "\u8BBE\u5907\u4EE3\u7801" },
6208
6237
  nav_accounts: { label: "\u8EAB\u4EFD\u94FE\u63A5" },
6209
6238
  nav_user_preferences: { label: "\u7528\u6237\u504F\u597D" },
6210
6239
  nav_metadata: { label: "\u5168\u90E8\u5143\u6570\u636E" }