@forge/manifest

13.4.0-next.3-experimental-e9e08bb13.4.0-next.3-experimental-d477002
~

Modified (7 files)

Index: package/out/validators/compatibility-validator.js
===================================================================
--- package/out/validators/compatibility-validator.js
+++ package/out/validators/compatibility-validator.js
@@ -17,9 +17,9 @@
         const modules = manifest.typedContent.modules || {};
         const compatibility = app?.compatibility || {};
         const hasCompatibilityKeys = Object.keys(compatibility).length > 0;
         const requiredContexts = Object.keys(compatibility).filter((key) => compatibility[key]?.required === true);
-        if (hasCompatibilityKeys && requiredContexts.length !== 1) {
+        if (hasCompatibilityKeys && requiredContexts.length > 1) {
             validationErrors.push({
                 message: text_1.errors.app.compatibility.oneRequiredContext(),
                 reference: text_2.References.SchemaError,
                 level: 'error',
Index: package/out/text/errors.js
===================================================================
--- package/out/text/errors.js
+++ package/out/text/errors.js
@@ -287,9 +287,9 @@
         compatibility: {
             invalidConfluenceModuleInJira: () => 'Using the module `confluence:fullPage` is invalid when the required product is Jira. Full page modules must match the required product. Use `jira:fullPage` as the module type, or change the required product to Confluence in your manifest.yml compatibility settings.',
             invalidJiraModuleInConfluence: () => 'Using the module `jira:fullPage` is invalid when the required product is Confluence. Full page modules must match the required product. Use `confluence:fullPage` as the module type, or change the required product to Jira in your manifest.yml compatibility settings.',
             invalidProduct: (product) => `Invalid product '${product}' in app.compatibility. Only 'jira' and 'confluence' are supported as compatibility products for this module.`,
-            oneRequiredContext: () => 'One context (Jira, Confluence, or Compass) must have `required:true` in app.compatibility.'
+            oneRequiredContext: () => 'Only one context (Jira, Confluence, or Compass) must have `required:true` in app.compatibility.'
         }
     },
     translations: {
         missingTranslationsJsonFile: (languageLocaleCode) => `There is no available translations JSON file for the specified fallback language: '${languageLocaleCode}'`,
File too large for inline diff
Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/manifest",
-  "version": "13.4.0-next.3-experimental-e9e08bb",
+  "version": "13.4.0-next.3-experimental-d477002",
   "description": "Definitions and validations of the Forge manifest",
   "main": "out/index.js",
   "scripts": {
     "build": "yarn run compile",
Index: package/out/scopes/shipyard-scopes.json
===================================================================
--- package/out/scopes/shipyard-scopes.json
+++ package/out/scopes/shipyard-scopes.json
@@ -68,9 +68,8 @@
     "delete:issue.property:jira",
     "delete:issue.remote-link:jira",
     "delete:notes:customer-notes",
     "delete:object:jira",
-    "delete:object:jira",
     "delete:operations-info:jira",
     "delete:ops-alert:jira-service-management",
     "delete:ops-config:jira-service-management",
     "delete:organization:jira-service-management",
@@ -225,10 +224,80 @@
     "read:folder:confluence",
     "read:forge-app:confluence",
     "read:forge-app:jira",
     "read:forge-proxy:support-api-gateway",
+    "read:graph:assets-object:atlassian",
+    "read:graph:blogpost:confluence",
+    "read:graph:board:jira",
+    "read:graph:branch:external",
+    "read:graph:build:external",
+    "read:graph:calendar-event:external",
+    "read:graph:change-proposal:focus",
+    "read:graph:comment:atlassian",
+    "read:graph:comment:confluence",
+    "read:graph:comment:external",
+    "read:graph:comment:loom",
+    "read:graph:commit:external",
+    "read:graph:component-link:compass",
+    "read:graph:component:compass",
     "read:graph:confluence",
+    "read:graph:conversation:external",
+    "read:graph:customer-contact:external",
+    "read:graph:customer-org-category:external",
+    "read:graph:customer-org:external",
+    "read:graph:dashboard:external",
+    "read:graph:data-table:external",
+    "read:graph:database:confluence",
+    "read:graph:deal:external",
+    "read:graph:deployment:external",
+    "read:graph:design:external",
+    "read:graph:document:external",
+    "read:graph:feature-flag:external",
+    "read:graph:focus-area-status-update:focus",
+    "read:graph:focus-area:focus",
+    "read:graph:folder:confluence",
+    "read:graph:goal-update:atlassian",
+    "read:graph:goal:atlassian",
+    "read:graph:issue-comment:jira",
+    "read:graph:issue-remote-link:jira",
+    "read:graph:issue-status:jira",
+    "read:graph:issue-worklog:jira",
+    "read:graph:issue:jira",
     "read:graph:jira",
+    "read:graph:meeting-recurrence:loom",
+    "read:graph:meeting:loom",
+    "read:graph:message:external",
+    "read:graph:organisation:external",
+    "read:graph:page:confluence",
+    "read:graph:position:external",
+    "read:graph:position:talent",
+    "read:graph:priority:jira",
+    "read:graph:project-update:atlassian",
+    "read:graph:project:atlassian",
+    "read:graph:project:external",
+    "read:graph:project:jira",
+    "read:graph:pull-request:external",
+    "read:graph:remote-link:external",
+    "read:graph:repository:external",
+    "read:graph:scorecard:compass",
+    "read:graph:service:external",
+    "read:graph:space:confluence",
+    "read:graph:space:external",
+    "read:graph:space:loom",
+    "read:graph:sprint:jira",
+    "read:graph:tag:atlassian",
+    "read:graph:team-type:atlassian",
+    "read:graph:team:atlassian",
+    "read:graph:team:opsgenie",
+    "read:graph:user:atlassian",
+    "read:graph:version:jira",
+    "read:graph:video:external",
+    "read:graph:video:loom",
+    "read:graph:vulnerability:external",
+    "read:graph:whiteboard:confluence",
+    "read:graph:work-item:external",
+    "read:graph:worker:external",
+    "read:graph:worker:talent",
     "read:group:confluence",
     "read:group:jira",
     "read:hierarchical-content:confluence",
     "read:incident:jira-service-management",
@@ -278,9 +347,8 @@
     "read:non-project-work:capacity-planning",
     "read:notes:customer-notes",
     "read:notification-scheme:jira",
     "read:object:jira",
-    "read:object:jira",
     "read:operations-info:jira",
     "read:ops-alert:jira-service-management",
     "read:ops-config:jira-service-management",
     "read:organization:entitlement:jira-service-management",
@@ -493,9 +561,8 @@
     "write:metric:compass",
     "write:non-project-work:capacity-planning",
     "write:notes:customer-notes",
     "write:object:jira",
-    "write:object:jira",
     "write:operations-info:jira",
     "write:ops-alert:jira-service-management",
     "write:ops-config:jira-service-management",
     "write:organization:entitlement:jira-service-management",
File too large for inline diff
File too large for inline diff