@forge/cli-shared

9.1.0-next.99.1.0-next.10
out/ui/text.js
~out/ui/text.jsModified
+5−2
Index: package/out/ui/text.js
===================================================================
--- package/out/ui/text.js
+++ package/out/ui/text.js
@@ -1599,9 +1599,11 @@
             errorMissingDepVersion: (name) => `Template dependency "${name}" is missing an explicit version. Templates must declare a version for every dependency.`,
             warnNoManifest: (manifestPath) => `No manifest.yml found at ${manifestPath}. Manifest changes were not planned.`,
             warnNoFragment: 'Template did not provide a manifest fragment; manifest changes were not planned.',
             warnNoManifestDelta: 'Manifest fragment did not introduce any changes after merge.',
-            warnAddedAppCompatibility: (existingProduct, newProduct) => `Adding a "${newProduct}" module to an app that already targets "${existingProduct}"; updated app.compatibility so the app must be installed to "${newProduct}" to see changes.`,
+            warnAddedAppCompatibility: (existingProducts, newProduct) => `Adding a "${newProduct}" module to an app that already targets ${existingProducts
+                .map((p) => `"${p}"`)
+                .join(', ')}; updated app.compatibility so the app must be installed to "${newProduct}" to see changes.`,
             warnUnsupportedFileOperations: (ops) => `Skipping ${ops.length} unsupported file operation(s): ${ops.join(', ')}. Only "create" operations are supported.`,
             warnViteConfigExists: (configPath) => `An existing vite.config.js at ${configPath} could not be merged automatically. Skipping vite config changes; re-run with --force to overwrite.`,
             errorViteConfigNestedInput: () => `Cannot safely merge vite.config.js: the existing "input" block contains a nested object. Merging would corrupt the file. Re-run with --force to regenerate the config from scratch, or edit the input map manually.`,
             errorApplyNotImplemented: 'module add apply mode is not implemented yet; re-run with --dry-run to preview changes.',
@@ -1631,9 +1633,10 @@
             errorNonInteractiveMissingUiType: (validTypes) => `This module has multiple UI frameworks. Provide -u/--ui-type with one of: ${validTypes.join(', ')}.`,
             errorNonInteractiveMissingModuleType: 'Provide -t/--module-type to add a module non-interactively when using --variables.',
             errorNonInteractiveSummary: (errors) => `Couldn't add the module in non-interactive mode. Resolve the following issues and re-run the command:\n\n${errors.join('\n\n')}`,
             errorResourceEntryConflict: (resourceKey, entryName, existing, incoming) => `Resource '${resourceKey}' already declares entry '${entryName}' as '${existing}', but the new module expects '${incoming}'. Choose a different moduleKey or remove the existing entry.`,
-            errorResourcePathConflict: (resourceKey, existing, incoming) => `Resource '${resourceKey}' already declares path '${existing}', but the new module expects '${incoming}'. Resources sharing a key must share a path.`
+            errorResourcePathConflict: (resourceKey, existing, incoming) => `Resource '${resourceKey}' already declares path '${existing}', but the new module expects '${incoming}'. Resources sharing a key must share a path.`,
+            errorManifestNotAMap: 'Cannot merge into manifest.yml: its root must be a YAML mapping.'
         },
         list: {
             description: '[Preview] list available module templates',
             empty: 'No module templates found.',